aboutsummaryrefslogtreecommitdiff
path: root/tests/run/t3048.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-07-27 14:44:40 +0200
committerMartin Odersky <odersky@gmail.com>2016-07-27 14:44:40 +0200
commit2af7ea0c44b4d274503921911d80a5c7baab06ab (patch)
treed4ebc64fe673f427e8784d1c2103f732e32179a9 /tests/run/t3048.scala
parent2e725908c3bd340daf140906885fdb43fba13a0f (diff)
downloaddotty-2af7ea0c44b4d274503921911d80a5c7baab06ab.tar.gz
dotty-2af7ea0c44b4d274503921911d80a5c7baab06ab.tar.bz2
dotty-2af7ea0c44b4d274503921911d80a5c7baab06ab.zip
Move test from pos to run
Test generated code before but fails with verify error at runtime. Here's the message: Exception in thread "main" java.lang.VerifyError: Bad type on operand stack Exception Details: Location: D$.<init>()V @2: invokedynamic Reason: Type uninitializedThis (current frame, stack[1]) is not assignable to 'D$' Current Frame: bci: @2 flags: { flagThisUninit } locals: { uninitializedThis } stack: { uninitializedThis, uninitializedThis } Bytecode: 0x0000000: 2a2a ba00 1f00 00b7 0022 2ab3 0024 b1 at Test$.main(t3048.scala:13) at Test.main(t3048.scala) With the fix in last commit, test causes backend to crash with java.lang.AssertionError: assertion failed: val <none> at scala.Predef$.assert(Predef.scala:165) at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.assertClassNotArray(BCodeHelpers.scala:214) at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.assertClassNotArrayNotPrimitive(BCodeHelpers.scala:219) at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.getClassBTypeAndRegisterInnerClass(BCodeHelpers.scala:238) at scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.getClassBTypeAndRegisterInnerClass(BCodeSkelBuilder.scala:51) at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.internalName(BCodeHelpers.scala:210)
Diffstat (limited to 'tests/run/t3048.scala')
-rw-r--r--tests/run/t3048.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/run/t3048.scala b/tests/run/t3048.scala
new file mode 100644
index 000000000..8762047af
--- /dev/null
+++ b/tests/run/t3048.scala
@@ -0,0 +1,17 @@
+class B
+object C extends B
+
+class F[T <: B](cons: => T) {
+ def f = cons
+}
+class F2[T <: B](cons: => T) extends F(cons)
+
+object D extends F2(C) // works
+object E extends F2(new B {})
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ D.f
+ E.f
+ }
+}