summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-05-11 07:52:27 -0700
committerPaul Phillips <paulp@improving.org>2012-05-23 08:43:10 -0700
commit402b5e4a1341ef4549b7e0979f9c5afc06f47315 (patch)
tree0ec0f5dbd51874d9ed9d4676451d553474eb8fd1 /test/files
parent0d7952f90fc11f4dc055a2658b16b7183f1d6683 (diff)
downloadscala-402b5e4a1341ef4549b7e0979f9c5afc06f47315.tar.gz
scala-402b5e4a1341ef4549b7e0979f9c5afc06f47315.tar.bz2
scala-402b5e4a1341ef4549b7e0979f9c5afc06f47315.zip
Pending and passing tests.
Move now-passing SI-963 test into neg. Test for partial specialization. Pending test for SI-5008. Pending test for SI-4649. Abstract array type test.
Diffstat (limited to 'test/files')
-rw-r--r--test/files/neg/t963b.check6
-rw-r--r--test/files/neg/t963b.scala26
-rw-r--r--test/files/pos/arrays3.scala11
3 files changed, 43 insertions, 0 deletions
diff --git a/test/files/neg/t963b.check b/test/files/neg/t963b.check
new file mode 100644
index 0000000000..9918a98c46
--- /dev/null
+++ b/test/files/neg/t963b.check
@@ -0,0 +1,6 @@
+t963b.scala:25: error: type mismatch;
+ found : B.type
+ required: AnyRef{val y: A}
+ B.f(B)
+ ^
+one error found
diff --git a/test/files/neg/t963b.scala b/test/files/neg/t963b.scala
new file mode 100644
index 0000000000..b34aae8095
--- /dev/null
+++ b/test/files/neg/t963b.scala
@@ -0,0 +1,26 @@
+// Soundness bug, at #963 and dup at #2079.
+trait A {
+ type T
+ var v : T
+}
+
+object B {
+ def f(x : { val y : A }) { x.y.v = x.y.v }
+
+ var a : A = _
+ var b : Boolean = false
+ def y : A = {
+ if(b) {
+ a = new A { type T = Int; var v = 1 }
+ a
+ } else {
+ a = new A { type T = String; var v = "" }
+ b = true
+ a
+ }
+ }
+}
+
+object Test extends App {
+ B.f(B)
+}
diff --git a/test/files/pos/arrays3.scala b/test/files/pos/arrays3.scala
new file mode 100644
index 0000000000..f96be0b427
--- /dev/null
+++ b/test/files/pos/arrays3.scala
@@ -0,0 +1,11 @@
+trait Foo {
+ type Repr <: String
+ def f2(x: Repr) = x.length
+}
+trait Fooz[Repr <: Array[_]] {
+ def f0(x: Repr) = x.length
+}
+
+trait Bar[Repr <: List[_]] extends Foo with Fooz[Array[Int]] {
+ def f1(x: Repr) = x.length
+}