This is an automated email from the ASF dual-hosted git repository. paulk pushed a commit to branch GROOVY_4_0_X in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 3628bf1593a4f33d3cd3d85b78cb5d0acf1d619e Author: Paul King <[email protected]> AuthorDate: Mon Apr 11 18:08:33 2022 +1000 minor refactor --- src/main/java/org/codehaus/groovy/classgen/Verifier.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/classgen/Verifier.java b/src/main/java/org/codehaus/groovy/classgen/Verifier.java index 6eed40febc..99f52fbc2a 100644 --- a/src/main/java/org/codehaus/groovy/classgen/Verifier.java +++ b/src/main/java/org/codehaus/groovy/classgen/Verifier.java @@ -992,6 +992,7 @@ public class Verifier implements GroovyClassVisitor, Opcodes { List<ConstructorNode> constructors = new ArrayList<>(type.getDeclaredConstructors()); addDefaultParameters(constructors, (arguments, params, method) -> { // GROOVY-9151: check for references to parameters that have been removed + List<Parameter> paramList = Arrays.asList(params); for (ListIterator<Expression> it = arguments.getExpressions().listIterator(); it.hasNext(); ) { Expression argument = it.next(); if (argument instanceof CastExpression) { @@ -1001,7 +1002,7 @@ public class Verifier implements GroovyClassVisitor, Opcodes { VariableExpression v = (VariableExpression) argument; if (v.getAccessedVariable() instanceof Parameter) { Parameter p = (Parameter) v.getAccessedVariable(); - if (p.hasInitialExpression() && !Arrays.asList(params).contains(p) + if (p.hasInitialExpression() && !paramList.contains(p) && p.getInitialExpression() instanceof ConstantExpression) { // replace argument "(Type) param" with "(Type) <param's default>" for simple default value it.set(castX(method.getParameters()[it.nextIndex() - 1].getType(), p.getInitialExpression())); @@ -1014,7 +1015,7 @@ public class Verifier implements GroovyClassVisitor, Opcodes { public void visitVariableExpression(final VariableExpression e) { if (e.getAccessedVariable() instanceof Parameter) { Parameter p = (Parameter) e.getAccessedVariable(); - if (p.hasInitialExpression() && !Arrays.asList(params).contains(p)) { + if (p.hasInitialExpression() && !paramList.contains(p)) { String error = String.format( "The generated constructor \"%s(%s)\" references parameter '%s' which has been replaced by a default value expression.", type.getNameWithoutPackage(),
