scala / scala3

The Scala 3 compiler, also known as Dotty.
https://dotty.epfl.ch
Apache License 2.0
5.89k stars 1.06k forks source link

`CompilationUnit.SuspendException` during `CodeGen` #21983

Open mrdziuban opened 6 days ago

mrdziuban commented 6 days ago

Compiler version

Reproduced on 3.4.3, 3.5.2, and the latest nightly 3.6.3-RC1-bin-20241119-cc4a324-NIGHTLY

Minimized code

https://github.com/mrdziuban/scala3-suspend-exception

The README there describes the 4 files involved, they're all pretty minimal. The most complex, and I think the one most likely related to the issue, is VisitorMacros.scala.

Output (click arrow to expand)

```scala dotty.tools.dotc.CompilationUnit$SuspendException Error while emitting /Users/matt/scala3-suspend-exception/src/main/scala/example/UsesTest.scala null ``` I patched the compiler to remove `NoStackTrace` from `SuspendException` and got this: ``` dotty.tools.dotc.CompilationUnit$SuspendException at dotty.tools.dotc.CompilationUnit.suspend(CompilationUnit.scala:110) at dotty.tools.dotc.typer.Namer$SuspendCompleter.complete(Namer.scala:1746) at dotty.tools.dotc.typer.Namer$Completer.complete(Namer.scala:865) 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.core.SymDenotations$SymDenotation.ensureCompleted(SymDenotations.scala:393) at dotty.tools.dotc.core.SymDenotations$SymDenotation.flags(SymDenotations.scala:66) at dotty.tools.dotc.core.SymDenotations$SymDenotation.isOneOf(SymDenotations.scala:116) at dotty.tools.dotc.core.SymDenotations$SymDenotation.isEffectivelyErased(SymDenotations.scala:1033) at dotty.tools.dotc.transform.PruneErasedDefs.transformSym(PruneErasedDefs.scala:39) 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.PruneErasedDefs.transform(PruneErasedDefs.scala:26) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:838) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) 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.Scopes$MutableScope.unlink(Scopes.scala:348) at dotty.tools.dotc.core.Scopes$Scope.drop$1(Scopes.scala:174) at dotty.tools.dotc.core.Scopes$Scope.filteredScope$$anonfun$1(Scopes.scala:181) 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:1303) at dotty.tools.dotc.core.Scopes$Scope.filteredScope(Scopes.scala:171) at dotty.tools.dotc.core.TypeErasure.dotty$tools$dotc$core$TypeErasure$$apply(TypeErasure.scala:739) at dotty.tools.dotc.core.TypeErasure.eraseInfo(TypeErasure.scala:825) at dotty.tools.dotc.core.TypeErasure$.transformInfo(TypeErasure.scala:277) at dotty.tools.dotc.transform.Erasure.transform(Erasure.scala:99) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:838) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) at dotty.tools.dotc.core.Denotations$SingleDenotation.goForward$1(Denotations.scala:855) at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:884) 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$.toDenot(Symbols.scala:544) at dotty.tools.backend.jvm.BTypesFromSymbols.definedClasses$$anonfun$1(BTypesFromSymbols.scala:197) at dotty.tools.dotc.core.Scopes$Scope.filter(Scopes.scala:103) at dotty.tools.backend.jvm.BTypesFromSymbols.definedClasses(BTypesFromSymbols.scala:197) at dotty.tools.backend.jvm.BTypesFromSymbols.getMemberClasses(BTypesFromSymbols.scala:192) at dotty.tools.backend.jvm.BTypesFromSymbols.setClassInfo(BTypesFromSymbols.scala:152) at dotty.tools.backend.jvm.BTypesFromSymbols.classBTypeFromSymbol$$anonfun$1(BTypesFromSymbols.scala:65) at scala.collection.mutable.HashMap.getOrElse(HashMap.scala:451) at dotty.tools.backend.jvm.BTypesFromSymbols.classBTypeFromSymbol(BTypesFromSymbols.scala:66) at dotty.tools.backend.jvm.BTypesFromSymbols.$anonfun$4(BTypesFromSymbols.scala:124) at scala.collection.immutable.List.map(List.scala:247) at dotty.tools.backend.jvm.BTypesFromSymbols.setClassInfo(BTypesFromSymbols.scala:124) at dotty.tools.backend.jvm.BTypesFromSymbols.classBTypeFromSymbol$$anonfun$1(BTypesFromSymbols.scala:65) at scala.collection.mutable.HashMap.getOrElse(HashMap.scala:451) at dotty.tools.backend.jvm.BTypesFromSymbols.classBTypeFromSymbol(BTypesFromSymbols.scala:66) at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBType(BCodeHelpers.scala:178) at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBType$(BCodeHelpers.scala:130) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.getClassBType(BCodeSkelBuilder.scala:134) at dotty.tools.backend.jvm.BCodeHelpers.primitiveOrClassToBType$1$$anonfun$1(BCodeHelpers.scala:718) at scala.collection.immutable.HashMap.getOrElse(HashMap.scala:722) at dotty.tools.backend.jvm.BCodeHelpers.primitiveOrClassToBType$1(BCodeHelpers.scala:718) at dotty.tools.backend.jvm.BCodeHelpers.dotty$tools$backend$jvm$BCodeHelpers$$typeToTypeKind(BCodeHelpers.scala:737) at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.toTypeKind(BCodeHelpers.scala:202) at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.toTypeKind$(BCodeHelpers.scala:130) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.toTypeKind(BCodeSkelBuilder.scala:134) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.symInfoTK(BCodeSkelBuilder.scala:163) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder$locals$.makeLocal(BCodeSkelBuilder.scala:542) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder$locals$.getOrMakeLocal$$anonfun$1(BCodeSkelBuilder.scala:547) at scala.collection.mutable.AnyRefMap.getOrElse(AnyRefMap.scala:157) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder$locals$.getOrMakeLocal(BCodeSkelBuilder.scala:547) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadTo(BCodeBodyBuilder.scala:317) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:303) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genStat(BCodeBodyBuilder.scala:117) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlockTo$$anonfun$1(BCodeBodyBuilder.scala:1093) 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.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlockTo(BCodeBodyBuilder.scala:1093) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadTo(BCodeBodyBuilder.scala:457) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:303) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLabeledTo(BCodeBodyBuilder.scala:606) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadTo(BCodeBodyBuilder.scala:333) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:303) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genStat(BCodeBodyBuilder.scala:117) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlockTo$$anonfun$1(BCodeBodyBuilder.scala:1093) 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.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlockTo(BCodeBodyBuilder.scala:1093) at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadTo(BCodeBodyBuilder.scala:457) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.emitNormalMethodBody$1(BCodeSkelBuilder.scala:899) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genDefDef(BCodeSkelBuilder.scala:922) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:699) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen$$anonfun$1(BCodeSkelBuilder.scala:705) 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.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:705) at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genPlainClass(BCodeSkelBuilder.scala:293) at dotty.tools.backend.jvm.CodeGen.genClass(CodeGen.scala:160) at dotty.tools.backend.jvm.CodeGen.genClassDef$1(CodeGen.scala:62) at dotty.tools.backend.jvm.CodeGen.genClassDefs$1(CodeGen.scala:117) at dotty.tools.backend.jvm.CodeGen.genClassDefs$1$$anonfun$1(CodeGen.scala:115) 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.backend.jvm.CodeGen.genClassDefs$1(CodeGen.scala:115) at dotty.tools.backend.jvm.CodeGen.genUnit(CodeGen.scala:120) at dotty.tools.backend.jvm.GenBCode.run(GenBCode.scala:90) at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:380) 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:373) at dotty.tools.backend.jvm.GenBCode.runOn(GenBCode.scala:98) at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:343) 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:1323) at dotty.tools.dotc.Run.runPhases$1(Run.scala:336) at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:383) at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:395) at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69) at dotty.tools.dotc.Run.compileUnits(Run.scala:395) at dotty.tools.dotc.Run.compileSources(Run.scala:282) at dotty.tools.dotc.Run.compile(Run.scala:267) 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:196) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:251) at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:186) at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:166) at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:241) at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:166) at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:214) 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$3(Incremental.scala:178) at sbt.internal.inc.Incremental$.$anonfun$apply$3$adapted(Incremental.scala:176) at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:454) at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:117) 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:265) at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:409) at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:496) at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:396) at sbt.internal.inc.Incremental$.apply(Incremental.scala:170) 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:2427) at sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2377) at sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:41) 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:41) at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2375) 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) ```
mrdziuban commented 6 days ago

Seems somewhat related to #18517

jchyb commented 3 days ago

Further minimized: VisitorMacros.scala:

package example

import scala.quoted.*

private def mkVisitorTypeImpl[T: Type](using q: Quotes): Expr[VisitorType[T]] =
  '{new VisitorType[T]{}}

transparent inline def mkVisitorType[T]: VisitorType[T] = ${ mkVisitorTypeImpl[T] }

trait VisitorType[T] {
  type Out[A]
}

UsesTest.scala:

package example

val _ = Test.Foo

Test.scala

package example

sealed trait Test

object Test {
  case object Foo extends Test

  val visitorType = mkVisitorType[Test]

  trait Visitor[A] {
    type V[a] = visitorType.Out[a]
  }
}