diff options
author | Paul Phillips <paulp@improving.org> | 2013-02-12 13:09:32 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-02-12 13:09:32 -0800 |
commit | 14048023a1deba540502da96663deca6ca226bf6 (patch) | |
tree | 7fae2e6a9c5b64c7c8f33133183cfb786ceb709f /test | |
parent | d45fe5ebeeb22ce611429560d48294ca2615d296 (diff) | |
parent | c26cc531f655cfa5b27ffb8ab25adc7ffb97aa71 (diff) | |
download | scala-14048023a1deba540502da96663deca6ca226bf6.tar.gz scala-14048023a1deba540502da96663deca6ca226bf6.tar.bz2 scala-14048023a1deba540502da96663deca6ca226bf6.zip |
Merge pull request #2057 from paulp/pr/revert-6355
SI-6355, weakend implementation restriction on applyDynamic.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t6355.check | 7 | ||||
-rw-r--r-- | test/files/neg/t6355.scala | 6 | ||||
-rw-r--r-- | test/files/pos/t6355pos.scala | 16 |
3 files changed, 27 insertions, 2 deletions
diff --git a/test/files/neg/t6355.check b/test/files/neg/t6355.check index c1fa147f52..607829d99a 100644 --- a/test/files/neg/t6355.check +++ b/test/files/neg/t6355.check @@ -1,4 +1,7 @@ -t6355.scala:12: error: implementation restriction: applyDynamic cannot be overloaded +t6355.scala:12: error: implementation restriction: applyDynamic cannot be overloaded except by methods with different numbers of type parameters, e.g. applyDynamic[T1](method: String)(arg: T1) and applyDynamic[T1, T2](method: String)(arg1: T1, arg2: T2) def applyDynamic(name: String)(x: Int): Int = 2 ^ -one error found +t6355.scala:18: error: implementation restriction: applyDynamic cannot be overloaded except by methods with different numbers of type parameters, e.g. applyDynamic[T1](method: String)(arg: T1) and applyDynamic[T1, T2](method: String)(arg1: T1, arg2: T2) + def applyDynamic[T1, T2](name: String)(x: String, y: T1, z: T2): Int = 3 + ^ +two errors found 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 +} diff --git a/test/files/pos/t6355pos.scala b/test/files/pos/t6355pos.scala new file mode 100644 index 0000000000..c0e740dd68 --- /dev/null +++ b/test/files/pos/t6355pos.scala @@ -0,0 +1,16 @@ +import scala.language.dynamics + +class A extends Dynamic { + def applyDynamic[T1](method: String)(x1: T1): Any = 1 + def applyDynamic[T1, T2](method: String)(x: T1, y: T2): Any = 2 + def applyDynamic[T1, T2, T3](method: String)(x: T1, y: T2, z: T3): Any = 3 +} + +object Test { + def main(args: Array[String]): Unit = { + val x = new A + println(x[Int](5)) + println(x[Int, String](5, "a")) + println(x[Int, String, Int](5, "a", 5)) + } +} |