Skip to content

MatchError in EvictionWarning when using withDottyCompat #6210

@smarter

Description

@smarter

Reproduction

lazy val root = (project in file(".")).
  settings(
    name := "sbt-hello",
    version := "1.0",
    scalaVersion := "3.0.0-M3",
    libraryDependencies ++= Seq(
      ("org.http4s" %% "http4s-core" % "0.21.14").withDottyCompat(scalaVersion.value),
      ("org.http4s" %% "http4s-dsl" % "0.21.14").withDottyCompat(scalaVersion.value)
    )
  )
addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.5.0")

Full project at: https://github.com/smarter/sbt-hello/tree/matcherror

% git clone https://github.com/smarter/sbt-hello -b matcherror && cd sbt-hello && sbt
[sbt-hello@matcherror]> update
[error] stack trace is suppressed; run last update for the full output
[error] (update) scala.MatchError: (org.scodec:scodec-bits_2.13:1.1.21 (),Some(org.scodec:scodec-bits_2.13:1.1.22:default ()),Some(ScalaModuleInfo(3.0.0-M3, 3.0.0-M3, Vector(), false, false, false, org.scala-lang, Vector(scala-library, scala-compiler, scala-reflect, scala-actors, scalap)))) (of class scala.Tuple3)
[error] Total time: 1 s, completed 17 déc. 2020 14:48:24
[sbt-hello@matcherror]> last update
[debug] not up to date. inChanged = true, force = true
[debug] Updating ...
[debug] Done updating
[error] scala.MatchError: (org.scodec:scodec-bits_2.13:1.1.21 (),Some(org.scodec:scodec-bits_2.13:1.1.22:default ()),Some(ScalaModuleInfo(3.0.0-M3, 3.0.0-M3, Vector(), false, false, false, org.scala-lang, Vector(scala-library, scala-compiler, scala-reflect, scala-actors, scalap)))) (of class scala.Tuple3)
[error]         at scala.PartialFunction$$anon$1.apply(PartialFunction.scala:259)
[error]         at scala.PartialFunction$$anon$1.apply(PartialFunction.scala:257)
[error]         at sbt.librarymanagement.EvictionWarningOptions$$anonfun$guessSecondSegment$lzycompute$1.applyOrElse(EvictionWarning.scala:102)
[error]         at sbt.librarymanagement.EvictionWarningOptions$$anonfun$guessSecondSegment$lzycompute$1.applyOrElse(EvictionWarning.scala:102)
[error]         at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
[error]         at sbt.librarymanagement.EvictionWarning$.$anonfun$processEvictions$5(EvictionWarning.scala:323)
[error]         at sbt.librarymanagement.EvictionWarning$.$anonfun$processEvictions$5$adapted(EvictionWarning.scala:304)
[error]         at scala.collection.Iterator.forall(Iterator.scala:955)
[error]         at scala.collection.Iterator.forall$(Iterator.scala:953)
[error]         at scala.collection.AbstractIterator.forall(Iterator.scala:1431)
[error]         at scala.collection.IterableLike.forall(IterableLike.scala:77)
[error]         at scala.collection.IterableLike.forall$(IterableLike.scala:76)
[error]         at scala.collection.AbstractIterable.forall(Iterable.scala:56)
[error]         at sbt.librarymanagement.EvictionWarning$.guessCompatible$1(EvictionWarning.scala:304)
[error]         at sbt.librarymanagement.EvictionWarning$.$anonfun$processEvictions$8(EvictionWarning.scala:345)
[error]         at sbt.librarymanagement.EvictionWarning$.$anonfun$processEvictions$8$adapted(EvictionWarning.scala:325)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:943)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:943)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:74)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
[error]         at sbt.librarymanagement.EvictionWarning$.processEvictions(EvictionWarning.scala:325)
[error]         at sbt.librarymanagement.EvictionWarning$.apply(EvictionWarning.scala:240)
[error]         at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:64)
[error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:103)
[error]         at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:73)
[error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$20(LibraryManagement.scala:116)
[error]         at scala.util.control.Exception$Catch.apply(Exception.scala:228)
[error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:116)
[error]         at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:97)
[error]         at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219)
[error]         at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:130)
[error]         at sbt.Classpaths$.$anonfun$updateTask0$5(Defaults.scala:3485)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error]         at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error]         at sbt.Execute.work(Execute.scala:291)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:748)
[error] (update) scala.MatchError: (org.scodec:scodec-bits_2.13:1.1.21 (),Some(org.scodec:scodec-bits_2.13:1.1.22:default ()),Some(ScalaModuleInfo(3.0.0-M3, 3.0.0-M3, Vector(), false, false, false, org.scala-lang, Vector(scala-library, scala-compiler, scala-reflect, scala-actors, scalap)))) (of class scala.Tuple3)

Workaround

evictionWarningOptions := EvictionWarningOptions.empty

Expectation

Even if something is wrong with what sbt-dotty is doing (and if it is, I have no idea what it is), sbt shouldn't crash with a MatchError here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions