summaryrefslogtreecommitdiff
path: root/src/library/scala/Dynamic.scala
diff options
context:
space:
mode:
authorDominik Gruntz <dominik.gruntz@fhnw.ch>2012-05-02 17:21:39 +0200
committerDominik Gruntz <dominik.gruntz@fhnw.ch>2012-05-02 17:21:39 +0200
commite4ccaa99f139a72fc02424bcaa5cfdc3f75f8f82 (patch)
treefc62a6a3cf4217a1dade145589956feb8a7cdd8c /src/library/scala/Dynamic.scala
parent90d2bee45b25844f809f8c5300aefcb1bfe9e336 (diff)
downloadscala-e4ccaa99f139a72fc02424bcaa5cfdc3f75f8f82.tar.gz
scala-e4ccaa99f139a72fc02424bcaa5cfdc3f75f8f82.tar.bz2
scala-e4ccaa99f139a72fc02424bcaa5cfdc3f75f8f82.zip
Changes scaladoc of trait Dynamic
Diffstat (limited to 'src/library/scala/Dynamic.scala')
-rw-r--r--src/library/scala/Dynamic.scala23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/library/scala/Dynamic.scala b/src/library/scala/Dynamic.scala
index dcf7599742..faf834d310 100644
--- a/src/library/scala/Dynamic.scala
+++ b/src/library/scala/Dynamic.scala
@@ -9,12 +9,25 @@
package scala
/** A marker trait that enables dynamic invocations. Instances `x` of this
- * trait allow calls `x.meth(args)` for arbitrary method names `meth` and
- * argument lists `args`. If a call is not natively supported by `x`, it
- * is rewritten to `x.applyDynamic("meth")(args)`.
+ * trait allow method invocations `x.meth(args)` for arbitrary method
+ * names `meth` and argument lists `args` as well as field accesses
+ * `x.field` for arbitrary field names `field`.
*
- * As of scala 2.9, `scalac` must receive the `-Xexperimental` option for
- * `Dynamic` to receive this treatment.
+ * If a call is not natively supported by `x` (i.e. if type checking
+ * fails), it is rewritten according to the following rules:
+ *
+ * {{{
+ * foo.method("blah") ~~> foo.applyDynamic("method")("blah")
+ * foo.method(x = "blah") ~~> foo.applyDynamicNamed("method")(("x", "blah"))
+ * foo.method(x = 1, 2) ~~> foo.applyDynamicNamed("method")(("x", 1), ("", 2))
+ * foo.field ~~> foo.selectDynamic("field")
+ * foo.varia = 10 ~~> foo.updateDynamic("varia")(10)
+ * foo.arr(10) = 13 ~~> foo.selectDynamic("arr").update(10, 13)
+ * foo.arr(10) ~~> foo.applyDynamics("arr")(10)
+ * }}}
+ *
+ * As of Scala 2.10, defining direct or indirect subclasses of this trait
+ * is only possible if the language feature `dynamics` is enabled.
*/
trait Dynamic