diff options
author | Paul Phillips <paulp@improving.org> | 2011-06-27 17:16:01 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-06-27 17:16:01 +0000 |
commit | 77c01a9baca66c1a5a099318d403dbedbe4feeeb (patch) | |
tree | 6ee2cd41fae1d25794fd16256d686dcfe30c846b /test | |
parent | 94a00c31680623cd2793b0db87c2bcfac10c9563 (diff) | |
download | scala-77c01a9baca66c1a5a099318d403dbedbe4feeeb.tar.gz scala-77c01a9baca66c1a5a099318d403dbedbe4feeeb.tar.bz2 scala-77c01a9baca66c1a5a099318d403dbedbe4feeeb.zip |
Don't infer anonymous classes.
possible, just far enough to avoid all kinds of undesirable consequences
which accompany the preservation of too much type information. (The
problems are akin to inferring the singleton type too freely.)
// Example of code which did not compile, but now does class A class
B[T <: A](cons: T)
object C extends B(new A {})
Closes #4110, #3048. I already ran this by moors, so review by odersky.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/jvm/manifests.check | 2 | ||||
-rw-r--r-- | test/files/pos/bug3048.scala | 8 | ||||
-rw-r--r-- | test/files/run/bug4110.check | 2 | ||||
-rw-r--r-- | test/files/run/bug4110.scala | 11 |
4 files changed, 22 insertions, 1 deletions
diff --git a/test/files/jvm/manifests.check b/test/files/jvm/manifests.check index 3b8ca5b5b1..54f504b929 100644 --- a/test/files/jvm/manifests.check +++ b/test/files/jvm/manifests.check @@ -29,7 +29,7 @@ x=Foo, m=Foo[scala.collection.immutable.List[Int]] x=Foo, m=Foo[Foo[Int]] x=Foo, m=Foo[scala.collection.immutable.List[Foo[Int]]] -x=Test1$$anon$1, m=Test1$$anon$1 +x=Test1$$anon$1, m=Object with Bar[java.lang.String] ()=() true=true diff --git a/test/files/pos/bug3048.scala b/test/files/pos/bug3048.scala new file mode 100644 index 0000000000..dc056ecba2 --- /dev/null +++ b/test/files/pos/bug3048.scala @@ -0,0 +1,8 @@ +class B +object C extends B + +class F[T <: B](cons: => T) +class F2[T <: B](cons: => T) extends F(cons) + +object D extends F2(C) // works +object E extends F2(new B {}) diff --git a/test/files/run/bug4110.check b/test/files/run/bug4110.check new file mode 100644 index 0000000000..8b005989de --- /dev/null +++ b/test/files/run/bug4110.check @@ -0,0 +1,2 @@ +Object with Test$A with Test$B +Object with Test$A with Test$B diff --git a/test/files/run/bug4110.scala b/test/files/run/bug4110.scala new file mode 100644 index 0000000000..a42646ce52 --- /dev/null +++ b/test/files/run/bug4110.scala @@ -0,0 +1,11 @@ +object Test extends App { + def inferredType[T : Manifest](v : T) = println(manifest[T]) + + trait A + trait B + + inferredType(new A with B) + + val name = new A with B + inferredType(name) +}
\ No newline at end of file |