Skip to content

dotc crash caused by: cannot take signature of type alias #8405

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ohze opened this issue Feb 29, 2020 · 1 comment · Fixed by #8414
Closed

dotc crash caused by: cannot take signature of type alias #8405

ohze opened this issue Feb 29, 2020 · 1 comment · Fixed by #8414

Comments

@ohze
Copy link

ohze commented Feb 29, 2020

minimized code

class ActorRef
trait ActorEventBus {
  type Subscriber = ActorRef
}
trait ManagedActorClassification { this: ActorEventBus =>
  def unsubscribe(subscriber: Subscriber): Unit = ???
}
class ActorClassificationUnsubscriber(bus: ManagedActorClassification) {
  val actor = ???
  bus.unsubscribe(actor)
}

Compilation output

  • scala 2.13.1: success
  • dotty 0.22.0-RC1:
```scala [info] cannot take signature of (subscriber: ActorClassificationUnsubscriber.this.bus.Subscriber): Unit [info] exception occurred while compiling /dotty-example/src/main/scala/Main.scala NoExplanation(cannot resolve reference to type [cannot display due to assertion failed: denotation module class invalid in run 1. ValidFor: Period(1..11, run = 2), raw string = TermRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class )),class ActorClassificationUnsubscriber)),val bus)].Subscriber the classfile defining the type might be missing from the classpath) while compiling /dotty-example/src/main/scala/Main.scala [error] ## Exception when compiling 1 sources to /dotty-example/target/scala-0.22/classes [error] dotty.tools.dotc.core.MissingType: [error] dotty.tools.dotc.core.TypeErasure.dotty$tools$dotc$core$TypeErasure$$sigName(TypeErasure.scala:587) [error] dotty.tools.dotc.core.TypeErasure$.sigName(TypeErasure.scala:159) [error] dotty.tools.dotc.core.Signature.$anonfun$2(Signature.scala:114) [error] scala.collection.immutable.List.map(List.scala:219) [error] dotty.tools.dotc.core.Signature.prependTermParams(Signature.scala:114) [error] dotty.tools.dotc.core.Types$MethodType.computeSignature(Types.scala:3295) [error] dotty.tools.dotc.core.Types$SignatureCachingType.signature(Types.scala:3003) [error] dotty.tools.dotc.core.Types$MethodOrPoly.signature(Types.scala:3136) [error] dotty.tools.dotc.core.Denotations$SingleDenotation.signature(Denotations.scala:739) [error] dotty.tools.dotc.core.Types$NamedType.computeSignature(Types.scala:1877) [error] dotty.tools.dotc.core.Types$SignatureCachingType.signature(Types.scala:3003) [error] dotty.tools.dotc.core.Types$NamedType.signature(Types.scala:1834) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:383) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$2(TreePickler.scala:395) [error] dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) [error] dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:47) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:397) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:343) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10) [error] scala.collection.immutable.List.foreach(List.scala:305) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:343) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$25(TreePickler.scala:546) [error] dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) [error] dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:47) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:547) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:319) [error] dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) [error] dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:47) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:324) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:522) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:343) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10) [error] scala.collection.immutable.List.foreach(List.scala:305) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:343) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$27(TreePickler.scala:556) [error] dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) [error] dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:47) [error] dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:556) [error] dotty.tools.dotc.core.tasty.TreePickler.pickle$$anonfun$1(TreePickler.scala:713) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10) [error] scala.collection.immutable.List.foreach(List.scala:305) [error] dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:713) [error] dotty.tools.dotc.transform.Pickler.run$$anonfun$10$$anonfun$8(Pickler.scala:63) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10) [error] scala.collection.immutable.List.foreach(List.scala:305) [error] dotty.tools.dotc.transform.Pickler.run$$anonfun$2(Pickler.scala:87) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10) [error] scala.collection.immutable.List.foreach(List.scala:305) [error] dotty.tools.dotc.transform.Pickler.run(Pickler.scala:87) [error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:315) [error] scala.collection.immutable.List.map(List.scala:219) [error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:316) [error] dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:91) [error] dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:167) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15) [error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10) [error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323) [error] dotty.tools.dotc.Run.runPhases$5(Run.scala:177) [error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:185) [error] dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12) [error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:64) [error] dotty.tools.dotc.Run.compileUnits(Run.scala:192) [error] dotty.tools.dotc.Run.compileSources(Run.scala:129) [error] dotty.tools.dotc.Run.compile(Run.scala:112) [error] dotty.tools.dotc.Driver.doCompile(Driver.scala:36) [error] dotty.tools.dotc.Driver.process(Driver.scala:189) [error] dotty.tools.dotc.Main.process(Main.scala) [error] xsbt.CachedCompilerImpl.run(CachedCompilerImpl.java:69) [error] xsbt.CompilerInterface.run(CompilerInterface.java:41) [error] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [error] sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [error] sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [error] java.lang.reflect.Method.invoke(Method.java:498) [error] sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:248) [error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:122) [error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:95) [error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:91) [error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) [error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:186) [error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82) [error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3$adapted(MixedAnalyzingCompiler.scala:77) [error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:215) [error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:77) [error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:146) [error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:343) [error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:343) [error] sbt.internal.inc.Incremental$.doCompile(Incremental.scala:120) [error] sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:100) [error] sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:180) [error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:98) [error] sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:102) [error] sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:155) [error] sbt.internal.inc.Incremental$.compile(Incremental.scala:92) [error] sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:75) [error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:348) [error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:301) [error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:168) [error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:248) [error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:74) [error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1762) [error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1735) [error] scala.Function1.$anonfun$compose$1(Function1.scala:49) [error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62) [error] sbt.std.Transform$$anon$4.work(Transform.scala:67) [error] sbt.Execute.$anonfun$submit$2(Execute.scala:281) [error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19) [error] sbt.Execute.work(Execute.scala:290) [error] sbt.Execute.$anonfun$submit$1(Execute.scala:281) [error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178) [error] sbt.CompletionService$$anon$2.call(CompletionService.scala:37) [error] java.util.concurrent.FutureTask.run(FutureTask.java:266) [error] java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [error] java.util.concurrent.FutureTask.run(FutureTask.java:266) [error] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [error] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [error] java.lang.Thread.run(Thread.java:748) ```
@ohze ohze added the itype:bug label Feb 29, 2020
@ohze
Copy link
Author

ohze commented Feb 29, 2020

Ah. Duplicate #6501

odersky added a commit to dotty-staging/dotty that referenced this issue Mar 1, 2020
Fixes scala#6501
Fixes scala#8405

Both tests exercise corner cases where a type seems to be present at first
but then is missing. It took some effort to dig out the useful error message
from excetiopn handling code.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants