-
Notifications
You must be signed in to change notification settings - Fork 21
Open
Labels
compiler crashfixed in Scala 3This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)lubshould compiletyper
Milestone
Description
Attempting to compile (note: if the seq is explicitly typed it compiles)
trait Foo {
val bar: Any
}
class Foo1 extends Foo {
object bar
}
class Foo2 extends Foo {
object bar
}
val foos/*: Seq[Foo]*/ = Seq(new Foo1, new Foo2)
foos.map(_.bar)causes error:
MatchError: Object (of class scala.reflect.internal.Types$TypeRef$$anon$6)
Compiler exception:
[info] Compiling 8 Scala sources to /media/Data/src/projects/repro/scala/target/scala-2.10/test-classes...
while compiling: /media/Data/src/projects/repro/scala/src/test/scala/CollectionOfClassesWithObjectField.scala
during phase: cleanup
library version: version 2.10.3
compiler version: version 2.10.3
reconstructed args: -classpath /media/Data/src/projects/repro/scala/target/scala-2.10/test-classes:/media/Data/src/projects/repro/scala/target/scala-2.10/classes:/home/richard/.ivy2/cache/com.chuusai/shapeless_2.10.2/bundles/shapeless_2.10.2-2.0.0-M1.jar:/home/richard/.sbt/boot/scala-2.10.3/lib/scala-compiler.jar:/home/richard/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.10.3.jar:/home/richard/.ivy2/cache/org.mockito/mockito-core/jars/mockito-core-1.9.0.jar:/home/richard/.ivy2/cache/org.hamcrest/hamcrest-core/jars/hamcrest-core-1.1.jar:/home/richard/.ivy2/cache/org.objenesis/objenesis/jars/objenesis-1.0.jar:/home/richard/.ivy2/cache/org.scalatest/scalatest_2.10/jars/scalatest_2.10-1.9.1.jar:/home/richard/.ivy2/cache/org.scala-lang/scala-actors/jars/scala-actors-2.10.0.jar:/home/richard/.ivy2/cache/com.novocode/junit-interface/jars/junit-interface-0.8.jar:/home/richard/.ivy2/cache/junit/junit/jars/junit-4.8.2.jar:/home/richard/.ivy2/cache/org.scala-tools.testing/test-interface/jars/test-interface-0.5.jar:/home/richard/.ivy2/cache/com.typesafe.akka/akka-actor/jars/akka-actor-2.0.5.jar:/home/richard/.ivy2/cache/com.typesafe/config/bundles/config-0.3.1.jar -bootclasspath /usr/lib/jvm/jdk1.7.0_21/jre/lib/resources.jar:/usr/lib/jvm/jdk1.7.0_21/jre/lib/rt.jar:/usr/lib/jvm/jdk1.7.0_21/jre/lib/sunrsasign.jar:/usr/lib/jvm/jdk1.7.0_21/jre/lib/jsse.jar:/usr/lib/jvm/jdk1.7.0_21/jre/lib/jce.jar:/usr/lib/jvm/jdk1.7.0_21/jre/lib/charsets.jar:/usr/lib/jvm/jdk1.7.0_21/jre/lib/jfr.jar:/usr/lib/jvm/jdk1.7.0_21/jre/classes:/home/richard/.sbt/boot/scala-2.10.3/lib/scala-library.jar -d /media/Data/src/projects/repro/scala/target/scala-2.10/test-classes
last tree to typer: Assign
symbol: null
symbol definition: null
tpe: Unit
symbol owners:
context owners: anonymous class anonfun$1 -> package <empty>
== Enclosing template or block ==
Template( // val <local $anonfun>: <notype>, tree.tpe=anonfun$1
"scala.runtime.AbstractFunction1", "scala.Serializable" // parents
ValDef(
private <lifted>
"_"
<tpt>
<empty>
)
// 3 statements
DefDef( // final def apply(x$1: CollectionOfClassesWithObjectField$SO$Foo): Object
<method> final <triedcooking>
"apply"
[]
// 1 parameter list
ValDef( // x$1: CollectionOfClassesWithObjectField$SO$Foo
<param> <synthetic> <triedcooking>
"x$1"
<tpt> // tree.tpe=CollectionOfClassesWithObjectField$SO$Foo
<empty>
)
<tpt> // tree.tpe=Object
ApplyDynamic( // val bar: Object, tree.tpe=AnyRef
"x$1" // x$1: CollectionOfClassesWithObjectField$SO$Foo, tree.tpe=CollectionOfClassesWithObjectField$SO$Foo
Nil
)
)
DefDef( // final def apply(v1: Object): Object
<method> final <bridge>
"apply"
[]
// 1 parameter list
ValDef( // v1: Object
<param> <triedcooking>
"v1"
<tpt> // tree.tpe=Object
<empty>
)
<tpt> // tree.tpe=Object
Apply( // final def apply(x$1: CollectionOfClassesWithObjectField$SO$Foo): Object, tree.tpe=Object
CollectionOfClassesWithObjectField$SO$$anonfun$1.this."apply" // final def apply(x$1: CollectionOfClassesWithObjectField$SO$Foo): Object, tree.tpe=(x$1: CollectionOfClassesWithObjectField$SO$Foo)Object
Apply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=CollectionOfClassesWithObjectField$SO$Foo
TypeApply( // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=()CollectionOfClassesWithObjectField$SO$Foo
"v1"."$asInstanceOf" // final def $asInstanceOf[T0 >: ? <: ?](): T0 in class Object, tree.tpe=[T0 >: ? <: ?]()T0
<tpt> // tree.tpe=CollectionOfClassesWithObjectField$SO$Foo
)
Nil
)
)
)
DefDef( // def <init>(arg$outer: CollectionOfClassesWithObjectField$SO): anonfun$1
<method> <triedcooking>
"<init>"
[]
// 1 parameter list
ValDef( // $outer: CollectionOfClassesWithObjectField$SO
<param>
"$outer"
<tpt> // tree.tpe=CollectionOfClassesWithObjectField$SO
<empty>
)
<tpt> // tree.tpe=anonfun$1
Block( // tree.tpe=Unit
Apply( // def <init>(): scala.runtime.AbstractFunction1 in class AbstractFunction1, tree.tpe=scala.runtime.AbstractFunction1
CollectionOfClassesWithObjectField$SO$$anonfun$1.super."<init>" // def <init>(): scala.runtime.AbstractFunction1 in class AbstractFunction1, tree.tpe=()scala.runtime.AbstractFunction1
Nil
)
()
)
)
)
== Expanded type of tree ==
TypeRef(TypeSymbol(final abstract class Unit extends ))
unhandled exception while transforming CollectionOfClassesWithObjectField.scala
{{block}}
Callstack:
{{block}}
uncaught exception during compilation: scala.MatchError
scala.MatchError: Object (of class scala.reflect.internal.Types$TypeRef$$anon$6)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transformApplyDynamic(CleanUp.scala:454)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:546)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:26)
at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:646)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:26)
at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
at scala.collection.immutable.List.loop$1(List.scala:170)
at scala.collection.immutable.List.mapConserve(List.scala:186)
at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.scala$tools$nsc$transform$CleanUp$CleanUpTransformer$$transformTemplate(CleanUp.scala:51)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:559)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:26)
at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:646)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:26)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
at scala.collection.immutable.List.loop$1(List.scala:170)
at scala.collection.immutable.List.mapConserve(List.scala:186)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:646)
at scala.tools.nsc.transform.CleanUp$CleanUpTransformer.transform(CleanUp.scala:26)
at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:90)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:72)
at xsbt.CompilerInterface.run(CompilerInterface.scala:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:73)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:35)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:29)
at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile$$anonfun$4$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:101)
at sbt.compiler.AggressiveCompile$$anonfun$4.compileScala$1(AggressiveCompile.scala:70)
at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:88)
at sbt.compiler.AggressiveCompile$$anonfun$4.apply(AggressiveCompile.scala:60)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:24)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:22)
at sbt.inc.Incremental$.cycle(Incremental.scala:39)
at sbt.inc.Incremental$.compile(Incremental.scala:26)
at sbt.inc.IncrementalCompile$.apply(Compile.scala:20)
at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:96)
at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:44)
at sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:31)
at sbt.Compiler$.apply(Compiler.scala:79)
at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:571)
at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:571)
at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578)
at sbt.Scoped$$anonfun$hf2$1.apply(Structure.scala:578)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:49)
at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
at sbt.Scoped$Reduced$$anonfun$combine$1$$anonfun$apply$12.apply(Structure.scala:311)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
at sbt.std.Transform$$anon$5.work(System.scala:71)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:232)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:238)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:232)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
compiler crashfixed in Scala 3This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)lubshould compiletyper