You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/02/23 17:18:15 UTC
[groovy] 03/03: GROOVY-10502: `@NamedVariant`: illegal argument exception if map is null
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 <pa...@asert.com.au>
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,