diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-01-13 15:44:11 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-01-13 15:44:11 +0000 |
commit | 28c75a82ea610fb5a61e53c0a031c2d64a399af5 (patch) | |
tree | 55a6f6aa47b7c51761753b42cda30919666645b0 /test | |
parent | 4f2bcd1af4fc12765aea7975a97357274087d392 (diff) | |
download | scala-28c75a82ea610fb5a61e53c0a031c2d64a399af5.tar.gz scala-28c75a82ea610fb5a61e53c0a031c2d64a399af5.tar.bz2 scala-28c75a82ea610fb5a61e53c0a031c2d64a399af5.zip |
closes #2421: more complete fix, now also check...
closes #2421: more complete fix, now also check validity of inferred
type arguments for expressions inferred for implicit values review by
odersky
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t2421b.check | 4 | ||||
-rw-r--r-- | test/files/neg/t2421b.scala | 17 | ||||
-rw-r--r-- | test/files/pos/t2421b.scala | 19 |
3 files changed, 40 insertions, 0 deletions
diff --git a/test/files/neg/t2421b.check b/test/files/neg/t2421b.check new file mode 100644 index 0000000000..f666a7d9d7 --- /dev/null +++ b/test/files/neg/t2421b.check @@ -0,0 +1,4 @@ +t2421b.scala:12: error: could not find implicit value for parameter aa: Test.F[Test.A] + f + ^ +one error found
\ No newline at end of file diff --git a/test/files/neg/t2421b.scala b/test/files/neg/t2421b.scala new file mode 100644 index 0000000000..d8159a8c37 --- /dev/null +++ b/test/files/neg/t2421b.scala @@ -0,0 +1,17 @@ +object Test { + class A + class B + class C + class F[X] + + def f(implicit aa: F[A]) = println(aa) + + // implicit def a : F[A] = new F[A]() + implicit def b[X <: B] = new F[X]() + + f +} + +/* bug: +error: type arguments [Test2.A] do not conform to method b's type parameter bounds [X <: Test2.B] +*/
\ No newline at end of file diff --git a/test/files/pos/t2421b.scala b/test/files/pos/t2421b.scala new file mode 100644 index 0000000000..0df3461662 --- /dev/null +++ b/test/files/pos/t2421b.scala @@ -0,0 +1,19 @@ +object Test { + class A + class B + class C + class F[X] + + def f(implicit aa: F[A]) = println(aa) + + implicit def a : F[A] = new F[A]() + implicit def b[X <: B] = new F[X]() + + f +} +/* bug: +error: ambiguous implicit values: + both method b in object Test1 of type [X <: Test1.B]Test1.F[X] + and method a in object Test1 of type => Test1.F[Test1.A] + match expected type Test1.F[Test1.A] +*/ |