A marker trait that enables dynamic invocations. Instancesx of this trait allow method invocationsx.meth(args) for arbitrary method namesmeth and argument listsargs as well as field accessesx.field for arbitrary field namesfield.
If a call is not natively supported byx (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.applyDynamic("arr")(10)Defining direct or indirect subclasses of this trait is only possible if the language featuredynamics is enabled.