summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/files/neg/t3761-overload-byname.check13
-rw-r--r--test/files/neg/t3761-overload-byname.scala13
-rw-r--r--test/files/run/t3761-overload-byname.check6
-rw-r--r--test/files/run/t3761-overload-byname.scala18
4 files changed, 49 insertions, 1 deletions
diff --git a/test/files/neg/t3761-overload-byname.check b/test/files/neg/t3761-overload-byname.check
new file mode 100644
index 0000000000..ae7d21dfa6
--- /dev/null
+++ b/test/files/neg/t3761-overload-byname.check
@@ -0,0 +1,13 @@
+t3761-overload-byname.scala:9: error: ambiguous reference to overloaded definition,
+both method m1 in object t of type (x: => Int, s: Object)Int
+and method m1 in object t of type (x: => AnyVal, s: String)Int
+match argument types (Int,String)
+ m1(1, "")
+ ^
+t3761-overload-byname.scala:11: error: ambiguous reference to overloaded definition,
+both method m2 in object t of type (x: => Int, s: Object)Int
+and method m2 in object t of type (x: => Any, s: String)Int
+match argument types (Int,String)
+ m2(1, "")
+ ^
+two errors found
diff --git a/test/files/neg/t3761-overload-byname.scala b/test/files/neg/t3761-overload-byname.scala
new file mode 100644
index 0000000000..5b9a381b93
--- /dev/null
+++ b/test/files/neg/t3761-overload-byname.scala
@@ -0,0 +1,13 @@
+object t {
+ def m1(x: => AnyVal, s: String) = 0
+ def m1(x: => Int, s: Object) = 1
+
+ def m2(x: => Any, s: String) = 0
+ def m2(x: => Int, s: Object) = 1
+
+
+ m1(1, "")
+ m1(1d, "")
+ m2(1, "")
+ m2("", "")
+}
diff --git a/test/files/run/t3761-overload-byname.check b/test/files/run/t3761-overload-byname.check
index 3a0a273e64..ab7eff0d8a 100644
--- a/test/files/run/t3761-overload-byname.check
+++ b/test/files/run/t3761-overload-byname.check
@@ -4,3 +4,9 @@ goodnight!
goodnight moon, nobody, noises everywhere
0
1
+0
+1
+0
+1
+0
+1
diff --git a/test/files/run/t3761-overload-byname.scala b/test/files/run/t3761-overload-byname.scala
index b1656c97ba..a52d866097 100644
--- a/test/files/run/t3761-overload-byname.scala
+++ b/test/files/run/t3761-overload-byname.scala
@@ -8,8 +8,18 @@ class OverTheTop {
def info1(m: =>String, args: Any*) = m +" "+ args.mkString(", ")
// @lrytz
- def m[A](x: => Int) = 0; def m[A](x: => Int, xs: Int*) = 1
+ def m[A](x: => Int) = 0; def m[A](x: => Int, xs: Int*) = 1
+
+ def m1(x: => Int, s: String) = 0
+ def m1(x: => Int, s: Object) = 1
+
+ def m2(x: => Int, s: String) = 0
+ def m2(x: => AnyVal, s: Object) = 1
+
+ def m3(x: => Int, s: String) = 0
+ def m3(x: => Any, s: Object) = 1
}
+
object Test {
def main(args: Array[String]) {
val top = new OverTheTop
@@ -19,5 +29,11 @@ object Test {
println(top.info1("goodnight", "moon", "nobody", "noises everywhere"))
println(top.m(17))
println(top.m(17,19))
+ println(top.m1(1, "two"))
+ println(top.m1(1, new Object()))
+ println(top.m2(1, ""))
+ println(top.m2(1d, ""))
+ println(top.m3(1, ""))
+ println(top.m3("", ""))
}
}