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

Daniil Ovchinnikov commented on GROOVY-7632:
--------------------------------------------

Named arguments are placed into single map parameter so this annotation could 
be applied to method instead of parameter. 
I think it would be more readable:
{code}
@NamedParams([@NamedParam("bar"), @NamedParam(value = "baz", type = String)]) 
def foo(Map map) {
    println map.bar
    println map.baz
}
{code}

> Groovy named parameters static check
> ------------------------------------
>
>                 Key: GROOVY-7632
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7632
>             Project: Groovy
>          Issue Type: Improvement
>          Components: groovy-jdk, Static Type Checker
>            Reporter: Daniil Ovchinnikov
>
> It would be really nice if groovy will include some annotation for type 
> checking named params.
> For example we do not know what map is expected until we go into source.
> {code:title=Annotation|borderStyle=solid}
> @Retention(RetentionPolicy.RUNTIME)
> @Target({ElementType.PARAMETER})
> public @interface NamedParams {
>     NamedParam[] value();
>     boolean unknowns() default false;
>     @interface NamedParam {
>         String value();
>         Class type() default Object.class;
>         int genericTypeIndex() default -1;
>         String target() default "";
>         boolean required() default false;
>     }
> }
> {code}
> {code:title=Example Usage|borderStyle=solid}
> def foo(@NamedParams([
>         @NamedParam("bar"),
>         @NamedParam(value = "baz", type = String)]) Map map) {
>     println map.bar
>     println map.baz
> }
> foo(bar: [], baz: "")
> {code}
> In {{@CompileStatic}} case it could be used to fail the compilation if user 
> tries to get some unknown value from map, and also fail if user does not pass 
> some required argument. 
> Also it could be used to annotate map-constructors in compile-time.
> And the last one: it will be VERY useful for IDEs. 



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

Reply via email to