trait AddMany[L <: Int, SL <: Int]
object AddMany {
type Aux[L <: Int, SL <: Int, Out0 <: Int] = AddMany[L, SL] { type Out = Out0 }
def addMany[L <: Int, SL <: Int, H, Result <: Int]: Aux[L, SL, Result] =
new AddMany[L, Tail, H] { type Out = adder.Out }
}
The error occurred while developing a function for shapeless, but it's reproducible with any type, that's where the <: Int come from.
error generated:
error: java.lang.AssertionError: assertion failed:
(AnyRef{type Out = <error>},AddMany.Aux[L,SL,Result])
while compiling: src/main/scala/bug.scala
during phase: typer
library version: version 2.11.5
compiler version: version 2.11.5
reconstructed args:
last tree to typer: Select(New, <init>)
tree position: line 7 of src/main/scala/bug.scala
tree tpe: ()AnyRef{type Out = <error>}
symbol: constructor $anon
symbol definition: def <init>(): $anon (a MethodSymbol)
symbol package: <empty>
symbol owners: constructor $anon -> <$anon: AnyRef> -> method addMany -> object AddMany
call site: method addMany in object AddMany in package <empty>
== Source file context for tree position ==
4
5 def addMany[L <: Int, SL <: Int, H, Result <: Int]: Aux[L, SL, Result] =
6 new AddMany[L, Tail, H] { type Out = adder.Out }
7 }
at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:208)
at scala.tools.nsc.typechecker.Typers$Typer.adaptMismatchedSkolems$1(Typers.scala:1003)
at scala.tools.nsc.typechecker.Typers$Typer.fallbackAfterVanillaAdapt$1(Typers.scala:1072)
at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1109)
at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1152)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5387)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2364)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:5294)
at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5330)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5582)
at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2190)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5285)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5429)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3028)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.collection.immutable.List.loop$1(List.scala:173)
at scala.collection.immutable.List.mapConserve(List.scala:189)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1903)
at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1790)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5287)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5429)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3028)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.collection.immutable.List.loop$1(List.scala:173)
at scala.collection.immutable.List.mapConserve(List.scala:189)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:4989)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5289)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5425)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:102)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply$mcV$sp(Global.scala:441)
at scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:432)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:94)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:93)
at scala.collection.Iterator$class.foreach(Iterator.scala:750)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1202)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:93)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1500)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1487)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1482)
at scala.tools.nsc.Global$Run.compile(Global.scala:1580)
at scala.tools.nsc.Driver.doCompile(Driver.scala:32)
at scala.tools.nsc.MainClass.doCompile(Main.scala:23)
at scala.tools.nsc.Driver.process(Driver.scala:51)
at scala.tools.nsc.Driver.main(Driver.scala:64)
at scala.tools.nsc.Main.main(Main.scala)
Exception in thread "main" java.lang.AssertionError: assertion failed:
(AnyRef{type Out = <error>},AddMany.Aux[L,SL,Result])
while compiling: src/main/scala/bug.scala
during phase: typer
library version: version 2.11.5
compiler version: version 2.11.5
reconstructed args:
last tree to typer: Select(New, <init>)
tree position: line 7 of src/main/scala/bug.scala
tree tpe: ()AnyRef{type Out = <error>}
symbol: constructor $anon
symbol definition: def <init>(): $anon (a MethodSymbol)
symbol package: <empty>
symbol owners: constructor $anon -> <$anon: AnyRef> -> method addMany -> object AddMany
call site: method addMany in object AddMany in package <empty>
== Source file context for tree position ==
4
5 def addMany[L <: Int, SL <: Int, H, Result <: Int]: Aux[L, SL, Result] =
6 new AddMany[L, Tail, H] { type Out = adder.Out }
7 }
at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:208)
at scala.tools.nsc.typechecker.Typers$Typer.adaptMismatchedSkolems$1(Typers.scala:1003)
at scala.tools.nsc.typechecker.Typers$Typer.fallbackAfterVanillaAdapt$1(Typers.scala:1072)
at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1109)
at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1152)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5387)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2364)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5295)
at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:5294)
at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5330)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5582)
at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2190)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5285)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5429)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3028)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.collection.immutable.List.loop$1(List.scala:173)
at scala.collection.immutable.List.mapConserve(List.scala:189)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1903)
at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1790)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5287)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5429)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3028)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
at scala.collection.immutable.List.loop$1(List.scala:173)
at scala.collection.immutable.List.mapConserve(List.scala:189)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3132)
at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:4989)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5289)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5425)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:102)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply$mcV$sp(Global.scala:441)
at scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:432)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:94)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:93)
at scala.collection.Iterator$class.foreach(Iterator.scala:750)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1202)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:93)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1500)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1487)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1482)
at scala.tools.nsc.Global$Run.compile(Global.scala:1580)
at scala.tools.nsc.Driver.doCompile(Driver.scala:32)
at scala.tools.nsc.MainClass.doCompile(Main.scala:23)
at scala.tools.nsc.Driver.process(Driver.scala:51)
at scala.tools.nsc.Driver.main(Driver.scala:64)
at scala.tools.nsc.Main.main(Main.scala)
Occurs with 2.11.4, 2.11.5, and 2.11.6