[
https://issues.apache.org/jira/browse/GROOVY-8627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King resolved GROOVY-8627.
-------------------------------
Resolution: Fixed
Assignee: Paul King
Fix Version/s: 2.5.1
Proposed PR merged. Thanks for spotting the issue.
> Compile error using NamedParam with value
> -----------------------------------------
>
> Key: GROOVY-8627
> URL: https://issues.apache.org/jira/browse/GROOVY-8627
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 2.5.0
> Reporter: Eric Milles
> Assignee: Paul King
> Priority: Major
> Fix For: 2.5.1
>
>
> {{NamedVariantASTTransformation}} has bug checking for presence of {{value}}
> member.
> {code:java}
> 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");
> {code}
> 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:
> {code:groovy}
> import groovy.transform.*
> @ToString(includeNames=true)
> class Color {
> Integer r, g, b
> }
> @NamedVariant
> 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)
> {code}
> Compiling this script results in this error because the {{@NamedParam}}
> annotation already has a {{value}} member when this line from the transform
> is executed: {{namedParam.addMember("value", constX(fromParam.getName()));}}.
> {code}
> 1. ERROR in Script.groovy (at line 1)\r\n
> import groovy.transform.*\r\n
> ^\n
> Groovy:Groovy compiler error: exception in phase 'semantic analysis' in
> source unit 'Script.groovy' Annotation member value has already been added @
> line 1, column 0.
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)