summaryrefslogtreecommitdiff
path: root/test/files/run/dynamic-anyval.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-09-03 15:19:47 -0700
committerPaul Phillips <paulp@improving.org>2012-09-03 15:24:21 -0700
commit24a54107f3e3e72a079ebe7e425671e3307d1237 (patch)
tree00f90500df39c1434e7e9ea8c9489b6b4bfc3617 /test/files/run/dynamic-anyval.scala
parent5415272018114bb2e15036c5d6f9ae9c5af625d2 (diff)
downloadscala-24a54107f3e3e72a079ebe7e425671e3307d1237.tar.gz
scala-24a54107f3e3e72a079ebe7e425671e3307d1237.tar.bz2
scala-24a54107f3e3e72a079ebe7e425671e3307d1237.zip
Made Dynamic extend Any.
So it can be used in value classes.
Diffstat (limited to 'test/files/run/dynamic-anyval.scala')
-rw-r--r--test/files/run/dynamic-anyval.scala22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/files/run/dynamic-anyval.scala b/test/files/run/dynamic-anyval.scala
new file mode 100644
index 0000000000..605503d377
--- /dev/null
+++ b/test/files/run/dynamic-anyval.scala
@@ -0,0 +1,22 @@
+import scala.language.dynamics
+
+object Test {
+ implicit class DynamicValue[T](val value: T) extends AnyVal with Dynamic {
+ def applyDynamic(name: String)(args: Any*) = println(s"""$this.$name(${args mkString ", "})""")
+ override def toString = "" + value
+ }
+ implicit class DynamicValue2[T](val value: T) extends Dynamic {
+ def applyDynamic(name: String)(args: Any*) = println(s"""$this.$name(${args mkString ", "})""")
+ override def toString = "" + value
+ }
+
+ def f[T](x: DynamicValue[T]) = x.dingo("bippy", 5)
+ def g[T](x: DynamicValue2[T]) = x.dingo("bippy", 5)
+
+ def main(args: Array[String]): Unit = {
+ f(())
+ f(List(1, 2, 3))
+ g(())
+ g(List(1, 2, 3))
+ }
+}