Daniil Ovchinnikov created GROOVY-7632:
------------------------------------------

             Summary: Groovy named parameters static check
                 Key: GROOVY-7632
                 URL: https://issues.apache.org/jira/browse/GROOVY-7632
             Project: Groovy
          Issue Type: Improvement
          Components: Static Type Checker
            Reporter: Daniil Ovchinnikov
            Assignee: Cédric Champeau


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:
def foo(Map map) { ... }

Annotation could look like this:
@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;
    }
}

And the usage:
def foo(@NamedParams([
        @NamedParam("bar"),
        @NamedParam(value = "baz", type = String)
]) Map map) {
    println map.bar
    println map.baz
}

foo(bar: [], baz: "")

In {{@CompileStatic}} case it could be used to fail the compilation if user 
tries to get some unknown value from map, and also to fail is 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