-
Notifications
You must be signed in to change notification settings - Fork 21
Open
Labels
Milestone
Description
Reproduction steps
This bug is a bit difficult to describe because I'm not sure what exactly causes it. I've done my best to write a minimum reproducability case, though. The gist is that when a specific class within a Scala 2 target extends a specific abstract class
within another Scala 2 target, which in turn extends another abstract class
within a Scala 3 target, the compiler throws an exception.
Scala 2 version: 2.13.16
Scala 3 version: 3.6.3
-
Clone this minimum reproducability case:
https://github.com/jadenPete/scala-cross-dependency-crash-bug-reproduction -
Run
sbt compile
-
Observe the following compilation error:
[error] java.lang.AssertionError: assertion failed:
[error] List(value getValue, value getValue)
[error] while compiling: <REDACTED>/foo/src/main/scala/Foo.scala
[error] during phase: globalPhase=refchecks, enteringPhase=pickler
[error] library version: version 2.13.16
[error] compiler version: version 2.13.16
[error] reconstructed args: -classpath <REDACTED>/foo/target/scala-2.13/classes:<REDACTED>/bar/target/scala-2.13/classes:<REDACTED>/bizz/target/scala-3.6.3/classes:/home/jpeterson/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.jar:/home/jpeterson/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.6.3/scala3-library_3-3.6.3.jar -Ytasty-reader
[error]
[error] last tree to typer: Literal(Constant(Foo.type))
[error] tree position: line 3 of <REDACTED>/foo/src/main/scala/Foo.scala
[error] tree tpe: Class[Foo.type](classOf[Foo$])
[error] symbol: null
[error] call site: object Foo in package <empty>
[error]
[error] == Source file context for tree position ==
[error]
[error] 1 case class Foo(value: Int)
[error] 2
[error] 3 object Foo extends Bar[Foo](_.value)
[error] 4
[error] scala.reflect.internal.SymbolTable.throwAssertionError(SymbolTable.scala:173)
[error] scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:2066)
[error] scala.reflect.internal.pickling.UnPickler$Scan$LazyTypeRefAndAlias.$anonfun$completeInternal$4(UnPickler.scala:754)
[error] scala.reflect.internal.SymbolTable.slowButSafeEnteringPhase(SymbolTable.scala:292)
[error] scala.reflect.internal.pickling.UnPickler$Scan$LazyTypeRefAndAlias.completeInternal(UnPickler.scala:753)
[error] scala.reflect.internal.pickling.UnPickler$Scan$LazyTypeRef.complete(UnPickler.scala:738)
[error] scala.reflect.internal.Symbols$Symbol.completeInfo(Symbols.scala:1583)
[error] scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1548)
[error] scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1747)
[error] scala.reflect.internal.SymbolPairs$Cursor.fillDecls$1(SymbolPairs.scala:159)
[error] scala.reflect.internal.SymbolPairs$Cursor.fillDecls$1(SymbolPairs.scala:156)
[error] scala.reflect.internal.SymbolPairs$Cursor.fillDecls$1(SymbolPairs.scala:156)
[error] scala.reflect.internal.SymbolPairs$Cursor.init(SymbolPairs.scala:167)
[error] scala.reflect.internal.SymbolPairs$Cursor.<init>(SymbolPairs.scala:128)
[error] scala.tools.nsc.transform.OverridingPairs$Cursor.<init>(OverridingPairs.scala:35)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.checkAllOverrides(RefChecks.scala:580)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1987)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:83)
[error] scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2598)
[error] scala.reflect.internal.Trees$ModuleDef.$anonfun$transform$3(Trees.scala:398)
[error] scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
[error] scala.reflect.internal.Trees$ModuleDef.transform(Trees.scala:397)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:2176)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStat(RefChecks.scala:1301)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStats(RefChecks.scala:1270)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStats(RefChecks.scala:83)
[error] scala.reflect.internal.Trees$PackageDef.$anonfun$transform$1(Trees.scala:344)
[error] scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2636)
[error] scala.reflect.internal.Trees$PackageDef.transform(Trees.scala:344)
[error] scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:2176)
[error] scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:182)
[error] scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:32)
[error] scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:483)
[error] scala.tools.nsc.Global$GlobalPhase.run(Global.scala:430)
[error] scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1564)
[error] scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
[error] scala.tools.nsc.Global$Run.compileSources(Global.scala:1540)
[error] scala.tools.nsc.Global$Run.compileFiles(Global.scala:1653)
[error] scala.tools.xsbt.CachedCompiler0.run(CompilerBridge.scala:176)
[error] scala.tools.xsbt.CachedCompiler0.run(CompilerBridge.scala:139)
[error] scala.tools.xsbt.CompilerBridge.run(CompilerBridge.scala:43)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:196)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:252)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:186)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:166)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:241)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:166)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:214)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:542)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:542)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$3(Incremental.scala:182)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$3$adapted(Incremental.scala:180)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:458)
[error] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:264)
[error] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:413)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:500)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:400)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:208)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:542)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:496)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:433)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2491)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2441)
[error] sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:41)
[error] sbt.internal.io.Retry$.sbt$internal$io$Retry$$impl(Retry.scala:114)
[error] sbt.internal.io.Retry$.io(Retry.scala:102)
[error] sbt.internal.io.Retry$.io(Retry.scala:78)
[error] sbt.internal.io.Retry$.io(Retry.scala:67)
[error] sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:41)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2439)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error] sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error] sbt.Execute.work(Execute.scala:292)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[error] java.base/java.lang.Thread.run(Thread.java:1583)
Problem
I'd expect this to compile.