[ https://issues.apache.org/jira/browse/GROOVY-7632?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King resolved GROOVY-7632. ------------------------------- Resolution: Fixed Assignee: Paul King Fix Version/s: 2.5.5 3.0.0-alpha-4 {{NamedParams}} and {{NamedParam}} were added in Groovy 2.5 and simple checking has now been enabled. I'll resolve this issue and we can create additional issues to enhance further. > 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 > Assignee: Paul King > Priority: Major > Fix For: 3.0.0-alpha-4, 2.5.5 > > > 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 (v7.6.3#76005)