groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Winnebeck (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GROOVY-7956) Allow @DelegatesTo on named arguments
Date Fri, 07 Oct 2016 02:32:20 GMT

    [ https://issues.apache.org/jira/browse/GROOVY-7956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15553902#comment-15553902
] 

Jason Winnebeck commented on GROOVY-7956:
-----------------------------------------

Having the {{@MapArguments}} as a parameter annotation allows multiple transformations, if
not considered over-engineering. But, maybe it's possible to have the annotation work on method
(picking first parameter) or parameters (if you have more than one), especially since multiple
mapped objects would probably be very rare

> Allow @DelegatesTo on named arguments
> -------------------------------------
>
>                 Key: GROOVY-7956
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7956
>             Project: Groovy
>          Issue Type: New Feature
>          Components: GEP
>            Reporter: Graeme Rocher
>
> In order to aid static compilation for builders we have {{@DelegatesTo}} which allows
statically compiled code to know what the delegate of a closure is.
> This proposal is to allow {{@DelegatesTo}} on {{Map}} types such that IDEs and the static
compiler can resolve the target type the named arguments are to be used on.
> For example:
> {code}
> class Farm {
>      void animal(@DelegatesTo(Animal) Map arguments, @DelegatesTo(AnimalBuilder) Closure
callable) {
>              def animal = new Animal(arguments)
>              // handle closure
>     }
> } 
> class Animal { String name }
> {code}
> The following code would then fail to compile :
> {code}
> def farm = new Farm()
> // compilation failure, no name property on Animal
> farm.animal(nam: "Dog")  { 
> }
> {code}
> It would then be down to IDEs to also provide support for code completion etc.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message