You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Scala compiler version 2.8.0.r20627-b20100121020117 --Copyright2002-2010, LAMP/EPFL
this results in the error:
Exception in thread "main" java.lang.AssertionError: assertion failed: unsatisfiable cyclic dependency in 'traitCycle'
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:69)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader.doComplete(SymbolLoaders.scala:249)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.complete(SymbolLoaders.scala:62)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.load(SymbolLoaders.scala:81)
at scala.tools.nsc.symtab.Symbols$$Symbol.typeParams(Symbols.scala:938)
at scala.tools.nsc.symtab.Types$$TypeMap.mapOver(Types.scala:2760)
at scala.tools.nsc.symtab.Types$$deAlias$$.apply(Types.scala:2623)
at scala.tools.nsc.symtab.Types$$class.existentialAbstraction(Types.scala:2549)
at scala.tools.nsc.symtab.SymbolTable.existentialAbstraction(SymbolTable.scala:13)
at scala.tools.nsc.symtab.classfile.ClassfileParser.processClassType$$1(ClassfileParser.scala:640)
at scala.tools.nsc.symtab.classfile.ClassfileParser.sig2type$$1(ClassfileParser.scala:658)
at scala.tools.nsc.symtab.classfile.ClassfileParser.sig2typeBounds$$1(ClassfileParser.scala:703)
at scala.tools.nsc.symtab.classfile.ClassfileParser.scala$$tools$$nsc$$symtab$$classfile$$ClassfileParser$$$$sigToType(ClassfileParser.scala:718)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttribute$$1(ClassfileParser.scala:764)
at scala.tools.nsc.symtab.classfile.ClassfileParser$$$$anonfun$$parseAttributes$$1.apply(ClassfileParser.scala:918)
at scala.tools.nsc.symtab.classfile.ClassfileParser$$$$anonfun$$parseAttributes$$1.apply(ClassfileParser.scala:918)
at scala.collection.immutable.Range$$ByOne$$class.foreach(Range.scala:171)
at scala.collection.immutable.Range$$$$anon$$2.foreach(Range.scala:153)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttributes(ClassfileParser.scala:918)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parseClass(ClassfileParser.scala:465)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:98)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader.doComplete(SymbolLoaders.scala:249)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.complete(SymbolLoaders.scala:62)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.load(SymbolLoaders.scala:81)
at scala.tools.nsc.typechecker.Typers$$Typer.isStale(Typers.scala:554)
at scala.tools.nsc.typechecker.Typers$$Typer.reallyExists(Typers.scala:545)
at scala.tools.nsc.typechecker.Typers$$Typer.qualifies$$1(Typers.scala:3569)
at scala.tools.nsc.typechecker.Typers$$Typer.typedIdent$$1(Typers.scala:3586)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:4016)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4098)
at scala.tools.nsc.typechecker.Typers$$Typer.typedType(Typers.scala:4201)
at scala.tools.nsc.typechecker.Typers$$Typer.typedType(Typers.scala:4204)
at scala.tools.nsc.typechecker.Namers$$Namer.typeSig(Namers.scala:1160)
at scala.tools.nsc.typechecker.Namers$$Namer$$$$anonfun$$getterTypeCompleter$$1.apply(Namers.scala:548)
at scala.tools.nsc.typechecker.Namers$$Namer$$$$anonfun$$getterTypeCompleter$$1.apply(Namers.scala:546)
at scala.tools.nsc.typechecker.Namers$$$$anon$$1.complete(Namers.scala:1304)
at scala.tools.nsc.symtab.Symbols$$Symbol.info(Symbols.scala:758)
at scala.tools.nsc.symtab.Symbols$$Symbol.initialize(Symbols.scala:867)
at scala.tools.nsc.symtab.Symbols$$Symbol.annotations(Symbols.scala:114)
at scala.tools.nsc.typechecker.Typers$$Typer.addGetterSetter(Typers.scala:1346)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$9.apply(Typers.scala:1511)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$9.apply(Typers.scala:1511)
at scala.collection.TraversableLike$$$$anonfun$$flatMap$$1.apply(TraversableLike.scala:259)
at scala.collection.TraversableLike$$$$anonfun$$flatMap$$1.apply(TraversableLike.scala:259)
at scala.collection.LinearSeqLike$$class.foreach(LinearSeqLike.scala:97)
at scala.collection.immutable.List.foreach(List.scala:46)
at scala.collection.TraversableLike$$class.flatMap(TraversableLike.scala:259)
at scala.collection.immutable.List.flatMap(List.scala:46)
at scala.tools.nsc.typechecker.Typers$$Typer.typedTemplate(Typers.scala:1511)
at scala.tools.nsc.typechecker.Typers$$Typer.typedClassDef(Typers.scala:1296)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3753)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4098)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4151)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:2109)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$22.apply(Typers.scala:2177)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$22.apply(Typers.scala:2177)
at scala.collection.immutable.List.loop$$1(List.scala:116)
at scala.collection.immutable.List.mapConserve(List.scala:133)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:2177)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3749)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4098)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4151)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3.apply(Analyzer.scala:82)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$applyPhase$$1.apply(Global.scala:278)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$applyPhase$$1.apply(Global.scala:278)
at scala.tools.nsc.reporters.Reporter.withSource(Reporter.scala:48)
at scala.tools.nsc.Global$$GlobalPhase.applyPhase(Global.scala:278)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3$$$$anonfun$$run$$1.apply(Analyzer.scala:77)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3$$$$anonfun$$run$$1.apply(Analyzer.scala:77)
at scala.collection.Iterator$$class.foreach(Iterator.scala:582)
at scala.collection.mutable.ListBuffer$$$$anon$$1.foreach(ListBuffer.scala:285)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3.run(Analyzer.scala:77)
at scala.tools.nsc.Global$$Run.compileSources(Global.scala:746)
at scala.tools.nsc.Global$$Run.compile(Global.scala:836)
at scala.tools.nsc.Main$$.process(Main.scala:110)
at scala.tools.nsc.Main$$.main(Main.scala:124)
at scala.tools.nsc.Main.main(Main.scala)
With 2.7.7.final it returns a slightly different error in the same situation:
Exception in thread "main" java.lang.AssertionError: assertion failed: internal error: illegal classfile dependency
at scala.Predef$$.assert(Predef.scala:92)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:62)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader$$$$anonfun$$doComplete$$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader$$$$anonfun$$doComplete$$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders.completeClassfile(SymbolLoaders.scala:276)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader.doComplete(SymbolLoaders.scala:289)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.complete(SymbolLoaders.scala:77)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.load(SymbolLoaders.scala:97)
at scala.tools.nsc.symtab.Symbols$$Symbol.typeParams(Symbols.scala:702)
at scala.tools.nsc.symtab.Types$$TypeMap.mapOver(Types.scala:2361)
at scala.tools.nsc.symtab.Types$$ForEachTypeTraverser.traverse(Types.scala:3100)
at scala.tools.nsc.symtab.Types$$Type.foreach(Types.scala:484)
at scala.tools.nsc.symtab.Types$$class.existentialAbstraction(Types.scala:2187)
at scala.tools.nsc.symtab.SymbolTable.existentialAbstraction(SymbolTable.scala:12)
at scala.tools.nsc.symtab.classfile.ClassfileParser.processClassType$$1(ClassfileParser.scala:583)
at scala.tools.nsc.symtab.classfile.ClassfileParser.sig2type$$1(ClassfileParser.scala:601)
at scala.tools.nsc.symtab.classfile.ClassfileParser.sig2typeBounds$$1(ClassfileParser.scala:638)
at scala.tools.nsc.symtab.classfile.ClassfileParser.scala$$tools$$nsc$$symtab$$classfile$$ClassfileParser$$$$sigToType(ClassfileParser.scala:653)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttribute$$1(ClassfileParser.scala:699)
at scala.tools.nsc.symtab.classfile.ClassfileParser$$$$anonfun$$parseAttributes$$1.apply(ClassfileParser.scala:834)
at scala.tools.nsc.symtab.classfile.ClassfileParser$$$$anonfun$$parseAttributes$$1.apply(ClassfileParser.scala:834)
at scala.Range.foreach(Range.scala:44)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttributes(ClassfileParser.scala:834)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parseClass(ClassfileParser.scala:403)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:86)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader$$$$anonfun$$doComplete$$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader$$$$anonfun$$doComplete$$3.apply(SymbolLoaders.scala:290)
at scala.tools.nsc.symtab.SymbolLoaders.completeClassfile(SymbolLoaders.scala:276)
at scala.tools.nsc.symtab.SymbolLoaders$$ClassfileLoader.doComplete(SymbolLoaders.scala:289)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.complete(SymbolLoaders.scala:77)
at scala.tools.nsc.symtab.SymbolLoaders$$SymbolLoader.load(SymbolLoaders.scala:97)
at scala.tools.nsc.symtab.Symbols$$Symbol.exists(Symbols.scala:425)
at scala.tools.nsc.typechecker.Typers$$Typer.qualifies$$1(Typers.scala:2894)
at scala.tools.nsc.typechecker.Typers$$Typer.typedIdent$$1(Typers.scala:2911)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$$Typer.typedType(Typers.scala:3429)
at scala.tools.nsc.typechecker.Typers$$Typer.typedType(Typers.scala:3432)
at scala.tools.nsc.typechecker.Namers$$Namer.typeSig(Namers.scala:864)
at scala.tools.nsc.typechecker.Namers$$Namer$$$$anonfun$$getterTypeCompleter$$1.apply(Namers.scala:450)
at scala.tools.nsc.typechecker.Namers$$Namer$$$$anonfun$$getterTypeCompleter$$1.apply(Namers.scala:448)
at scala.tools.nsc.typechecker.Namers$$$$anon$$1.complete(Namers.scala:982)
at scala.tools.nsc.symtab.Symbols$$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.symtab.Symbols$$Symbol.initialize(Symbols.scala:669)
at scala.tools.nsc.typechecker.Typers$$Typer.addGetterSetter(Typers.scala:1139)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$10.apply(Typers.scala:1219)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$10.apply(Typers.scala:1219)
at scala.List.flatMap(List.scala:1132)
at scala.tools.nsc.typechecker.Typers$$Typer.typedTemplate(Typers.scala:1219)
at scala.tools.nsc.typechecker.Typers$$Typer.typedClassDef(Typers.scala:1090)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3088)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$19.apply(Typers.scala:1643)
at scala.List$$.loop$$1(List.scala:300)
at scala.List$$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$2.apply(Analyzer.scala:41)
at scala.tools.nsc.Global$$GlobalPhase.applyPhase(Global.scala:267)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$run$$1.apply(Global.scala:246)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$run$$1.apply(Global.scala:246)
at scala.Iterator$$class.foreach(Iterator.scala:414)
at scala.collection.mutable.ListBuffer$$$$anon$$1.foreach(ListBuffer.scala:266)
at scala.tools.nsc.Global$$GlobalPhase.run(Global.scala:246)
at scala.tools.nsc.Global$$Run.compileSources(Global.scala:574)
at scala.tools.nsc.Global$$Run.compile(Global.scala:667)
at scala.tools.nsc.Main$$.process(Main.scala:73)
at scala.tools.nsc.Main$$.main(Main.scala:87)
at scala.tools.nsc.Main.main(Main.scala)
@odersky said:
(In r21135) Closes #2940. Review by extempore. My original idea to replace existrentialAbstraction by existentialType in ClassfileParsers was correct after all. However this change triggered another landmine in Definitions, where ClassType queried unsafeTypeParams. I think that was only needed for the migration to Java generics in 2.7, so it can safely go away now. Because the change in classfile parsers forces less of a type, unsafeTtpeParams returned the wrong result, which caused the build to fail. The modifications in Erasure and Implicits were attempts to isolate the problem before. They seem to be unnecessary to make the build go through, but are cleaner than the previous versions they replace.
I'm attempting to use the EntityFS library (http://entityfs.sourceforge.net/) from Scala and it declares an interface with self-referential generics:
With the latest nightly version of scalac:
this results in the error:
With 2.7.7.final it returns a slightly different error in the same situation:
Both using OS X 10.6.2 with Java:
The following two files can reproduce the issue reliably. Cycle.java:
Error.scala:
The text was updated successfully, but these errors were encountered: