diff options
author | Martin Odersky <odersky@gmail.com> | 2007-06-29 17:53:23 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-06-29 17:53:23 +0000 |
commit | a8a692413d68f752dca8f5ad7cc551a03f7f9436 (patch) | |
tree | e1bb18431fe615eaa6a65e0bd01cff2b0ab56cd6 /test/files/neg/variances.scala | |
parent | 674015b30bb6191f955548b6eff705506bf5591c (diff) | |
download | scala-a8a692413d68f752dca8f5ad7cc551a03f7f9436.tar.gz scala-a8a692413d68f752dca8f5ad7cc551a03f7f9436.tar.bz2 scala-a8a692413d68f752dca8f5ad7cc551a03f7f9436.zip |
fixed bug1170
Diffstat (limited to 'test/files/neg/variances.scala')
-rw-r--r-- | test/files/neg/variances.scala | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/files/neg/variances.scala b/test/files/neg/variances.scala index 38d6617beb..f84ee8d5d5 100644 --- a/test/files/neg/variances.scala +++ b/test/files/neg/variances.scala @@ -1,5 +1,61 @@ +package test + trait Vector[+A] { def append(x: Vector[A]): Vector[A] private[this] def append3(x: Vector[A]): Vector[A] = append(x) } +class C[T] + +object Covariant { + class Foo[+A] { + private[this] var a : A = _ + def getA : A = a + private[this] def setA(a : A) = this.a = a + + object Baz extends C[A] + trait Convert[B] { + def b2a(b : B) : A + def doit(b : B) = setA(b2a(b)) + } + } + class Foo2[+A] { + private[this] var a : A = _ + def getA : A = a + private[this] def setA(a : A) = this.a = a + + { + trait Convert[B] { + def b2a(b : B) : A + def doit(b : B) = setA(b2a(b)) + } + () + } + } + class Foo3[+A] { + private[this] var a : A = _ + def getA : A = a + private[this] def setA(a : A) = this.a = a + + private[this] trait Convert[B] { + def b2a(b : B) : A + def doit(b : B) = setA(b2a(b)) + } + } + abstract class AbstractTest { + val a : Foo[AnyRef] + val c = new a.Convert[Int] { + def b2a(b : Int) : AnyRef = "hello" + } + val b : Int = 42 + } + class Test extends AbstractTest { + val a : Foo[Character] = new Foo[Character] + } + def main(args : Array[String]) : Unit = { + val test = new Test + test.c.doit(test.b) + val x : Character = test.a.getA + Console.println("XXX " + x) + } +} |