Skip to content

Instantly share code, notes, and snippets.

@tonymorris

tonymorris/Z.scala

Created Oct 3, 2012
Embed
What would you like to do?
scalac crash
sealed trait Z[F[+_]] {
def impl: Int =
this match {
case ZImpl(i) => i
}
}
case class ZImpl[F[+_]](z: Int) extends Z[F]
/*
$ scalac -version && scalac Z.scala
Scala compiler version 2.9.2 -- Copyright 2002-2011, LAMP/EPFL
error: java.lang.Error: typeConstructor inapplicable for <none>
at scala.tools.nsc.symtab.SymbolTable.abort(SymbolTable.scala:34)
at scala.tools.nsc.symtab.Symbols$Symbol.typeConstructor(Symbols.scala:880)
at scala.tools.nsc.symtab.Types$TypeVar$$anonfun$normalize$2.apply(Types.scala:2547)
at scala.tools.nsc.symtab.Types$TypeVar$$anonfun$normalize$2.apply(Types.scala:2547)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:76)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
at scala.collection.immutable.List.map(List.scala:76)
at scala.tools.nsc.symtab.Types$TypeVar.normalize(Types.scala:2547)
at scala.tools.nsc.symtab.Types$class.isHKSubType0(Types.scala:4591)
at scala.tools.nsc.symtab.SymbolTable.isHKSubType0(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$class.scala$tools$nsc$symtab$Types$$isSubType2(Types.scala:4642)
at scala.tools.nsc.symtab.Types$$anonfun$isSubType$1.apply$mcZ$sp(Types.scala:4536)
at scala.tools.nsc.symtab.Types$undoLog$.undoUnless(Types.scala:143)
at scala.tools.nsc.symtab.Types$class.isSubType(Types.scala:4523)
at scala.tools.nsc.symtab.SymbolTable.isSubType(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$Type.$less$colon$less(Types.scala:638)
at scala.tools.nsc.symtab.Types$class.isSubArg(Types.scala:4627)
at scala.tools.nsc.symtab.SymbolTable.isSubArg(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$$anonfun$isSubArgs$2.apply(Types.scala:4630)
at scala.tools.nsc.symtab.Types$$anonfun$isSubArgs$2.apply(Types.scala:4630)
at scala.tools.nsc.symtab.Types$class.corresponds3(Types.scala:4623)
at scala.tools.nsc.symtab.SymbolTable.corresponds3(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$class.isSubArgs(Types.scala:4630)
at scala.tools.nsc.symtab.SymbolTable.isSubArgs(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$class.firstTry$1(Types.scala:4661)
at scala.tools.nsc.symtab.Types$class.scala$tools$nsc$symtab$Types$$isSubType2(Types.scala:4821)
at scala.tools.nsc.symtab.Types$$anonfun$isSubType$1.apply$mcZ$sp(Types.scala:4536)
at scala.tools.nsc.symtab.Types$undoLog$.undoUnless(Types.scala:143)
at scala.tools.nsc.symtab.Types$class.isSubType(Types.scala:4523)
at scala.tools.nsc.symtab.SymbolTable.isSubType(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$Type.$less$colon$less(Types.scala:638)
at scala.tools.nsc.symtab.Types$class.firstTry$1(Types.scala:4665)
at scala.tools.nsc.symtab.Types$class.scala$tools$nsc$symtab$Types$$isSubType2(Types.scala:4821)
at scala.tools.nsc.symtab.Types$$anonfun$isSubType$1.apply$mcZ$sp(Types.scala:4536)
at scala.tools.nsc.symtab.Types$undoLog$.undoUnless(Types.scala:143)
at scala.tools.nsc.symtab.Types$class.isSubType(Types.scala:4523)
at scala.tools.nsc.symtab.SymbolTable.isSubType(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$Type.$less$colon$less(Types.scala:638)
at scala.tools.nsc.typechecker.Infer$Inferencer.inferConstructorInstance(Infer.scala:1321)
at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:849)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4282)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedApply$1$1.apply(Typers.scala:3355)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedApply$1$1.apply(Typers.scala:3355)
at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:624)
at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:3355)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4106)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedPattern$1.apply(Typers.scala:4371)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedPattern$1.apply(Typers.scala:4371)
at scala.tools.nsc.typechecker.Contexts$Context.withImplicitsDisabled(Contexts.scala:156)
at scala.tools.nsc.typechecker.Typers$Typer.typedPattern(Typers.scala:4371)
at scala.tools.nsc.typechecker.Typers$Typer.typedCase(Typers.scala:1941)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedCases$1.apply(Typers.scala:1975)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedCases$1.apply(Typers.scala:1974)
at scala.collection.immutable.List.loop$1(List.scala:148)
at scala.collection.immutable.List.mapConserve(List.scala:164)
at scala.tools.nsc.typechecker.Typers$Typer.typedCases(Typers.scala:1974)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4005)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:4430)
at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:1760)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3921)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2100)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.collection.immutable.List.loop$1(List.scala:148)
at scala.collection.immutable.List.mapConserve(List.scala:164)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1512)
at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1278)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3912)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2100)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.collection.immutable.List.loop$1(List.scala:148)
at scala.collection.immutable.List.mapConserve(List.scala:164)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3908)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4333)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:94)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:329)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:86)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:86)
at scala.collection.Iterator$class.foreach(Iterator.scala:772)
at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:318)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:86)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:953)
at scala.tools.nsc.Global$Run.compile(Global.scala:1041)
at scala.tools.nsc.Main$.process(Main.scala:106)
at scala.tools.nsc.Main$.main(Main.scala:123)
at scala.tools.nsc.Main.main(Main.scala)
Exception in thread "main" java.lang.Error: typeConstructor inapplicable for <none>
at scala.tools.nsc.symtab.SymbolTable.abort(SymbolTable.scala:34)
at scala.tools.nsc.symtab.Symbols$Symbol.typeConstructor(Symbols.scala:880)
at scala.tools.nsc.symtab.Types$TypeVar$$anonfun$normalize$2.apply(Types.scala:2547)
at scala.tools.nsc.symtab.Types$TypeVar$$anonfun$normalize$2.apply(Types.scala:2547)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:76)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
at scala.collection.immutable.List.map(List.scala:76)
at scala.tools.nsc.symtab.Types$TypeVar.normalize(Types.scala:2547)
at scala.tools.nsc.symtab.Types$class.isHKSubType0(Types.scala:4591)
at scala.tools.nsc.symtab.SymbolTable.isHKSubType0(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$class.scala$tools$nsc$symtab$Types$$isSubType2(Types.scala:4642)
at scala.tools.nsc.symtab.Types$$anonfun$isSubType$1.apply$mcZ$sp(Types.scala:4536)
at scala.tools.nsc.symtab.Types$undoLog$.undoUnless(Types.scala:143)
at scala.tools.nsc.symtab.Types$class.isSubType(Types.scala:4523)
at scala.tools.nsc.symtab.SymbolTable.isSubType(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$Type.$less$colon$less(Types.scala:638)
at scala.tools.nsc.symtab.Types$class.isSubArg(Types.scala:4627)
at scala.tools.nsc.symtab.SymbolTable.isSubArg(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$$anonfun$isSubArgs$2.apply(Types.scala:4630)
at scala.tools.nsc.symtab.Types$$anonfun$isSubArgs$2.apply(Types.scala:4630)
at scala.tools.nsc.symtab.Types$class.corresponds3(Types.scala:4623)
at scala.tools.nsc.symtab.SymbolTable.corresponds3(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$class.isSubArgs(Types.scala:4630)
at scala.tools.nsc.symtab.SymbolTable.isSubArgs(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$class.firstTry$1(Types.scala:4661)
at scala.tools.nsc.symtab.Types$class.scala$tools$nsc$symtab$Types$$isSubType2(Types.scala:4821)
at scala.tools.nsc.symtab.Types$$anonfun$isSubType$1.apply$mcZ$sp(Types.scala:4536)
at scala.tools.nsc.symtab.Types$undoLog$.undoUnless(Types.scala:143)
at scala.tools.nsc.symtab.Types$class.isSubType(Types.scala:4523)
at scala.tools.nsc.symtab.SymbolTable.isSubType(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$Type.$less$colon$less(Types.scala:638)
at scala.tools.nsc.symtab.Types$class.firstTry$1(Types.scala:4665)
at scala.tools.nsc.symtab.Types$class.scala$tools$nsc$symtab$Types$$isSubType2(Types.scala:4821)
at scala.tools.nsc.symtab.Types$$anonfun$isSubType$1.apply$mcZ$sp(Types.scala:4536)
at scala.tools.nsc.symtab.Types$undoLog$.undoUnless(Types.scala:143)
at scala.tools.nsc.symtab.Types$class.isSubType(Types.scala:4523)
at scala.tools.nsc.symtab.SymbolTable.isSubType(SymbolTable.scala:13)
at scala.tools.nsc.symtab.Types$Type.$less$colon$less(Types.scala:638)
at scala.tools.nsc.typechecker.Infer$Inferencer.inferConstructorInstance(Infer.scala:1321)
at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:849)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4282)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedApply$1$1.apply(Typers.scala:3355)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedApply$1$1.apply(Typers.scala:3355)
at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:624)
at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:3355)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4106)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedPattern$1.apply(Typers.scala:4371)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedPattern$1.apply(Typers.scala:4371)
at scala.tools.nsc.typechecker.Contexts$Context.withImplicitsDisabled(Contexts.scala:156)
at scala.tools.nsc.typechecker.Typers$Typer.typedPattern(Typers.scala:4371)
at scala.tools.nsc.typechecker.Typers$Typer.typedCase(Typers.scala:1941)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedCases$1.apply(Typers.scala:1975)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedCases$1.apply(Typers.scala:1974)
at scala.collection.immutable.List.loop$1(List.scala:148)
at scala.collection.immutable.List.mapConserve(List.scala:164)
at scala.tools.nsc.typechecker.Typers$Typer.typedCases(Typers.scala:1974)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4005)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:4430)
at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:1760)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3921)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2100)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.collection.immutable.List.loop$1(List.scala:148)
at scala.collection.immutable.List.mapConserve(List.scala:164)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1512)
at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1278)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3912)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2100)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$24.apply(Typers.scala:2184)
at scala.collection.immutable.List.loop$1(List.scala:148)
at scala.collection.immutable.List.mapConserve(List.scala:164)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2184)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3908)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4273)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4333)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:94)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:329)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:86)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3$$anonfun$run$1.apply(Analyzer.scala:86)
at scala.collection.Iterator$class.foreach(Iterator.scala:772)
at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:318)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:86)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:953)
at scala.tools.nsc.Global$Run.compile(Global.scala:1041)
at scala.tools.nsc.Main$.process(Main.scala:106)
at scala.tools.nsc.Main$.main(Main.scala:123)
at scala.tools.nsc.Main.main(Main.scala)
*/
@retronym

This comment has been minimized.

Copy link

@retronym retronym commented Oct 3, 2012

It's fixed in 2.10.

C:\tools\scala-2.10.0-M5>bin\scala
Welcome to Scala version 2.10.0-M5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :paste
// Entering paste mode (ctrl-D to finish)

sealed trait Z[F[+_]] {
  def impl: Int =
    this match {
      case ZImpl(i) => i
    }
}
case class ZImpl[F[+_]](z: Int) extends Z[F]

// Exiting paste mode, now interpreting.

warning: there were 6 feature warnings; re-run with -feature for details
defined trait Z
defined class ZImpl

A workaround is to widen the type of the scrutinee:

C:\tools\scala-2.9.1>bin\scala
Welcome to Scala version 2.9.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :paste
// Entering paste mode (ctrl-D to finish)

sealed trait Z[F[+_]] {
  def impl: Int =
    (this: Any) match {
      case ZImpl(i) => i
    }
}
case class ZImpl[F[+_]](z: Int) extends Z[F]

// Exiting paste mode, now interpreting.

defined trait Z
defined class ZImpl
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment