groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Milles (JIRA)" <>
Subject [jira] [Created] (GROOVY-8627) Compile error using NamedParam with value
Date Fri, 01 Jun 2018 17:57:00 GMT
Eric Milles created GROOVY-8627:

             Summary: Compile error using NamedParam with value
                 Key: GROOVY-8627
             Project: Groovy
          Issue Type: Bug
    Affects Versions: 2.5.0
            Reporter: Eric Milles

{{NamedVariantASTTransformation}} has bug checking for presence of {{value}} member.
            for (Parameter fromParam : fromParams) {
                if (AnnotatedNodeUtils.hasAnnotation(fromParam, NAMED_PARAM_TYPE)) {
                    AnnotationNode namedParam = fromParam.getAnnotations(NAMED_PARAM_TYPE).get(0);
                    boolean required = memberHasValue(namedParam, "required", true);
                    if (getMemberValue(namedParam, "name") == null) {
                        namedParam.addMember("value", constX(fromParam.getName()));
                    String name = getMemberStringValue(namedParam, "value");

Check here is for {{name}} and if not found, fill in {{value}} from name of annotated param.
 There are 2 problems with this:
1. {{NamedParam}} has no {{name}} member
2. {{NamedParam}} indicates {{value}} as required (no default value provided in declaration)

Example that produces error:
import groovy.transform.*

class Color {
  Integer r, g, b

@NamedVariant\n" +
String m(@NamedDelegate Color color, @NamedParam(value='a', required=true) int alpha) {
  return [color, alpha].join(' ')

print m(r:1, g:2, b:3, a: 0)

This message was sent by Atlassian JIRA

View raw message