Skip to content

Regression in lazy symbol completion or bug in nested classfile parser #23576

@WojciechMazur

Description

@WojciechMazur

Based on failure in OpenCB project - cchantep/acolyte - builds logs

Some of the recent changes affected completion of symbols, this change has lead to failures when reading valid Bytecode in some very specific use cases.

Compiler version

3.7.3-RC1-bin-20250717-fb66af2-NIGHTLY
Bisect points to e8e5210 / #23403

Minimized code

Not yet minimized

Reproduction steps:

  1. Clone project using latest tag: git clone https://github.com/cchantep/acolyte -b 1.2.9 repo
  2. cd repo
  3. Set scalaVersion to 3.7.3-RC1-bin-20250717-fb66af2-NIGHTLY
  4. sbt jdbc-scala/Test/compile

All of test sources in this module can be replaced with a single file to trigger the exception
Despite usage of //> using dep directives I was not able to reproduce it using scala-cli

//> using dep "org.specs2::specs2-core:4.21.0"
//> using dep "org.eu.acolyte:jdbc-driver:1.2.10" // submodule with Java code 
//> using dep "org.eu.acolyte::jdbc-scala:1.2.10" // submode with Scala specific code

package acolyte.jdbc

object ExecutionSpec extends org.specs2.mutable.Specification {
  val Executed: ExecutedStatement = ???
  val q1: QueryExecution = ??? 
  q1.must(not(beLike { case Executed(_) => ok }))
}

The issue is present only when using org.specs2::specs2-core:4.x.y, it's not present when using the next major releases in spec2 5.x.
All of the RowListX$Impl classes are generated as nested classes using source generator in jdbc-driver project.
What's important here is fact that classes that we fail to read are referenced directly, instead their completion is triggered lazily during pattern match.

Output

java.io.IOException:   class file /Users/wmazur/projects/scala/community-build3/repo/jdbc-driver/target/classes/acolyte/jdbc/RowList46$Impl$1.class is broken (version 65.0),
  please check the JDK compatibility of your Scala version (3.7.3-RC1-bin-20250718-42fdd76-NIGHTLY),
  reading aborted with class java.util.NoSuchElementException:
  key not found: A

Output and stacktrace with -Ydebug

java.util.NoSuchElementException: key not found: A
  | => jat scala.collection.immutable.Map$EmptyMap$.apply(Map.scala:243)
        at scala.collection.immutable.Map$EmptyMap$.apply(Map.scala:239)
        at dotty.tools.dotc.core.classfile.ClassfileParser.sig2type$1(ClassfileParser.scala:687)
        at dotty.tools.dotc.core.classfile.ClassfileParser.processTypeArgs$1(ClassfileParser.scala:615)
        at dotty.tools.dotc.core.classfile.ClassfileParser.sig2type$1(ClassfileParser.scala:630)
        at dotty.tools.dotc.core.classfile.ClassfileParser.dotty$tools$dotc$core$classfile$ClassfileParser$$sigToType(ClassfileParser.scala:754)
        at dotty.tools.dotc.core.classfile.ClassfileParser$AttributeCompleter.complete(ClassfileParser.scala:897)
        at dotty.tools.dotc.core.classfile.ClassfileParser.parseClass(ClassfileParser.scala:413)
        at dotty.tools.dotc.core.classfile.ClassfileParser.$anonfun$1(ClassfileParser.scala:302)
        at dotty.tools.dotc.core.classfile.ClassfileParser.run(ClassfileParser.scala:297)
        at dotty.tools.dotc.core.ClassfileLoader.doComplete(SymbolLoaders.scala:471)
        at dotty.tools.dotc.core.SymbolLoader.complete(SymbolLoaders.scala:402)
        at dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:175)
        at dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:190)
        at dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:192)
        at dotty.tools.dotc.transform.FirstTransform.transformSym(FirstTransform.scala:56)
        at dotty.tools.dotc.core.DenotTransformers$SymTransformer.transform(DenotTransformers.scala:72)
        at dotty.tools.dotc.core.DenotTransformers$SymTransformer.transform$(DenotTransformers.scala:67)
        at dotty.tools.dotc.transform.FirstTransform.transform(FirstTransform.scala:45)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:835)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Symbols$Symbol.recomputeDenot(Symbols.scala:124)
        at dotty.tools.dotc.core.Symbols$Symbol.computeDenot(Symbols.scala:118)
        at dotty.tools.dotc.core.Symbols$Symbol.denot(Symbols.scala:109)
        at dotty.tools.dotc.core.Symbols$Symbol.name(Symbols.scala:277)
        at dotty.tools.dotc.core.SymDenotations$ClassDenotation.computeMemberNames$$anonfun$2(SymDenotations.scala:2408)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:619)
        at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:617)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1306)
        at dotty.tools.dotc.core.SymDenotations$ClassDenotation.computeMemberNames(SymDenotations.scala:2408)
        at dotty.tools.dotc.core.SymDenotations$ClassDenotation.memberNames(SymDenotations.scala:2387)
        at dotty.tools.dotc.core.SymDenotations$PackageClassDenotation.memberNames(SymDenotations.scala:2628)
        at dotty.tools.dotc.core.Types$Type.memberNames(Types.scala:1031)
        at dotty.tools.dotc.core.Types$Type.memberDenots(Types.scala:1048)
        at dotty.tools.dotc.core.Types$Type.fields(Types.scala:1130)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.containsUninhabitedField$1(Space.scala:688)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.inhabited$1(Space.scala:697)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.$anonfun$14(Space.scala:699)
        at scala.collection.immutable.List.map(List.scala:247)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.rec$1(Space.scala:683)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.decompose(Space.scala:706)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.computeSimplify(Space.scala:126)
        at dotty.tools.dotc.transform.patmat.Space.simplify(Space.scala:70)
        at dotty.tools.dotc.transform.patmat.Space.simplify$(Space.scala:52)
        at dotty.tools.dotc.transform.patmat.Prod.simplify(Space.scala:109)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.simplify(Space.scala:115)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.$anonfun$3(Space.scala:129)
        at scala.collection.immutable.List.map(List.scala:247)
        at scala.collection.immutable.List.map(List.scala:79)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.computeSimplify(Space.scala:129)
        at dotty.tools.dotc.transform.patmat.Space.simplify(Space.scala:70)
        at dotty.tools.dotc.transform.patmat.Space.simplify$(Space.scala:52)
        at dotty.tools.dotc.transform.patmat.Or.simplify(Space.scala:112)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.simplify(Space.scala:115)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.recur$1(Space.scala:930)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.checkReachability(Space.scala:958)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.checkMatch(Space.scala:963)
        at dotty.tools.dotc.transform.PatternMatcher.transformMatch(PatternMatcher.scala:50)
        at dotty.tools.dotc.transform.MegaPhase.goMatch(MegaPhase.scala:816)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:383)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
        at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
        at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
        at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
        at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$3(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:296)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$3(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:296)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$3(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:296)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
        at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.mapPackage$1(MegaPhase.scala:396)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:399)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:481)
        at dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:493)
        at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:383)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.immutable.List.foreach(List.scala:334)
        at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:376)
        at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:368)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1324)
        at dotty.tools.dotc.Run.runPhases$1(Run.scala:361)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:408)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:408)
        at scala.Function0.apply$mcV$sp(Function0.scala:42)
        at dotty.tools.dotc.Run.showProgress(Run.scala:470)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:408)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:420)
        at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:420)
        at dotty.tools.dotc.Run.compileSources(Run.scala:307)
        at dotty.tools.dotc.Run.compile(Run.scala:292)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
        at dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
        at dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
        at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
        at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
        at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
        at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
        at sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:180)
        at sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:178)
        at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:464)
        at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
        at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
        at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
        at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
        at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:419)
        at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
        at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:406)
        at sbt.internal.inc.Incremental$.apply(Incremental.scala:172)
        at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
        at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
        at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
        at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
        at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2369)
        at sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2319)
        at sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:31)
        at sbt.internal.io.Retry$.apply(Retry.scala:47)
        at sbt.internal.io.Retry$.apply(Retry.scala:29)
        at sbt.internal.io.Retry$.apply(Retry.scala:24)
        at sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
        at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2317)
        at scala.Function1.$anonfun$compose$1(Function1.scala:49)
        at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
        at sbt.std.Transform$$anon$4.work(Transform.scala:69)
        at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
        at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
        at sbt.Execute.work(Execute.scala:292)
        at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
        at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1583)
java.io.IOException:   class file /Users/wmazur/projects/scala/community-build3/repo/jdbc-driver/target/classes/acolyte/jdbc/RowList47$Impl$1.class is broken (version 65.0),
  please check the JDK compatibility of your Scala version (3.7.3-RC1-bin-20250718-42fdd76-NIGHTLY),
  reading aborted with class java.util.NoSuchElementException:
  key not found: A
        at dotty.tools.dotc.core.classfile.ClassfileParser.run(ClassfileParser.scala:313)
        at dotty.tools.dotc.core.ClassfileLoader.doComplete(SymbolLoaders.scala:471)
        at dotty.tools.dotc.core.SymbolLoader.complete(SymbolLoaders.scala:402)
        at dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:175)
        at dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:190)
        at dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:192)
        at dotty.tools.dotc.transform.FirstTransform.transformSym(FirstTransform.scala:56)
        at dotty.tools.dotc.core.DenotTransformers$SymTransformer.transform(DenotTransformers.scala:72)
        at dotty.tools.dotc.core.DenotTransformers$SymTransformer.transform$(DenotTransformers.scala:67)
        at dotty.tools.dotc.transform.FirstTransform.transform(FirstTransform.scala:45)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:835)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:852)
        at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:881)
        at dotty.tools.dotc.core.Symbols$Symbol.recomputeDenot(Symbols.scala:124)
        at dotty.tools.dotc.core.Symbols$Symbol.computeDenot(Symbols.scala:118)
        at dotty.tools.dotc.core.Symbols$Symbol.denot(Symbols.scala:109)
        at dotty.tools.dotc.core.Symbols$Symbol.name(Symbols.scala:277)
        at dotty.tools.dotc.core.SymDenotations$ClassDenotation.computeMemberNames$$anonfun$2(SymDenotations.scala:2408)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:619)
        at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:617)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1306)
        at dotty.tools.dotc.core.SymDenotations$ClassDenotation.computeMemberNames(SymDenotations.scala:2408)
        at dotty.tools.dotc.core.SymDenotations$ClassDenotation.memberNames(SymDenotations.scala:2387)
        at dotty.tools.dotc.core.SymDenotations$PackageClassDenotation.memberNames(SymDenotations.scala:2628)
        at dotty.tools.dotc.core.Types$Type.memberNames(Types.scala:1031)
        at dotty.tools.dotc.core.Types$Type.memberDenots(Types.scala:1048)
        at dotty.tools.dotc.core.Types$Type.fields(Types.scala:1130)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.containsUninhabitedField$1(Space.scala:688)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.inhabited$1(Space.scala:697)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.$anonfun$14(Space.scala:699)
        at scala.collection.immutable.List.map(List.scala:247)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.rec$1(Space.scala:683)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.decompose(Space.scala:706)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.computeSimplify(Space.scala:126)
        at dotty.tools.dotc.transform.patmat.Space.simplify(Space.scala:70)
        at dotty.tools.dotc.transform.patmat.Space.simplify$(Space.scala:52)
        at dotty.tools.dotc.transform.patmat.Prod.simplify(Space.scala:109)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.simplify(Space.scala:115)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.$anonfun$3(Space.scala:129)
        at scala.collection.immutable.List.map(List.scala:247)
        at scala.collection.immutable.List.map(List.scala:79)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.computeSimplify(Space.scala:129)
        at dotty.tools.dotc.transform.patmat.Space.simplify(Space.scala:70)
        at dotty.tools.dotc.transform.patmat.Space.simplify$(Space.scala:52)
        at dotty.tools.dotc.transform.patmat.Or.simplify(Space.scala:112)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.simplify(Space.scala:115)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.recur$1(Space.scala:930)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.checkReachability(Space.scala:958)
        at dotty.tools.dotc.transform.patmat.SpaceEngine$.checkMatch(Space.scala:963)
        at dotty.tools.dotc.transform.PatternMatcher.transformMatch(PatternMatcher.scala:50)
        at dotty.tools.dotc.transform.MegaPhase.goMatch(MegaPhase.scala:816)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:383)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
        at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
        at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
        at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
        at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$3(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:296)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$3(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:296)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$3(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:486)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:296)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
        at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
        at dotty.tools.dotc.transform.MegaPhase.mapPackage$1(MegaPhase.scala:396)
        at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:399)
        at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
        at dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:481)
        at dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:493)
        at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:383)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.immutable.List.foreach(List.scala:334)
        at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:376)
        at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:368)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
        at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
        at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1324)
        at dotty.tools.dotc.Run.runPhases$1(Run.scala:361)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:408)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:408)
        at scala.Function0.apply$mcV$sp(Function0.scala:42)
        at dotty.tools.dotc.Run.showProgress(Run.scala:470)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:408)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:420)
        at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:420)
        at dotty.tools.dotc.Run.compileSources(Run.scala:307)
        at dotty.tools.dotc.Run.compile(Run.scala:292)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
        at dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
        at dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
        at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
        at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
        at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
        at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
        at sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:180)
        at sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:178)
        at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:464)
        at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
        at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
        at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
        at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
        at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:419)
        at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
        at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:406)
        at sbt.internal.inc.Incremental$.apply(Incremental.scala:172)
        at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
        at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
        at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
        at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
        at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2369)
        at sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2319)
        at sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:31)
        at sbt.internal.io.Retry$.apply(Retry.scala:47)
        at sbt.internal.io.Retry$.apply(Retry.scala:29)
        at sbt.internal.io.Retry$.apply(Retry.scala:24)
        at sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
        at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2317)
        at scala.Function1.$anonfun$compose$1(Function1.scala:49)
        at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
        at sbt.std.Transform$$anon$4.work(Transform.scala:69)
        at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
        at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
        at sbt.Execute.work(Execute.scala:292)
        at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
        at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1583)
[error] error while loading RowList47$Impl$1,
[error]   class file /Users/wmazur/projects/scala/community-build3/repo/jdbc-driver/target/classes/acolyte/jdbc/RowList47$Impl$1.class is broken (version 65.0),
[error]   please check the JDK compatibility of your Scala version (3.7.3-RC1-bin-20250718-42fdd76-NIGHTLY),
[error]   reading aborted with class java.util.NoSuchElementException:
[error]   key not found: A

When uncommenting the assertion: //assert(tparams contains n, s"classTparams = $classTParams, tparams = $tparams, key = $n") both classTParams and tparams are empty maps, which suggests that enclosing class type parameters were not loaded yet.

Expectation

Metadata

Metadata

Assignees

No one assigned

    Labels

    itype:bugregressionThis worked in a previous version but doesn't anymorestat:needs minimizationNeeds a self contained minimizationstat:needs triageEvery issue needs to have an "area" and "itype" label

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions