diff options
author | Simon Ochsenreither <simon@ochsenreither.de> | 2011-12-02 03:48:44 +0100 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-12-02 05:56:42 -0800 |
commit | 6ecca6d2b56918c202627bf95c40f3b7465bb808 (patch) | |
tree | 05682f3abcc147a1577f3a76d33d3297bc726383 /test | |
parent | 947797ea23d711e501605c0cc218fec88e3b97ef (diff) | |
download | scala-6ecca6d2b56918c202627bf95c40f3b7465bb808.tar.gz scala-6ecca6d2b56918c202627bf95c40f3b7465bb808.tar.bz2 scala-6ecca6d2b56918c202627bf95c40f3b7465bb808.zip |
Tests for SI-3481.
Closes SI-3481.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t3481.check | 29 | ||||
-rw-r--r-- | test/files/neg/t3481.scala | 28 |
2 files changed, 57 insertions, 0 deletions
diff --git a/test/files/neg/t3481.check b/test/files/neg/t3481.check new file mode 100644 index 0000000000..48e6ff357b --- /dev/null +++ b/test/files/neg/t3481.check @@ -0,0 +1,29 @@ +t3481.scala:5: error: type mismatch; + found : String("hello") + required: _$1 where type +_$1 + f[A[Int]]("hello") + ^ +t3481.scala:11: error: type mismatch; + found : _$2 where type +_$2 + required: b.T + (which expands to) _$2 + def f[T <: B[_]](a: T#T, b: T) = b.m(a) + ^ +t3481.scala:12: error: type mismatch; + found : String("Hello") + required: _$2 where type +_$2 + f("Hello", new B[Int]) + ^ +t3481.scala:18: error: type mismatch; + found : String("Hello") + required: t3481.ex3.b.T2 + (which expands to) _$3 + b.m("Hello") + ^ +t3481.scala:25: error: type mismatch; + found : String("Hello") + required: t3481.ex4.Test.b.T2 + (which expands to) _$4 + b.m("Hello") + ^ +5 errors found diff --git a/test/files/neg/t3481.scala b/test/files/neg/t3481.scala new file mode 100644 index 0000000000..f4b781ee37 --- /dev/null +++ b/test/files/neg/t3481.scala @@ -0,0 +1,28 @@ +object t3481 { + object ex1 { + trait A[T] { type B = T } + def f[T <: A[_]](a: T#B) = 1 + f[A[Int]]("hello") + } + + object ex2 { + trait A { type T; def m(t: T) = t.toString } + class B[T2] extends A { type T = T2 } + def f[T <: B[_]](a: T#T, b: T) = b.m(a) + f("Hello", new B[Int]) + } + + object ex3 { + class B[T] { type T2 = T; def m(t: T2) = t.toString } + val b: B[_] = new B[Int] + b.m("Hello") + } + + object ex4 { + abstract class B[T] { type T2 = T; def m(t: T2): Any } + object Test { + val b: B[_] = sys.error("") + b.m("Hello") + } + } +}
\ No newline at end of file |