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 2023/07/31 17:31:50 UTC
[groovy] branch master updated: one map
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
The following commit(s) were added to refs/heads/master by this push:
new 06169fd3d9 one map
06169fd3d9 is described below
commit 06169fd3d99a29350c4b013adaa2460c898b4a22
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon Jul 31 12:09:58 2023 -0500
one map
---
.../org/codehaus/groovy/vmplugin/v16/Java16.java | 23 +++------
.../org/codehaus/groovy/vmplugin/v8/Java8.java | 56 ++++++++++------------
.../org/codehaus/groovy/vmplugin/v9/Java9.java | 21 +++-----
3 files changed, 37 insertions(+), 63 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java b/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
index 7c438c2504..11cf439b49 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
@@ -26,34 +26,23 @@ import org.codehaus.groovy.ast.CompileUnit;
import org.codehaus.groovy.ast.RecordComponentNode;
import org.codehaus.groovy.vmplugin.v10.Java10;
-import java.lang.annotation.ElementType;
import java.lang.invoke.MethodHandle;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Arrays;
-import java.util.EnumMap;
-import java.util.Map;
import java.util.stream.Collectors;
-/**
- * Additional Java 16 based functions will be added here as needed.
- */
+import static java.lang.annotation.ElementType.RECORD_COMPONENT;
+
public class Java16 extends Java10 {
- private Map<ElementType, Integer> elementTypeTargetMap;
- @Override
- public int getVersion() {
- return 16;
+ {
+ elementTypeToTarget.put(RECORD_COMPONENT, AnnotationNode.RECORD_COMPONENT_TARGET);
}
@Override
- protected Map<ElementType, Integer> getElementTypeTargetMap() {
- if (null == elementTypeTargetMap) {
- Map<ElementType, Integer> ettm = new EnumMap<>(super.getElementTypeTargetMap());
- ettm.put(ElementType.RECORD_COMPONENT, AnnotationNode.RECORD_COMPONENT_TARGET);
- elementTypeTargetMap = ettm;
- }
- return elementTypeTargetMap;
+ public int getVersion() {
+ return 16;
}
@Override
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java b/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java
index 2054be36ba..31d66923cf 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java
@@ -83,19 +83,6 @@ public class Java8 implements VMPlugin {
private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
private static final Permission ACCESS_PERMISSION = new ReflectPermission("suppressAccessChecks");
- private static final Map<ElementType, Integer> ELEMENT_TYPE_TARGET_MAP = new EnumMap<>(Maps.of(
- ElementType.TYPE, AnnotationNode.TYPE_TARGET,
- ElementType.CONSTRUCTOR, AnnotationNode.CONSTRUCTOR_TARGET,
- ElementType.METHOD, AnnotationNode.METHOD_TARGET,
- ElementType.FIELD, AnnotationNode.FIELD_TARGET,
- ElementType.PARAMETER, AnnotationNode.PARAMETER_TARGET,
- ElementType.LOCAL_VARIABLE, AnnotationNode.LOCAL_VARIABLE_TARGET,
- ElementType.ANNOTATION_TYPE, AnnotationNode.ANNOTATION_TARGET,
- ElementType.PACKAGE, AnnotationNode.PACKAGE_TARGET,
- ElementType.TYPE_PARAMETER, AnnotationNode.TYPE_PARAMETER_TARGET,
- ElementType.TYPE_USE, AnnotationNode.TYPE_USE_TARGET
- ));
-
public static GenericsType configureTypeVariableDefinition(final ClassNode base, final ClassNode[] cBounds) {
ClassNode redirect = base.redirect();
base.setRedirect(null);
@@ -146,6 +133,8 @@ public class Java8 implements VMPlugin {
}
}
+ //--------------------------------------------------------------------------
+
@Override
public Class<?>[] getPluginDefaultGroovyMethods() {
return new Class[]{PluginDefaultGroovyMethods.class};
@@ -161,17 +150,6 @@ public class Java8 implements VMPlugin {
return 8;
}
- protected Map<ElementType, Integer> getElementTypeTargetMap() {
- return ELEMENT_TYPE_TARGET_MAP;
- }
-
- protected int getElementCode(final ElementType value) {
- Integer code = getElementTypeTargetMap().get(value);
- if (null != code) return code;
-
- throw new GroovyBugError("unsupported Target " + value);
- }
-
@Override
public void setAdditionalClassInformation(final ClassNode cn) {
setGenericsTypes(cn);
@@ -363,10 +341,22 @@ public class Java8 implements VMPlugin {
//
+ protected final Map<ElementType, Integer> elementTypeToTarget = new EnumMap<>(Maps.of(
+ ElementType.TYPE, AnnotationNode.TYPE_TARGET,
+ ElementType.FIELD, AnnotationNode.FIELD_TARGET,
+ ElementType.METHOD, AnnotationNode.METHOD_TARGET,
+ ElementType.PARAMETER, AnnotationNode.PARAMETER_TARGET,
+ ElementType.CONSTRUCTOR, AnnotationNode.CONSTRUCTOR_TARGET,
+ ElementType.LOCAL_VARIABLE, AnnotationNode.LOCAL_VARIABLE_TARGET,
+ ElementType.ANNOTATION_TYPE, AnnotationNode.ANNOTATION_TARGET,
+ ElementType.PACKAGE, AnnotationNode.PACKAGE_TARGET,
+ ElementType.TYPE_PARAMETER, AnnotationNode.TYPE_PARAMETER_TARGET,
+ ElementType.TYPE_USE, AnnotationNode.TYPE_USE_TARGET
+ ));
+
@Override
public void configureAnnotationNodeFromDefinition(final AnnotationNode definition, final AnnotationNode root) {
- ClassNode type = definition.getClassNode();
- final String typeName = type.getName();
+ String typeName = definition.getClassNode().getName();
if ("java.lang.annotation.Retention".equals(typeName)) {
Expression exp = definition.getMember("value");
if (!(exp instanceof PropertyExpression)) return;
@@ -377,16 +367,18 @@ public class Java8 implements VMPlugin {
} else if ("java.lang.annotation.Target".equals(typeName)) {
Expression exp = definition.getMember("value");
if (!(exp instanceof ListExpression)) return;
- ListExpression le = (ListExpression) exp;
- int bitmap = 0;
- for (Expression e : le.getExpressions()) {
+ ListExpression list = (ListExpression) exp;
+ int targets = 0;
+ for (Expression e : list.getExpressions()) {
if (!(e instanceof PropertyExpression)) return;
PropertyExpression element = (PropertyExpression) e;
String name = element.getPropertyAsString();
- ElementType value = ElementType.valueOf(name);
- bitmap |= getElementCode(value);
+ ElementType type = ElementType.valueOf(name);
+ Integer target = elementTypeToTarget.get(type);
+ if (target == null) throw new GroovyBugError("unsupported Target " + type);
+ targets |= target.intValue();
}
- root.setAllowedTargets(bitmap);
+ root.setAllowedTargets(targets);
}
}
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
index 5f8fbfd37a..14d37343db 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
@@ -23,14 +23,12 @@ import groovy.lang.GroovyRuntimeException;
import groovy.lang.MetaClass;
import groovy.lang.MetaMethod;
import org.codehaus.groovy.GroovyBugError;
-import org.codehaus.groovy.ast.AnnotationNode;
import org.codehaus.groovy.reflection.CachedClass;
import org.codehaus.groovy.reflection.CachedMethod;
import org.codehaus.groovy.reflection.ReflectionUtils;
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
import org.codehaus.groovy.vmplugin.v8.Java8;
-import java.lang.annotation.ElementType;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.module.ModuleDescriptor;
@@ -47,7 +45,6 @@ import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.EnumMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -61,22 +58,18 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
+import static java.lang.annotation.ElementType.MODULE;
+import static org.codehaus.groovy.ast.AnnotationNode.TYPE_TARGET;
+
public class Java9 extends Java8 {
- private Map<ElementType, Integer> elementTypeTargetMap;
- @Override
- public int getVersion() {
- return 9;
+ {
+ elementTypeToTarget.put(MODULE, TYPE_TARGET); // TODO Add MODULE_TARGET?
}
@Override
- protected Map<ElementType, Integer> getElementTypeTargetMap() {
- if (null == elementTypeTargetMap) {
- Map<ElementType, Integer> ettm = new EnumMap<>(super.getElementTypeTargetMap());
- ettm.put(ElementType.MODULE, AnnotationNode.TYPE_TARGET); // TODO Add MODULE_TARGET too?
- elementTypeTargetMap = ettm;
- }
- return elementTypeTargetMap;
+ public int getVersion() {
+ return 9;
}
@Override