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
assertion failure in typer with nested match and existentials #1357
Comments
Imported From: https://issues.scala-lang.org/browse/SI-1357?orig=1 |
@eengbrec said: package constreecompilercrash object ConsCell { def apply[H, T](h: H, t: T): ConsCell[H, T] = BasicConsCell(h, t) private case class BasicConsCell[+H, +T](val head: H, val tail: T) extends ConsCell[H, T] sealed trait ConsCell[+H, +T] { object NonEmptyCons { trait NonEmptyCons[+H, +T] extends ConsCell[H, T] { object Nil extends ConsCell[Nothing, Nothing] object Main { import ConsCell._ def main(args: Array[String]) { def walkTree[E](tree: BinaryTree[E], op: E => Unit): Unit = tree match { |
@TiarkRompf said: object NonEmptyCons {
def unapply[H, T](c: (H, T)): Option[(H, T)] = Some(c)
}
object Main {
type BT[+H, +T <: Tuple2[Tuple2[H, T], Tuple2[H, T]]] = Tuple2[H, T]
type BinaryTree[+E] = BT[E, T forSome {type T <: Tuple2[BT[E, T], BT[E, T]]}]
def foo[E](tree: BinaryTree[E]): Unit = tree match {
case NonEmptyCons(_, tail) => {
tail match {
case NonEmptyCons(_, _) => {
}
}
}
}
}
|
@paulp said: |
@odersky said: val c: Cell[(a, b)] forSome { type a <: Number; type b <: (a, a) } = null
val d = c I defer until we redo the whole approach to constraint solving (which we should do, soon). |
@paulp said: |
This occurred against 2.7.2 RC2 (and RC1). See attached file for code.
java.lang.AssertionError: assertion failed: NonEmptyCons((head @ *), (tail @ *)) ==> NonEmptyCons.unapplyNothing, Nothing ((head @ *), (tail @ *)), pt = ?
at scala.Predef$$.assert(Predef.scala:92)
at scala.tools.nsc.typechecker.Typers$$Typer.doTypedApply(Typers.scala:1892)
at scala.tools.nsc.typechecker.Typers$$Typer.doTypedApply(Typers.scala:1811)
at scala.tools.nsc.typechecker.Typers$$Typer.typedApply$$1(Typers.scala:2619)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3219)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3323)
at scala.tools.nsc.typechecker.Typers$$Typer.typedPattern(Typers.scala:3390)
at scala.tools.nsc.typechecker.Typers$$Typer.typedCase(Typers.scala:1419)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$typedCases$$1.apply(Typers.scala:1442)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$typedCases$$1.apply(Typers.scala:1440)
at scala.List$$.loop$$1(List.scala:293)
at scala.List$$.mapConserve(List.scala:310)
at scala.tools.nsc.typechecker.Typers$$Typer.typedCases(Typers.scala:1440)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3135)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3323)
at scala.tools.nsc.typechecker.Typers$$Typer.typedBlock(Typers.scala:1405)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3083)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3323)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3371)
at scala.tools.nsc.typechecker.Typers$$Typer.typedCase(Typers.scala:1422)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$typedCases$$1.apply(Typers.scala:1442)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$typedCases$$1.apply(Typers.scala:1440)
at scala.List$$.loop$$1(List.scala:293)
at scala.List$$.mapConserve(List.scala:310)
at scala.tools.nsc.typechecker.Typers$$Typer.typedCases(Typers.scala:1440)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3135)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3323)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3371)
at scala.tools.nsc.typechecker.Typers$$Typer.transformedOrTyped(Typers.scala:3429)
at scala.tools.nsc.typechecker.Typers$$Typer.typedDefDef(Typers.scala:1342)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3059)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3323)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3360)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:1570)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$19.apply(Typers.scala:1615)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$19.apply(Typers.scala:1615)
at scala.List$$.loop$$1(List.scala:293)
at scala.List$$.mapConserve(List.scala:310)
at scala.List$$.loop$$1(List.scala:297)
at scala.List$$.mapConserve(List.scala:310)
at scala.List$$.loop$$1(List.scala:297)
at scala.List$$.mapConserve(List.scala:310)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:1615)
at scala.tools.nsc.typechecker.Typers$$Typer.typedTemplate(Typers.scala:1193)
at scala.tools.nsc.typechecker.Typers$$Typer.typedModuleDef(Typers.scala:1086)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3053)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3323)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3360)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:1570)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$19.apply(Typers.scala:1615)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$19.apply(Typers.scala:1615)
at scala.List$$.loop$$1(List.scala:293)
at scala.List$$.mapConserve(List.scala:310)
at scala.List$$.loop$$1(List.scala:297)
at scala.List$$.mapConserve(List.scala:310)
at scala.List$$.loop$$1(List.scala:297)
at scala.List$$.mapConserve(List.scala:310)
at scala.List$$.loop$$1(List.scala:297)
at scala.List$$.mapConserve(List.scala:310)
at scala.List$$.loop$$1(List.scala:297)
at scala.List$$.mapConserve(List.scala:310)
at scala.List$$.loop$$1(List.scala:297)
at scala.List$$.mapConserve(List.scala:310)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:1615)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3046)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3323)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3360)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$2.apply(Analyzer.scala:40)
at scala.tools.nsc.Global$$GlobalPhase.applyPhase(Global.scala:268)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$run$$1.apply(Global.scala:247)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$run$$1.apply(Global.scala:247)
at scala.Iterator$$class.foreach(Iterator.scala:410)
at scala.collection.mutable.ListBuffer$$$$anon$$1.foreach(ListBuffer.scala:266)
at scala.tools.nsc.Global$$GlobalPhase.run(Global.scala:247)
at scala.tools.nsc.Global$$Run.compileSources(Global.scala:579)
at scala.tools.nsc.Global$$Run.compile(Global.scala:663)
at scala.tools.ant.Scalac.execute(Scalac.scala:574)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:394)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:273)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:486)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)
The text was updated successfully, but these errors were encountered: