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 2026/02/28 17:49:26 UTC
(groovy) branch master updated (0a5d65c67b -> 4f33a90d3f)
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
from 0a5d65c67b GROOVY-10307 (adjust units for quick test)
new fd3959b786 replace deprecated references
new ccb554bfc7 replace deprecated references
new 2822be5eb4 replace deprecated references
new 4f33a90d3f GROOVY-11864: STC: propagate instanceof from if condition not then block
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../classgen/asm/sc/StaticInvocationWriter.java | 1 +
...icTypesBinaryExpressionMultiTypeDispatcher.java | 33 -----------
.../classgen/asm/sc/StaticTypesCallSiteWriter.java | 64 --------------------
.../groovy/runtime/callsite/CallSiteGenerator.java | 8 ++-
.../org/codehaus/groovy/tools/DgmConverter.java | 13 +++--
.../transform/AnnotationCollectorTransform.java | 4 +-
.../transform/sc/StaticCompilationVisitor.java | 68 ----------------------
.../transform/stc/StaticTypeCheckingVisitor.java | 4 +-
.../transform/stc/TypeInferenceSTCTest.groovy | 20 +++++++
9 files changed, 41 insertions(+), 174 deletions(-)
(groovy) 04/04: GROOVY-11864: STC: propagate instanceof from if condition not then block
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 4f33a90d3f8b4cc4a511ef0aebbe9b9af334be5c
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sat Feb 28 11:33:20 2026 -0600
GROOVY-11864: STC: propagate instanceof from if condition not then block
---
.../transform/stc/StaticTypeCheckingVisitor.java | 4 +++-
.../groovy/transform/stc/TypeInferenceSTCTest.groovy | 20 ++++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 2c783c99f7..93a1976609 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -4236,9 +4236,11 @@ trying: for (ClassNode[] signature : signatures) {
visitStatement(ifElse);
ifElse.getBooleanExpression().visit(this);
+ var tti = Map.copyOf(typeCheckingContext.temporaryIfBranchTypeInformation.peek()); // GROOVY-11864
+
thenPath.visit(this);
- Map<Object, List<ClassNode>> tti = typeCheckingContext.temporaryIfBranchTypeInformation.pop();
+ typeCheckingContext.temporaryIfBranchTypeInformation.pop();
// GROOVY-6099: isolate assignment tracking
restoreTypeBeforeConditional();
diff --git a/src/test/groovy/groovy/transform/stc/TypeInferenceSTCTest.groovy b/src/test/groovy/groovy/transform/stc/TypeInferenceSTCTest.groovy
index c94d1d55d3..5bd24a1e08 100644
--- a/src/test/groovy/groovy/transform/stc/TypeInferenceSTCTest.groovy
+++ b/src/test/groovy/groovy/transform/stc/TypeInferenceSTCTest.groovy
@@ -350,6 +350,26 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
'Cannot call (java.util.AbstractCollection','#add(java.lang.String) with arguments [int]'
}
+ // GROOVY-11864
+ void testInstanceOf16() {
+ assertScript '''
+ boolean enabled() {}
+ @ASTTest(phase=INSTRUCTION_SELECTION, value={
+ def expr = lookup('x').get(0).expression
+ def type = expr.getNodeMetaData(INFERRED_TYPE)
+ assert type.name == 'java.lang.Number'
+ })
+ def test(Number n) {
+ if (enabled()) {
+ if (n instanceof Long) return n
+ throw new IllegalArgumentException()
+ }
+ x: n
+ }
+ assert test(42) == 42
+ '''
+ }
+
// GROOVY-5226
void testNestedInstanceOf1() {
assertScript '''
(groovy) 03/04: replace deprecated references
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 2822be5eb4f7006c5d216516d3f83afcb1d021bf
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sat Feb 28 11:33:14 2026 -0600
replace deprecated references
---
.../classgen/asm/sc/StaticInvocationWriter.java | 1 +
...icTypesBinaryExpressionMultiTypeDispatcher.java | 33 -----------
.../classgen/asm/sc/StaticTypesCallSiteWriter.java | 64 --------------------
.../transform/sc/StaticCompilationVisitor.java | 68 ----------------------
4 files changed, 1 insertion(+), 165 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java
index 959e3a4d4a..16edfce0a6 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticInvocationWriter.java
@@ -350,6 +350,7 @@ public class StaticInvocationWriter extends InvocationWriter {
return false;
}
+ @Deprecated(since = "6.0.0")
protected static boolean isPrivateBridgeMethodsCallAllowed(final ClassNode receiver, final ClassNode caller) {
if (receiver == null) return false;
if (receiver.redirect() == caller) return true;
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
index c8508b02bf..eeee08d167 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
@@ -20,7 +20,6 @@ package org.codehaus.groovy.classgen.asm.sc;
import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.ClassNode;
-import org.codehaus.groovy.ast.FieldNode;
import org.codehaus.groovy.ast.MethodNode;
import org.codehaus.groovy.ast.Parameter;
import org.codehaus.groovy.ast.PropertyNode;
@@ -44,7 +43,6 @@ import org.codehaus.groovy.syntax.TokenUtil;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import static org.apache.groovy.ast.tools.ExpressionUtils.isThisExpression;
@@ -61,11 +59,9 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.ctorX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.declX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.getSetterName;
import static org.codehaus.groovy.ast.tools.GeneralUtils.isOrImplements;
-import static org.codehaus.groovy.ast.tools.GeneralUtils.nullX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.stmt;
import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
import static org.codehaus.groovy.classgen.AsmClassGenerator.ELIDE_EXPRESSION_VALUE;
-import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.PRIVATE_FIELDS_MUTATORS;
import static org.codehaus.groovy.transform.sc.StaticCompilationVisitor.ARRAYLIST_ADD_METHOD;
import static org.codehaus.groovy.transform.sc.StaticCompilationVisitor.ARRAYLIST_CLASSNODE;
import static org.codehaus.groovy.transform.sc.StaticCompilationVisitor.ARRAYLIST_CONSTRUCTOR;
@@ -291,35 +287,6 @@ public class StaticTypesBinaryExpressionMultiTypeDispatcher extends BinaryExpres
return true;
}
- if (makeSetPrivateFieldWithBridgeMethod(receiver, (thisReceiver && !controller.isInGeneratedFunction()) ? controller.getClassNode() : receiverType, propertyName, arguments, safe, spreadSafe, implicitThis)) {
- return true;
- }
-
- return false;
- }
-
- private boolean makeSetPrivateFieldWithBridgeMethod(final Expression receiver, final ClassNode receiverType, final String fieldName, final Expression arguments, final boolean safe, final boolean spreadSafe, final boolean implicitThis) {
- FieldNode fieldNode = receiverType.getField(fieldName);
- if (fieldNode != null) {
- ClassNode classNode = controller.getClassNode();
- if (fieldNode.isPrivate() && !receiverType.equals(classNode)
- && (StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(receiverType, classNode)
- || StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(classNode, receiverType))) {
- Map<String, MethodNode> mutators = receiverType.redirect().getNodeMetaData(PRIVATE_FIELDS_MUTATORS);
- if (mutators != null) {
- MethodNode methodNode = mutators.get(fieldName);
- if (methodNode != null) {
- MethodCallExpression call = callX(receiver, methodNode.getName(), args(fieldNode.isStatic() ? nullX() : receiver, arguments));
- call.setImplicitThis(implicitThis);
- call.setMethodTarget(methodNode);
- call.setSafe(safe);
- call.setSpreadSafe(spreadSafe);
- call.visit(controller.getAcg());
- return true;
- }
- }
- }
- }
return false;
}
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
index 6664621b67..1eea09ad4b 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
@@ -40,7 +40,6 @@ import org.codehaus.groovy.classgen.asm.CallSiteWriter;
import org.codehaus.groovy.classgen.asm.CompileStack;
import org.codehaus.groovy.classgen.asm.MethodCallerMultiAdapter;
import org.codehaus.groovy.classgen.asm.OperandStack;
-import org.codehaus.groovy.classgen.asm.VariableSlotLoader;
import org.codehaus.groovy.runtime.InvokerHelper;
import org.codehaus.groovy.syntax.SyntaxException;
import org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys;
@@ -49,7 +48,6 @@ import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import java.util.List;
-import java.util.Map;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
@@ -85,7 +83,6 @@ 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.isOrImplements;
-import static org.codehaus.groovy.ast.tools.GeneralUtils.nullX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.propX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
import static org.codehaus.groovy.transform.sc.StaticCompilationVisitor.ARRAYLIST_CLASSNODE;
@@ -198,7 +195,6 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter {
if (isClassReceiver[0]) {
if (makeGetPropertyWithGetter(receiver, CLASS_Type, propertyName, safe, implicitThis)) return;
}
- if (makeGetPrivateFieldWithBridgeMethod(receiver, receiverType, propertyName, safe, implicitThis)) return;
if (!isStaticProperty && isOrImplements(receiverType, LIST_TYPE)) {
writeListDotProperty(receiver, propertyName, safe);
@@ -326,36 +322,6 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter {
compileStack.removeVar(list);
}
- private boolean makeGetPrivateFieldWithBridgeMethod(final Expression receiver, final ClassNode receiverType, final String fieldName, final boolean safe, final boolean implicitThis) {
- FieldNode field = receiverType.getField(fieldName);
- if (field != null) {
- ClassNode classNode = controller.getClassNode();
- if (field.isPrivate() && !receiverType.equals(classNode)
- && StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(receiverType, classNode)) {
- Map<String, MethodNode> accessors = receiverType.redirect().getNodeMetaData(StaticCompilationMetadataKeys.PRIVATE_FIELDS_ACCESSORS);
- if (accessors != null) {
- MethodNode methodNode = accessors.get(fieldName);
- if (methodNode != null) {
- Expression thisObject;
- if (field.isStatic()) {
- thisObject = nullX();
- } else if (!isThisExpression(receiver)) {
- thisObject = receiver;
- } else { // GROOVY-7304, GROOVY-9771, GROOVY-9872
- thisObject = propX(classX(receiverType), "this");
- }
-
- MethodCallExpression call = callX(classX(receiverType), methodNode.getName(), thisObject);
- call.setMethodTarget(methodNode);
- call.visit(controller.getAcg());
- return true;
- }
- }
- }
- }
- return false;
- }
-
@Override
public void makeGroovyObjectGetPropertySite(final Expression receiver, final String propertyName, final boolean safe, final boolean implicitThis) {
ClassNode receiverType;
@@ -400,7 +366,6 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter {
}
if (makeGetField(receiver, receiverType, propertyName, safe, implicitThis)) return;
- if (makeGetPrivateFieldWithBridgeMethod(receiver, receiverType, propertyName, safe, implicitThis)) return;
if (isMapDotProperty) {
writeMapDotProperty(receiver, propertyName, safe);
@@ -738,35 +703,6 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter {
if (adapter == AsmClassGenerator.setField || adapter == AsmClassGenerator.setGroovyObjectField) {
if (setField(expression, objectExpression, receiverType, name)) return;
}
- if (isThisExpression(objectExpression)) {
- ClassNode classNode = controller.getClassNode();
- FieldNode fieldNode = receiverType.getField(name);
- if (fieldNode != null && fieldNode.isPrivate() && !receiverType.equals(classNode)
- && StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(receiverType, classNode)) {
- Map<String, MethodNode> mutators = receiverType.redirect().getNodeMetaData(StaticCompilationMetadataKeys.PRIVATE_FIELDS_MUTATORS);
- if (mutators != null) {
- MethodNode methodNode = mutators.get(name);
- if (methodNode != null) {
- ClassNode rhsType = operandStack.getTopOperand();
- int i = compileStack.defineTemporaryVariable("$rhs", rhsType, true);
- VariableSlotLoader rhsValue = new VariableSlotLoader(rhsType, i, operandStack);
-
- MethodCallExpression call = callX(classX(receiverType), methodNode.getName(), args(fieldNode.isStatic() ? nullX() : objectExpression, rhsValue));
- call.setImplicitThis(false);
- call.setMethodTarget(methodNode);
- // NOTE: safe and spreadSafe cannot be mapped to "FieldOwner.pfaccess$00(receiver, value)"
- call.visit(controller.getAcg());
-
- // GROOVY-9892: assuming that the mutator method has a return value, make sure the operand
- // stack is not polluted with the result of the method call
- operandStack.pop();
-
- compileStack.removeVar(i);
- return;
- }
- }
- }
- }
// GROOVY-6954, GROOVY-11376: for map types, replace "map.foo = ..."
// with "map.put('foo', ...)" if no public field exists
if (!isClassReceiver[0] && isOrImplements(receiverType, MAP_TYPE)
diff --git a/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java b/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java
index 0c806eb4ce..b0c1bdf43f 100644
--- a/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java
@@ -54,24 +54,17 @@ import org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport;
import org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import static org.apache.groovy.ast.tools.AnnotatedNodeUtils.hasAnnotation;
import static org.codehaus.groovy.ast.tools.GeneralUtils.args;
-import static org.codehaus.groovy.ast.tools.GeneralUtils.assignS;
-import static org.codehaus.groovy.ast.tools.GeneralUtils.attrX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
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.ctorThisS;
-import static org.codehaus.groovy.ast.tools.GeneralUtils.returnS;
import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
import static org.codehaus.groovy.ast.tools.GenericsUtils.addMethodGenerics;
import static org.codehaus.groovy.ast.tools.GenericsUtils.applyGenericsContextToPlaceHolders;
@@ -83,8 +76,6 @@ import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.BIN
import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.COMPONENT_TYPE;
import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.DYNAMIC_OUTER_NODE_CALLBACK;
import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.PRIVATE_BRIDGE_METHODS;
-import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.PRIVATE_FIELDS_ACCESSORS;
-import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.PRIVATE_FIELDS_MUTATORS;
import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.PROPERTY_OWNER;
import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.RECEIVER_OF_DYNAMIC_PROPERTY;
import static org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys.STATIC_COMPILE_NODE;
@@ -92,8 +83,6 @@ import static org.codehaus.groovy.transform.stc.StaticTypesMarker.DIRECT_METHOD_
import static org.codehaus.groovy.transform.stc.StaticTypesMarker.DYNAMIC_RESOLUTION;
import static org.codehaus.groovy.transform.stc.StaticTypesMarker.INITIAL_EXPRESSION;
import static org.codehaus.groovy.transform.stc.StaticTypesMarker.PARAMETER_TYPE;
-import static org.codehaus.groovy.transform.stc.StaticTypesMarker.PV_FIELDS_ACCESS;
-import static org.codehaus.groovy.transform.stc.StaticTypesMarker.PV_FIELDS_MUTATION;
import static org.codehaus.groovy.transform.stc.StaticTypesMarker.PV_METHODS_ACCESS;
import static org.codehaus.groovy.transform.trait.TraitASTTransformation.POST_TYPECHECKING_REPLACEMENT;
import static org.objectweb.asm.Opcodes.ACC_STATIC;
@@ -395,7 +384,6 @@ public class StaticCompilationVisitor extends StaticTypeCheckingVisitor {
outer.putNodeMetaData(DYNAMIC_OUTER_NODE_CALLBACK, (IPrimaryClassNodeOperation) (source, context, classNode) -> {
if (classNode == outer) {
addPrivateBridgeMethods(classNode);
- addPrivateFieldsAccessors(classNode);
}
});
}
@@ -406,67 +394,11 @@ public class StaticCompilationVisitor extends StaticTypeCheckingVisitor {
private static void addPrivateFieldAndMethodAccessors(final ClassNode node) {
addPrivateBridgeMethods(node);
- addPrivateFieldsAccessors(node);
for (Iterator<InnerClassNode> it = node.getInnerClasses(); it.hasNext(); ) {
addPrivateFieldAndMethodAccessors(it.next());
}
}
- /**
- * Adds special accessors and mutators for private fields so that inner classes can get/set them.
- */
- @Deprecated(since = "5.0.0")
- private static void addPrivateFieldsAccessors(final ClassNode node) {
- Map<String, MethodNode> privateFieldAccessors = node.getNodeMetaData(PRIVATE_FIELDS_ACCESSORS);
- Map<String, MethodNode> privateFieldMutators = node.getNodeMetaData(PRIVATE_FIELDS_MUTATORS);
- if (privateFieldAccessors != null || privateFieldMutators != null) {
- // already added
- return;
- }
- Set<ASTNode> accessedFields = node.getNodeMetaData(PV_FIELDS_ACCESS);
- Set<ASTNode> mutatedFields = node.getNodeMetaData(PV_FIELDS_MUTATION);
- if (accessedFields == null && mutatedFields == null) return;
- // GROOVY-9385: mutation includes access in case of compound assignment or pre/post-increment/decrement
- if (mutatedFields != null) {
- accessedFields = new HashSet<>(Optional.ofNullable(accessedFields).orElseGet(Collections::emptySet));
- accessedFields.addAll(mutatedFields);
- }
-
- int acc = -1;
- privateFieldAccessors = (accessedFields != null ? new HashMap<>() : null);
- privateFieldMutators = (mutatedFields != null ? new HashMap<>() : null);
- for (FieldNode fieldNode : node.getFields()) {
- boolean generateAccessor = accessedFields != null && accessedFields.contains(fieldNode);
- boolean generateMutator = mutatedFields != null && mutatedFields.contains(fieldNode);
- if (generateAccessor) {
- acc += 1;
- Parameter param = new Parameter(node.getPlainNodeReference(), "$that");
- Expression receiver = fieldNode.isStatic() ? classX(node) : varX(param);
- Statement body = returnS(attrX(receiver, constX(fieldNode.getName())));
- MethodNode accessor = node.addMethod("pfaccess$" + acc, ACC_STATIC | ACC_SYNTHETIC, fieldNode.getOriginType(), new Parameter[]{param}, ClassNode.EMPTY_ARRAY, body);
- accessor.setNodeMetaData(STATIC_COMPILE_NODE, Boolean.TRUE);
- privateFieldAccessors.put(fieldNode.getName(), accessor);
- }
- if (generateMutator) {
- // increment acc if it hasn't been incremented in the current iteration
- if (!generateAccessor) acc += 1;
- Parameter param = new Parameter(node.getPlainNodeReference(), "$that");
- Expression receiver = fieldNode.isStatic() ? classX(node) : varX(param);
- Parameter value = new Parameter(fieldNode.getOriginType(), "$value");
- Statement body = assignS(attrX(receiver, constX(fieldNode.getName())), varX(value));
- MethodNode mutator = node.addMethod("pfaccess$0" + acc, ACC_STATIC | ACC_SYNTHETIC, fieldNode.getOriginType(), new Parameter[]{param, value}, ClassNode.EMPTY_ARRAY, body);
- mutator.setNodeMetaData(STATIC_COMPILE_NODE, Boolean.TRUE);
- privateFieldMutators.put(fieldNode.getName(), mutator);
- }
- }
- if (privateFieldAccessors != null) {
- node.setNodeMetaData(PRIVATE_FIELDS_ACCESSORS, privateFieldAccessors);
- }
- if (privateFieldMutators != null) {
- node.setNodeMetaData(PRIVATE_FIELDS_MUTATORS, privateFieldMutators);
- }
- }
-
/**
* Adds bridge methods for private or protected methods of a class so that
* any nestmate is capable of calling them. It does basically the same job
(groovy) 02/04: replace deprecated references
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit ccb554bfc717d4d9f5be91dd639395e2261ce618
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sat Feb 28 11:33:02 2026 -0600
replace deprecated references
---
.../codehaus/groovy/runtime/callsite/CallSiteGenerator.java | 8 ++++++--
src/main/java/org/codehaus/groovy/tools/DgmConverter.java | 13 +++++++++----
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
index 2dc9f45fd6..e91e51387d 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.runtime.callsite;
import org.codehaus.groovy.classgen.GeneratorContext;
import org.codehaus.groovy.classgen.asm.BytecodeHelper;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.reflection.CachedClass;
import org.codehaus.groovy.reflection.CachedMethod;
@@ -89,9 +90,12 @@ public class CallSiteGenerator {
mv.visitMethodInsn(invokeMethodCode, type, cachedMethod.getName(), descriptor, useInterface);
// produce result
- BytecodeHelper.box(mv, cachedMethod.getReturnType());
- if (cachedMethod.getReturnType() == void.class) {
+ Class<?> returnType = cachedMethod.getReturnType();
+ if (returnType == void.class) {
mv.visitInsn(Opcodes.ACONST_NULL);
+ } else if (returnType.isPrimitive()) {
+ Class<?> wrapperType = TypeUtil.autoboxType(returnType);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, BytecodeHelper.getClassInternalName(wrapperType), "valueOf", "(" + BytecodeHelper.getTypeDescription(returnType) + ")" + BytecodeHelper.getTypeDescription(wrapperType), false);
}
// return
diff --git a/src/main/java/org/codehaus/groovy/tools/DgmConverter.java b/src/main/java/org/codehaus/groovy/tools/DgmConverter.java
index c9cc4b5b01..57677874b3 100644
--- a/src/main/java/org/codehaus/groovy/tools/DgmConverter.java
+++ b/src/main/java/org/codehaus/groovy/tools/DgmConverter.java
@@ -19,6 +19,7 @@
package org.codehaus.groovy.tools;
import org.codehaus.groovy.classgen.asm.BytecodeHelper;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.reflection.CachedClass;
import org.codehaus.groovy.reflection.CachedMethod;
@@ -204,9 +205,11 @@ public class DgmConverter {
loadParameters(method, 2, mv);
}
mv.visitMethodInsn(INVOKESTATIC, BytecodeHelper.getClassInternalName(method.getDeclaringClass().getTheClass()), method.getName(), methodDescriptor, false);
- BytecodeHelper.box(mv, returnType);
- if (method.getReturnType() == void.class) {
+ if (returnType == void.class) {
mv.visitInsn(ACONST_NULL);
+ } else if (returnType.isPrimitive()) {
+ Class<?> wrapperType = TypeUtil.autoboxType(returnType);
+ mv.visitMethodInsn(INVOKESTATIC, BytecodeHelper.getClassInternalName(wrapperType), "valueOf", "(" + BytecodeHelper.getTypeDescription(returnType) + ")" + BytecodeHelper.getTypeDescription(wrapperType), false);
}
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
@@ -221,9 +224,11 @@ public class DgmConverter {
BytecodeHelper.doCast(mv, method.getParameterTypes()[0].getTheClass());
loadParameters(method, 2, mv);
mv.visitMethodInsn(INVOKESTATIC, BytecodeHelper.getClassInternalName(method.getDeclaringClass().getTheClass()), method.getName(), methodDescriptor, false);
- BytecodeHelper.box(mv, returnType);
- if (method.getReturnType() == void.class) {
+ if (returnType == void.class) {
mv.visitInsn(ACONST_NULL);
+ } else if (returnType.isPrimitive()) {
+ Class<?> wrapperType = TypeUtil.autoboxType(returnType);
+ mv.visitMethodInsn(INVOKESTATIC, BytecodeHelper.getClassInternalName(wrapperType), "valueOf", "(" + BytecodeHelper.getTypeDescription(returnType) + ")" + BytecodeHelper.getTypeDescription(wrapperType), false);
}
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
(groovy) 01/04: replace deprecated references
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit fd3959b786826bcf281d635f58fc8e007f4d7ba8
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sat Feb 28 11:32:56 2026 -0600
replace deprecated references
---
.../org/codehaus/groovy/transform/AnnotationCollectorTransform.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
index e27b0e932f..543da80fec 100644
--- a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
+++ b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
@@ -54,7 +54,7 @@ import java.util.Set;
import static org.codehaus.groovy.ast.tools.GeneralUtils.classX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.propX;
-import static org.codehaus.groovy.transform.trait.TraitComposer.COMPILESTATIC_CLASSNODE;
+import static org.codehaus.groovy.transform.sc.StaticCompilationVisitor.COMPILESTATIC_CLASSNODE;
import static org.objectweb.asm.Opcodes.ACC_ABSTRACT;
import static org.objectweb.asm.Opcodes.ACC_ANNOTATION;
import static org.objectweb.asm.Opcodes.ACC_ENUM;
@@ -129,7 +129,7 @@ public class AnnotationCollectorTransform {
helper = new InnerClassNode(cn, cn.getName() + "$CollectorHelper",
ACC_PUBLIC | ACC_STATIC | ACC_FINAL, ClassHelper.OBJECT_TYPE.getPlainNodeReference());
cn.getModule().addClass(helper);
- helper.addAnnotation(new AnnotationNode(COMPILESTATIC_CLASSNODE));
+ helper.addAnnotation(COMPILESTATIC_CLASSNODE);
collector.setMember("serializeClass", new ClassExpression(helper.getPlainNodeReference()));
}