This is an automated email from the ASF dual-hosted git repository. emilles pushed a commit to branch GROOVY_2_5_X in repository https://gitbox.apache.org/repos/asf/groovy.git
commit cb3ad7cd5c128063980d0ef5e44dbaebc8a577fd Author: Eric Milles <[email protected]> AuthorDate: Mon Feb 21 03:58:46 2022 -0600 GROOVY-10500: `@NamedVariant`: slice named args map for `@NamedDelegate` Conflicts: src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java --- .../transform/NamedVariantASTTransformation.java | 25 +++++++++------------- .../transform/NamedVariantTransformTest.groovy | 7 +++--- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java index 84d8db7..17c7a5e 100644 --- a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java +++ b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java @@ -31,7 +31,6 @@ import org.codehaus.groovy.ast.Parameter; import org.codehaus.groovy.ast.PropertyNode; import org.codehaus.groovy.ast.expr.ArgumentListExpression; import org.codehaus.groovy.ast.expr.Expression; -import org.codehaus.groovy.ast.expr.MapEntryExpression; import org.codehaus.groovy.ast.expr.MethodCallExpression; import org.codehaus.groovy.ast.stmt.AssertStatement; import org.codehaus.groovy.ast.stmt.BlockStatement; @@ -62,12 +61,10 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.castX; import static org.codehaus.groovy.ast.tools.GeneralUtils.classX; import static org.codehaus.groovy.ast.tools.GeneralUtils.constX; import static org.codehaus.groovy.ast.tools.GeneralUtils.ctorX; -import static org.codehaus.groovy.ast.tools.GeneralUtils.entryX; import static org.codehaus.groovy.ast.tools.GeneralUtils.getAllProperties; import static org.codehaus.groovy.ast.tools.GeneralUtils.list2args; -import static org.codehaus.groovy.ast.tools.GeneralUtils.mapX; -import static org.codehaus.groovy.ast.tools.GeneralUtils.nullX; import static org.codehaus.groovy.ast.tools.GeneralUtils.notNullX; +import static org.codehaus.groovy.ast.tools.GeneralUtils.nullX; import static org.codehaus.groovy.ast.tools.GeneralUtils.param; import static org.codehaus.groovy.ast.tools.GeneralUtils.plusX; import static org.codehaus.groovy.ast.tools.GeneralUtils.propX; @@ -195,22 +192,20 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation { Set<String> names = new HashSet<>(); List<PropertyNode> props = getAllProperties(names, fromParam.getType(), true, false, false, true, false, true); - for (String next : names) { - if (hasDuplicates(mNode, propNames, next)) return false; + for (String name : names) { + if (hasDuplicates(mNode, propNames, name)) return false; } - List<MapEntryExpression> entries = new ArrayList<>(); - for (PropertyNode pNode : props) { - String name = pNode.getName(); - ClassNode type = pNode.getType(); - // create entry [name: __namedArgs.name ?: defaultValue)] -- GROOVY-9183 - entries.add(entryX(constX(name), namedParamValue(mapParam, name, type, pNode.getInitialExpression()))); + for (PropertyNode prop : props) { // create annotation @NamedParam(value='name', type=PropertyType) AnnotationNode namedParam = new AnnotationNode(NAMED_PARAM_TYPE); - namedParam.addMember("value", constX(name)); - namedParam.addMember("type", classX(type)); + namedParam.addMember("value", constX(prop.getName())); + namedParam.addMember("type", classX(prop.getType())); mapParam.addAnnotation(namedParam); } - Expression delegateMap = mapX(entries); + + ArgumentListExpression subMapArgs = new ArgumentListExpression(); + for (String name : names) subMapArgs.addExpression(constX(name)); + Expression delegateMap = callX(varX(mapParam), "subMap", subMapArgs); args.addExpression(castX(fromParam.getType(), delegateMap)); return true; } diff --git a/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy b/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy index ecbfdf2..5b20df9 100644 --- a/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy +++ b/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy @@ -310,7 +310,7 @@ final class NamedVariantTransformTest { } @Test // GROOVY-10261 - void testNamedDelegateWithDefaultArguments() { + void testNamedVariantWithDefaultArguments() { assertScript ''' import groovy.transform.* @@ -332,7 +332,7 @@ final class NamedVariantTransformTest { ''' } - @Test // GROOVY-9183 + @Test // GROOVY-9183, GROOVY-10500 void testNamedDelegateWithPropertyDefaults() { assertScript ''' import groovy.transform.* @@ -361,7 +361,8 @@ final class NamedVariantTransformTest { String separator = ',' Boolean headers = true Integer headersRow = 0 - Integer firstDataRow = 1 + Integer firstDataRow = FIRST_DATA_ROW + private static final int FIRST_DATA_ROW = 1 } }
