diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-11-25 13:23:19 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-11-25 13:23:19 -0800 |
commit | aa817c24e6ffd53b43372e1b47702c29f5933b13 (patch) | |
tree | 609543c5a87a832b4438eac6fd8633ddae3f5ec2 /test/files/run | |
parent | c78d77c2b4b1927ce23314210a82b12046b47b01 (diff) | |
parent | cd1bf7890c742a899e31e3c66487a633170e41ca (diff) | |
download | scala-aa817c24e6ffd53b43372e1b47702c29f5933b13.tar.gz scala-aa817c24e6ffd53b43372e1b47702c29f5933b13.tar.bz2 scala-aa817c24e6ffd53b43372e1b47702c29f5933b13.zip |
Merge pull request #1643 from retronym/ticket/6677
SI-6677 Insert required cast in `new qual.foo.T`
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/t6677.scala | 28 | ||||
-rw-r--r-- | test/files/run/t6677b.scala | 33 |
2 files changed, 61 insertions, 0 deletions
diff --git a/test/files/run/t6677.scala b/test/files/run/t6677.scala new file mode 100644 index 0000000000..e6eaf6a498 --- /dev/null +++ b/test/files/run/t6677.scala @@ -0,0 +1,28 @@ + +class Test { + val cm: reflect.runtime.universe.Mirror = reflect.runtime.currentMirror + def error { + new cm.universe.Traverser // java.lang.VerifyError: (class: Test, method: error signature: ()V) Incompatible object argument for function call + + } + + def okay1 { + val cm: reflect.runtime.universe.Mirror = reflect.runtime.currentMirror + + new cm.universe.Traverser + } + + def okay2 { + val cm: reflect.runtime.universe.Mirror = reflect.runtime.currentMirror + val u: reflect.runtime.universe.type = cm.universe + new u.Traverser + } +} + +object Test { + def main(args: Array[String]) { + new Test().error + new Test().okay1 + new Test().okay2 + } +} diff --git a/test/files/run/t6677b.scala b/test/files/run/t6677b.scala new file mode 100644 index 0000000000..e4fe5e3722 --- /dev/null +++ b/test/files/run/t6677b.scala @@ -0,0 +1,33 @@ +trait U { + trait U1 { + class X + } + type U11 <: U1 + val u : U11 = null.asInstanceOf[U11] +} +trait A extends U + +trait B extends U { + def foo = "" + class U11 extends U1 { class X extends super.X { foo } } // refer to foo to add $outer pointer + override val u = new U11 +} +class C { + val ab: A with B = new A with B // `B with A` works. + + def foo { + // fails + new ab.u.X + + // works: + val u = ab.u + new u.X + } +} +object Test { + def main(args: Array[String]) { + // java.lang.NoSuchMethodError: A.u()LB$U11; + // at C.foo(t6677b.scala:23) + new C().foo + } +} |