You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Jason Winnebeck (JIRA)" <ji...@apache.org> on 2016/10/04 19:30:22 UTC
[jira] [Commented] (GROOVY-7957) Allow static compilation of
builders that implement methodMissing / propertyMissing
[ https://issues.apache.org/jira/browse/GROOVY-7957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15546397#comment-15546397 ]
Jason Winnebeck commented on GROOVY-7957:
-----------------------------------------
It would be interesting if Groovy had this, because this is one of the few cases where I don't use {{@CompileStatic}} is when building XML/JSON/HTML/etc., but it would be nice to support static compilation (type checking, really) for the other classes -- most of the time the builder code is binding from known types onto another document so you have dynamic calls on one side with potentially static getter calls on the other.
> Allow static compilation of builders that implement methodMissing / propertyMissing
> -----------------------------------------------------------------------------------
>
> Key: GROOVY-7957
> URL: https://issues.apache.org/jira/browse/GROOVY-7957
> Project: Groovy
> Issue Type: New Feature
> Components: GEP
> Reporter: Graeme Rocher
>
> Similar to Scala's {{Dynamic}} http://www.scala-lang.org/api/current/index.html#scala.Dynamic
> We should be able to write builders that are usable from statically compiled code. To achieve this I recommend the following:
> {code}
> // if the object implements methodMissing dispatch to it
> foo.bar("blah") ~~> foo.methodMissing("bar", "blah")
> // if the object implements propertyMissing dispatch to it
> foo.var1 ~~> foo.propertyMissing("var1")
> // if the object implements propertyMissing dispatch to it
> foo.var1 = 10 ~~> foo.propertyMissing("var1", 10)
> {code}
> When combined with GROOVY-7956 it would then be possibly to fully implement builders that are compatible with {{@CompileStatic}} and certain existing builders could be enhanced to take advantage of this feature {{JsonBuilder}}, {{MarkupBuilder}} etc.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)