summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test-nsc/files/neg/variances.check4
-rw-r--r--test-nsc/files/neg/variances.scala4
-rw-r--r--test-nsc/files/pos/variances.scala8
3 files changed, 16 insertions, 0 deletions
diff --git a/test-nsc/files/neg/variances.check b/test-nsc/files/neg/variances.check
new file mode 100644
index 0000000000..6f161c18c6
--- /dev/null
+++ b/test-nsc/files/neg/variances.check
@@ -0,0 +1,4 @@
+variances.scala:2 error: covariant type a occurs in contravariant position in type Vector[a] of value x
+ def append(x: Vector[a]): Vector[a]
+ ^
+one error found
diff --git a/test-nsc/files/neg/variances.scala b/test-nsc/files/neg/variances.scala
new file mode 100644
index 0000000000..ebcba21611
--- /dev/null
+++ b/test-nsc/files/neg/variances.scala
@@ -0,0 +1,4 @@
+trait Vector[+a] {
+ def append(x: Vector[a]): Vector[a]
+}
+
diff --git a/test-nsc/files/pos/variances.scala b/test-nsc/files/pos/variances.scala
new file mode 100644
index 0000000000..7dc56b0225
--- /dev/null
+++ b/test-nsc/files/pos/variances.scala
@@ -0,0 +1,8 @@
+abstract class P[+a, +b] { // SLS, Example 4.4.2
+ def fst: a;
+ def snd: b
+}
+
+trait Vector[+a] { // SLS, Example 4.4.3 b)
+ def append[b >: a](x: Vector[b]): Vector[b]
+}