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 d6a651b199a74889c259dcd63b7ad873df12a76d Author: Paul King <[email protected]> AuthorDate: Mon Feb 21 23:07:54 2022 +1000 GROOVY-10502: `@NamedVariant`: illegal argument exception if map is null Conflicts: src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java --- .../codehaus/groovy/transform/NamedVariantASTTransformation.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java index 17c7a5e..91f0fc9 100644 --- a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java +++ b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java @@ -62,6 +62,8 @@ 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.getAllProperties; +import static org.codehaus.groovy.ast.tools.GeneralUtils.ifS; +import static org.codehaus.groovy.ast.tools.GeneralUtils.isNullX; import static org.codehaus.groovy.ast.tools.GeneralUtils.list2args; import static org.codehaus.groovy.ast.tools.GeneralUtils.notNullX; import static org.codehaus.groovy.ast.tools.GeneralUtils.nullX; @@ -70,6 +72,7 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.plusX; import static org.codehaus.groovy.ast.tools.GeneralUtils.propX; import static org.codehaus.groovy.ast.tools.GeneralUtils.stmt; import static org.codehaus.groovy.ast.tools.GeneralUtils.ternaryX; +import static org.codehaus.groovy.ast.tools.GeneralUtils.throwS; import static org.codehaus.groovy.ast.tools.GeneralUtils.varX; @GroovyASTTransformation(phase = CompilePhase.SEMANTIC_ANALYSIS) @@ -79,6 +82,7 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation { private static final String NAMED_VARIANT = "@" + NAMED_VARIANT_TYPE.getNameWithoutPackage(); private static final ClassNode NAMED_PARAM_TYPE = makeWithoutCaching(NamedParam.class, false); private static final ClassNode NAMED_DELEGATE_TYPE = makeWithoutCaching(NamedDelegate.class, false); + private static final ClassNode ILLEGAL_ARGUMENT_TYPE = makeWithoutCaching(IllegalArgumentException.class); @Override public void visit(final ASTNode[] nodes, final SourceUnit source) { @@ -221,6 +225,10 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation { private void createMapVariant(final MethodNode mNode, final AnnotationNode anno, final Parameter mapParam, final List<Parameter> genParams, final ClassNode cNode, final BlockStatement inner, final ArgumentListExpression args, final List<String> propNames) { Parameter namedArgKey = param(STRING_TYPE, "namedArgKey"); + if (!(mNode instanceof ConstructorNode)) { + inner.getStatements().add(0, ifS(isNullX(varX(mapParam)), + throwS(ctorX(ILLEGAL_ARGUMENT_TYPE, constX("Named parameter map cannot be null"))))); + } inner.addStatement( new ForStatement( namedArgKey,
