diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/implicits.check | 8 | ||||
-rwxr-xr-x | test/files/neg/implicits.scala | 22 | ||||
-rw-r--r-- | test/files/pos/bug851.scala | 28 |
3 files changed, 58 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) +} diff --git a/test/files/pos/bug851.scala b/test/files/pos/bug851.scala new file mode 100644 index 0000000000..afe4b79d3c --- /dev/null +++ b/test/files/pos/bug851.scala @@ -0,0 +1,28 @@ +object test { + def ok1: String = { + val x = 1 + """ok1""" + } + def ok2: String = { + val x = "0".length + """ok2""" + } + def ok3: String = { + val x = "0".length + """ok3 + """// + } + def ok4: String = { + val x = "0".length + """ok4 + """ + x + } + def bad: String = { + val x = "0".length + """bad + """ + } + def main(args: Array[String]) { + Console.println(ok1 + ok2 + ok3 + ok4 + bad) + } +} |