summaryrefslogtreecommitdiff
path: root/test/files/neg
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/neg')
-rw-r--r--test/files/neg/implicits.check8
-rwxr-xr-xtest/files/neg/implicits.scala22
2 files changed, 30 insertions, 0 deletions
diff --git a/test/files/neg/implicits.check b/test/files/neg/implicits.check
new file mode 100644
index 0000000000..d1bbd2b3f0
--- /dev/null
+++ b/test/files/neg/implicits.check
@@ -0,0 +1,8 @@
+implicits.scala:21 error: ambiguous implicit value:
+ most specific definition is: method pos2int in object Super of type (Pos)scala.Int
+ yet alternative definition method any2plus in object Sub of type (scala.Any)Sub.Plus
+ is defined in a subclass.
+ Both definitions are possible conversion functions from Pos to ?{val +: ?}
+ f(p+1)
+ ^
+one error found
diff --git a/test/files/neg/implicits.scala b/test/files/neg/implicits.scala
new file mode 100755
index 0000000000..710ffc94fc
--- /dev/null
+++ b/test/files/neg/implicits.scala
@@ -0,0 +1,22 @@
+class Pos
+
+class Super
+
+object Super {
+ implicit def pos2int(p: Pos): int = 0
+}
+
+object Sub extends Super {
+ class Plus(x: Any) {
+ def +(y: String): String = x.toString + y
+ }
+ implicit def any2plus(x: Any): Plus = new Plus(x)
+}
+
+object Test {
+ import Super._
+ import Sub._
+ val p = new Pos
+ def f(x: int): int = x
+ f(p+1)
+}