summaryrefslogtreecommitdiff
path: root/test/files/neg/t6355.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-02-12 11:05:14 -0800
committerPaul Phillips <paulp@improving.org>2013-02-12 11:05:14 -0800
commitc26cc531f655cfa5b27ffb8ab25adc7ffb97aa71 (patch)
tree9c3559d40b7ea6135c39085b19b6c2702e8625d2 /test/files/neg/t6355.scala
parent0c59fc9a1416cf5c45699111e8857adb03f7f0d4 (diff)
downloadscala-c26cc531f655cfa5b27ffb8ab25adc7ffb97aa71.tar.gz
scala-c26cc531f655cfa5b27ffb8ab25adc7ffb97aa71.tar.bz2
scala-c26cc531f655cfa5b27ffb8ab25adc7ffb97aa71.zip
SI-6355, weakend implementation restriction on applyDynamic.
I realized one can successfully call an overloaded applyDynamic, under conditions such as these: def applyDynamic[T1](m: String)(x1: T1): Any = 1 def applyDynamic[T1, T2](m: String)(x: T1, y: T2): Any = 2 def applyDynamic[T1, T2, T3](m: String)(x: T1, y: T2, z: T3): Any = 3 So I weakened the overloading restriction to allow overloading if each method has a distinct number of type parameters. This very likely still allows the creation of uncallable overloads, but an overly restrictive rule is worse. If the overload cannot be called, it will still be discovered at the call site.
Diffstat (limited to 'test/files/neg/t6355.scala')
-rw-r--r--test/files/neg/t6355.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/test/files/neg/t6355.scala b/test/files/neg/t6355.scala
index 3007dc49f6..0500ed04c6 100644
--- a/test/files/neg/t6355.scala
+++ b/test/files/neg/t6355.scala
@@ -11,3 +11,9 @@ class A extends Dynamic {
def applyDynamic(name: String)(s: String): Int = 1
def applyDynamic(name: String)(x: Int): Int = 2
}
+
+class B extends Dynamic {
+ def applyDynamic[T1](name: String)(x: T1): Int = 1
+ def applyDynamic[T1, T2](name: String)(x: T1, y: T2): Int = 2
+ def applyDynamic[T1, T2](name: String)(x: String, y: T1, z: T2): Int = 3
+}