diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/neg/variances-constr.scala | 26 | ||||
-rw-r--r-- | tests/pos-special/variances-constr.scala | 21 |
2 files changed, 47 insertions, 0 deletions
diff --git a/tests/neg/variances-constr.scala b/tests/neg/variances-constr.scala new file mode 100644 index 000000000..a5259c4da --- /dev/null +++ b/tests/neg/variances-constr.scala @@ -0,0 +1,26 @@ +class C[+A] { + + private[this] var y: A = _ + def getY: A = y + + class Inner(x: A) { // error A appears contravariantly + y = x + } + class Inner2[B <: A](x: B) { // error A appears contravariantly + y = x + } +} + +object Test { + + def main(args: Array[String]) = { + val x = new C[String] + val y: C[Any] = x + val i = new y.Inner(1) + val s: String = x.getY + val i2 = new y.Inner2(1) + val s2: String = x.getY + println(s) + } +} + diff --git a/tests/pos-special/variances-constr.scala b/tests/pos-special/variances-constr.scala new file mode 100644 index 000000000..b210b0440 --- /dev/null +++ b/tests/pos-special/variances-constr.scala @@ -0,0 +1,21 @@ +class C[+A] { + + private[this] var y: A = _ + def getY: A = y + + class Inner(x: A) { + y = x + } +} + +object Test { + + def main(args: Array[String]) = { + val x = new C[String] + val y: C[Any] = x + val i = new y.Inner(1) + val s: String = x.getY + println(s) + } +} + |