Skip to content
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

IndexOutOfBoundsException coming from TypeMaps #9253

Open
scabug opened this issue Mar 27, 2015 · 3 comments
Open

IndexOutOfBoundsException coming from TypeMaps #9253

scabug opened this issue Mar 27, 2015 · 3 comments
Labels
compiler crash fixed in Scala 3 This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)
Milestone

Comments

@scabug
Copy link

scabug commented Mar 27, 2015

Here is some code that crashes the compiler. Reproducible by pasting into a REPL running 2.11.6.

trait Bar {
  type One
  def makeOne: One
}

trait Foo extends Bar {
  class One[XYZ] {
    def makeUnit(xyz: XYZ): Unit = ()
  }

  def doSomething = makeOne.makeUnit _
}

I expect this code to fail with a compile error, informing me that there is a discrepancy between type params of One.

What seems to be happening, is that the compiler derives an index in order to dereference a list of type parameters. The type One in trait Bar has no params, but the class One does! The compiler derives the index 0, and then derefs an empty list of params - IndexOutOfBoundsException.

Note 1: If def makeOne: One is moved into trait Foo, the compiler doesn't crash.

Note 2: If def makeUnit doesn't take a parameter of type XYZ (keeping class One parameterized on XYZ), the compiler also doesn't crash. For example,

def makeUnit(xyz: Unit): Unit = ()

and

def makeUnit: Unit = ()

both do not crash the compiler.

I looked through the open issues, and the stack trace this produces (pasted below) is extremely similar to the trace shown in issue #8745. (That issue is marked as a duplicate of #8439.) Since those tickets depend on swing-scala, I opted to open a new ticket, since it wasn't clear that this issue was the only issue present in those tickets.

java.lang.IndexOutOfBoundsException: 0
	at scala.collection.LinearSeqOptimized$class.apply(LinearSeqOptimized.scala:65)
	at scala.collection.immutable.List.apply(List.scala:84)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.correspondingTypeArgument(TypeMaps.scala:567)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.loop$3(TypeMaps.scala:601)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.classParameterAsSeen(TypeMaps.scala:606)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:483)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.applyToSymbolInfo(TypeMaps.scala:218)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.loop$1(TypeMaps.scala:227)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.noChangeToSymbols(TypeMaps.scala:229)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:243)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:128)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:484)
	at scala.reflect.internal.Types$Type.asSeenFrom(Types.scala:663)
	at scala.reflect.internal.Types$Type.computeMemberType(Types.scala:698)
	at scala.reflect.internal.Symbols$MethodSymbol.typeAsMemberOf(Symbols.scala:2922)
	at scala.reflect.internal.Types$Type.memberType(Types.scala:689)
	at scala.tools.nsc.typechecker.Infer$Inferencer.checkAccessible(Infer.scala:272)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$makeAccessible(Typers.scala:559)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$103.apply(Typers.scala:4755)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$103.apply(Typers.scala:4755)
	at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:693)
	at scala.tools.nsc.typechecker.Typers$Typer.typedSelectInternal$1(Typers.scala:4755)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedSelect$1(Typers.scala:4680)
	at scala.tools.nsc.typechecker.Typers$Typer.typedSelectOrSuperCall$1(Typers.scala:4819)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5344)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523)
	at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680)
	at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522)
	at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5463)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedFunction(Typers.scala:2987)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedFunction$1$1.apply(Typers.scala:5284)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedFunction$1$1.apply(Typers.scala:5284)
	at scala.tools.nsc.typechecker.Typers$Typer.typedFunction$1(Typers.scala:5284)
	at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:5321)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5353)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2382)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5318)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5318)
	at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:5317)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5353)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.instantiateToMethodType$1(Typers.scala:875)
	at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1164)
	at scala.tools.nsc.typechecker.Typers$Typer.typedEta$1(Typers.scala:4413)
	at scala.tools.nsc.typechecker.Typers$Typer.typedTyped$1(Typers.scala:5104)
	at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5346)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5463)
	at scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5554)
	at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:879)
	at scala.tools.nsc.typechecker.Namers$Namer.methodSig(Namers.scala:1213)
	at scala.tools.nsc.typechecker.Namers$Namer.getSig$1(Namers.scala:1529)
	at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1541)
	at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply$mcV$sp(Namers.scala:781)
	at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:780)
	at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:780)
	at scala.tools.nsc.typechecker.Namers$Namer.scala$tools$nsc$typechecker$Namers$Namer$$logAndValidate(Namers.scala:1568)
	at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:780)
	at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:772)
	at scala.tools.nsc.typechecker.Namers$$anon$1.completeImpl(Namers.scala:1684)
	at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter$class.complete(Namers.scala:1692)
	at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:1682)
	at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1488)
	at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1633)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5005)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3046)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	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:3150)
	at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1921)
	at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1762)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5309)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3046)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	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:3150)
	at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1921)
	at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1808)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5310)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3046)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	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:3150)
	at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1921)
	at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1808)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5310)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3046)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	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:3150)
	at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1921)
	at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1808)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5310)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3046)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3150)
	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:3150)
	at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5012)
	at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5312)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359)
	at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
	at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
	at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
	at scala.tools.nsc.interpreter.ReplGlobal$$anon$1$$anon$2.typed(ReplGlobal.scala:36)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5448)
	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.interpreter.IMain.compileSourcesKeepingRun(IMain.scala:425)
	at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compileAndSaveRun(IMain.scala:841)
	at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compile(IMain.scala:800)
	at scala.tools.nsc.interpreter.IMain$Request.compile$lzycompute(IMain.scala:976)
	at scala.tools.nsc.interpreter.IMain$Request.compile(IMain.scala:971)
	at scala.tools.nsc.interpreter.IMain.compile(IMain.scala:568)
	at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:556)
	at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:554)
	at scala.tools.nsc.interpreter.ILoop.interpretCode$1(ILoop.scala:757)
	at scala.tools.nsc.interpreter.ILoop.pasteCommand(ILoop.scala:771)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$standardCommands$9.apply(ILoop.scala:218)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$standardCommands$9.apply(ILoop.scala:218)
	at scala.tools.nsc.interpreter.LoopCommands$LineCmd.apply(LoopCommands.scala:62)
	at scala.tools.nsc.interpreter.ILoop.colonCommand(ILoop.scala:714)
	at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:705)
	at scala.tools.nsc.interpreter.ILoop.processLine(ILoop.scala:405)
	at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:431)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:920)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:906)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:906)
	at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97)
	at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:906)
	at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:74)
	at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87)
	at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98)
	at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
	at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
@scabug
Copy link
Author

scabug commented Mar 27, 2015

Imported From: https://issues.scala-lang.org/browse/SI-9253?orig=1
Reporter: Alissa Pajer (alissapajer)
Affected Versions: 2.11.6
See #8439, #8745

@scabug
Copy link
Author

scabug commented Jun 22, 2015

@SethTisue said:
scala/scala#4573 improves the diagnostics, but the crash remains

@SethTisue
Copy link
Member

SethTisue commented Apr 5, 2023

Scala 2.13.10 still crashes.

Scala 3 3.3.1-RC1-bin-20230404-d4a8600-NIGHTLY gives a somewhat mangled, yet still comprehensible error:

11 |  def doSomething = makeOne.makeUnit _
   |                    ^^^^^^^^^^^^^^^^^^
   |Only function types can be followed by _ but the current expression has type <error Foo.this.One takes type parameters>
   |
   | longer explanation available when compiling with `-explain`
1 error found

The part that makes sense is the "error Foo.this.One takes type parameters".

@SethTisue SethTisue added the fixed in Scala 3 This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/) label Apr 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler crash fixed in Scala 3 This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)
Projects
None yet
Development

No branches or pull requests

2 participants