Aladdin - Scala Bugtracking
[#1144] project: compiler priority: low category: bug
submitter assigned to status date submitted
Sean Martin fixed 2007-05-28 17:02:38.0
subject resident compiler chokes on NSC
code
see NSC

Note in symtab/AnnotationInfos.scala:

  private object symbolReifier extends SymbolReifier {
    val symbols: AnnotationInfos.this.type = AnnotationInfos.this
  }

Crash will go away if we change symbolReifier to a value.
what happened
sean-mcdirmid:~/workspace/scala/src/compiler mcdirmid$ ../../build/quick/bin/scalac -resident -d tmp

nsc> scala/tools/nsc/symtab/AnnotationInfos.scala

nsc> scala/tools/nsc/symtab/SymbolTable.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: AnnotationInfos.this.type.object scala$to\
ols$nsc$symtab$AnnotationInfos$$symbolReifier does no longer exist, phase = namer
	at scala.Predef$.assert(Predef.scala:90)
	at scala.tools.nsc.symtab.Types$adaptToNewRunMap$.adaptToNewRun(Types.scala:2183)
	at scala.tools.nsc.symtab.Types$adaptToNewRunMap$.adaptToNewRun(Types.scala:2174)
	at scala.tools.nsc.symtab.Types$adaptToNewRunMap$.apply(Types.scala:2216)
	at scala.tools.nsc.symtab.Symbols$Symbol.adaptToNewRun$0(Symbols.scala:508)
	at scala.tools.nsc.symtab.Symbols$Symbol.adaptInfos(Symbols.scala:512)
	at scala.tools.nsc.symtab.Symbols$Symbol.adaptInfos(Symbols.scala:504)
	at scala.tools.nsc.symtab.Symbols$Symbol.adaptInfos(Symbols.scala:504)
	at scala.tools.nsc.symtab.Symbols$Symbol.adaptInfos(Symbols.scala:504)
	at scala.tools.nsc.symtab.Symbols$Symbol.rawInfo(Symbols.scala:471)
	at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:428)
	at scala.tools.nsc.transform.AddInterfaces.scala$tools$nsc$transform$AddInterfaces$$isInterfaceMember(AddInterf\
aces.scala:60)
	at scala.tools.nsc.transform.AddInterfaces$LazyImplClassType$$anonfun$1.apply(AddInterfaces.scala:136)
	at scala.tools.nsc.transform.AddInterfaces$LazyImplClassType$$anonfun$1.apply(AddInterfaces.scala:135)
	at scala.Iterator$class.foreach(Iterator.scala:364)
	at scala.List$$anon$0.foreach(List.scala:482)
	at scala.tools.nsc.transform.AddInterfaces$LazyImplClassType.implDecls(AddInterfaces.scala:135)
	at scala.tools.nsc.transform.AddInterfaces$LazyImplClassType.implType$0(AddInterfaces.scala:160)
	at scala.tools.nsc.transform.AddInterfaces$LazyImplClassType.complete(AddInterfaces.scala:165)
	at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:417)
	at scala.tools.nsc.symtab.Symbols$Symbol.primaryConstructor(Symbols.scala:656)
	at scala.tools.nsc.transform.AddInterfaces.mixinConstructorCall$0(AddInterfaces.scala:288)
	at scala.tools.nsc.transform.AddInterfaces$$anonfun$11.apply(AddInterfaces.scala:293)
	at scala.tools.nsc.transform.AddInterfaces$$anonfun$11.apply(AddInterfaces.scala:291)
	at scala.List.map(List.scala:670)
	at scala.tools.nsc.transform.AddInterfaces.scala$tools$nsc$transform$AddInterfaces$$addMixinConstructorCalls(Ad\
dInterfaces.scala:291)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transform(AddInterfaces.scala:316)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1326)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1324)
	at scala.List$.loop$0(List.scala:243)
	at scala.List$.mapConserve(List.scala:260)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:1324)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transformStats(AddInterfaces.scala:305)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:1236)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transform(AddInterfaces.scala:346)
	at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:1310)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$22.apply(Trees.scala:1204)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$22.apply(Trees.scala:1204)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:1332)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:1203)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transform(AddInterfaces.scala:346)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1326)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1324)
	at scala.List$.loop$0(List.scala:243)
	at scala.List$.mapConserve(List.scala:260)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:1324)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transformStats(AddInterfaces.scala:305)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:1332)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:1199)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transform(AddInterfaces.scala:346)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1326)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1324)
	at scala.List$.loop$0(List.scala:243)
	at scala.List$.mapConserve(List.scala:260)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:1324)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transformStats(AddInterfaces.scala:305)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:1332)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:1199)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transform(AddInterfaces.scala:346)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1326)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1324)
	at scala.List$.loop$0(List.scala:243)
	at scala.List$.mapConserve(List.scala:260)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:1324)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transformStats(AddInterfaces.scala:305)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:1332)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:1199)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transform(AddInterfaces.scala:346)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1326)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$35.apply(Trees.scala:1324)
	at scala.List$.loop$0(List.scala:243)
	at scala.List$.mapConserve(List.scala:260)
	at scala.tools.nsc.ast.Trees$Transformer.transformStats(Trees.scala:1324)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transformStats(AddInterfaces.scala:305)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$21.apply(Trees.scala:1200)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:1332)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:1199)
	at scala.tools.nsc.transform.AddInterfaces$$anon$0.transform(AddInterfaces.scala:346)
	at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anonfun$26.apply(Erasure.scala:862)
	at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anonfun$26.apply(Erasure.scala:861)
	at scala.tools.nsc.symtab.SymbolTable.atPhase(SymbolTable.scala:83)
	at scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:861)
	at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:1327)
	at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
	at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:241)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$2.apply(Global.scala:230)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$2.apply(Global.scala:230)
	at scala.Iterator$class.foreach(Iterator.scala:364)
	at scala.collection.mutable.ListBuffer$$anon$0.foreach(ListBuffer.scala:247)
	at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:230)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:498)
	at scala.tools.nsc.Global$Run.compile(Global.scala:572)
	at scala.tools.nsc.Main$$anonfun$0.apply(Main.scala:37)
	at scala.tools.nsc.Main$$anonfun$0.apply(Main.scala:34)
	at scala.tools.nsc.EvalLoop$class.loop(EvalLoop.scala:17)
	at scala.tools.nsc.Main$.loop(Main.scala:17)
	at scala.tools.nsc.EvalLoop$class.loop(EvalLoop.scala:18)
	at scala.tools.nsc.Main$.loop(Main.scala:17)
	at scala.tools.nsc.Main$.resident(Main.scala:34)
	at scala.tools.nsc.Main$.process(Main.scala:52)
	at scala.tools.nsc.Main$.main(Main.scala:77)
	at scala.tools.nsc.Main.main(Main.scala)

what expected I can't seem to narrow this down. The code seems to depend on the entire compiler, and the crash doesn't occur if I isolate to just the three core files involved (AnnotationInfos.scala, SymbolTable.scala and SymbolReifier.scala). I'm pretty sure it has something to do with the symbolReifier object in AnnotationInfos, because changing it to a val avoids the crash.
[back to overview]
Changes of this bug report
Martin  edited on  2007-06-01 12:19:11.0