You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2018/02/18 11:29:35 UTC
[2/2] groovy git commit: Trivial refactoring: remove duplicated code
of `ClassHelper` and fix typo
Trivial refactoring: remove duplicated code of `ClassHelper` and fix typo
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/5217a582
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/5217a582
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/5217a582
Branch: refs/heads/master
Commit: 5217a582a709cb91936cd4c66e5bbfac127430f1
Parents: 273340d
Author: danielsun1106 <re...@hotmail.com>
Authored: Sun Feb 18 19:29:28 2018 +0800
Committer: danielsun1106 <re...@hotmail.com>
Committed: Sun Feb 18 19:29:28 2018 +0800
----------------------------------------------------------------------
.../org/codehaus/groovy/ast/ClassHelper.java | 24 ++++++++++++--------
.../classgen/asm/util/TypeDescriptionUtil.java | 12 +++++-----
2 files changed, 20 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/5217a582/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index b81c969..7081b01 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -45,9 +45,11 @@ import java.lang.ref.SoftReference;
import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.regex.Pattern;
/**
@@ -69,10 +71,12 @@ public class ClassHelper {
Iterator.class, GeneratedClosure.class, GeneratedLambda.class, GroovyObjectSupport.class
};
- private static final String[] primitiveClassNames = new String[]{
- "", "boolean", "char", "byte", "short",
- "int", "long", "double", "float", "void"
- };
+ private static final String[] PRIMITIVE_CLASS_NAMES;
+ static {
+ Set<String> primitiveClassNameSet = new HashSet<>(TypeDescriptionUtil.NAME_TO_PRIMITIVE_TYPE_MAP.keySet());
+ primitiveClassNameSet.add(""); // TODO confirm why should we need the empty string?
+ PRIMITIVE_CLASS_NAMES = primitiveClassNameSet.toArray(new String[0]);
+ }
public static final ClassNode
DYNAMIC_TYPE = makeCached(Object.class), OBJECT_TYPE = DYNAMIC_TYPE,
@@ -238,8 +242,8 @@ public class ClassHelper {
public static ClassNode make(String name) {
if (name == null || name.length() == 0) return DYNAMIC_TYPE;
- for (int i = 0; i < primitiveClassNames.length; i++) {
- if (primitiveClassNames[i].equals(name)) return types[i];
+ for (int i = 0; i < PRIMITIVE_CLASS_NAMES.length; i++) {
+ if (PRIMITIVE_CLASS_NAMES[i].equals(name)) return types[i];
}
for (int i = 0; i < classes.length; i++) {
@@ -249,7 +253,7 @@ public class ClassHelper {
return makeWithoutCaching(name);
}
- private static final Map<ClassNode, ClassNode> PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP = Maps.of(
+ private static final Map<ClassNode, ClassNode> PRIMITIVE_TYPE_TO_WRAPPER_TYPE_MAP = Maps.of(
boolean_TYPE, Boolean_TYPE,
byte_TYPE, Byte_TYPE,
char_TYPE, Character_TYPE,
@@ -282,7 +286,7 @@ public class ClassHelper {
cn = cn.redirect();
if (!isPrimitiveType(cn)) return cn;
- ClassNode result = PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP.get(cn);
+ ClassNode result = PRIMITIVE_TYPE_TO_WRAPPER_TYPE_MAP.get(cn);
if (null != result) {
return result;
@@ -291,13 +295,13 @@ public class ClassHelper {
return cn;
}
- private static final Map<ClassNode, ClassNode> WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP = Maps.inverse(PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP);
+ private static final Map<ClassNode, ClassNode> WRAPPER_TYPE_TO_PRIMITIVE_TYPE_MAP = Maps.inverse(PRIMITIVE_TYPE_TO_WRAPPER_TYPE_MAP);
public static ClassNode getUnwrapper(ClassNode cn) {
cn = cn.redirect();
if (isPrimitiveType(cn)) return cn;
- ClassNode result = WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP.get(cn);
+ ClassNode result = WRAPPER_TYPE_TO_PRIMITIVE_TYPE_MAP.get(cn);
if (null != result) {
return result;
http://git-wip-us.apache.org/repos/asf/groovy/blob/5217a582/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java
index 2f7349a..56a2e06 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java
@@ -40,7 +40,7 @@ import static org.codehaus.groovy.ast.ClassHelper.short_TYPE;
*/
public class TypeDescriptionUtil {
private static final String REF_DESCRIPTION = "L";
- private static final Map<ClassNode, String> TYPE_TO_DESCRIPTION_MAP = Maps.of(
+ private static final Map<ClassNode, String> PRIMITIVE_TYPE_TO_DESCRIPTION_MAP = Maps.of(
int_TYPE, "I",
VOID_TYPE,"V",
boolean_TYPE, "Z",
@@ -52,7 +52,7 @@ public class TypeDescriptionUtil {
long_TYPE, "J"
);
- private static final Map<String, ClassNode> NAME_TO_TYPE_MAP = Maps.of(
+ public static final Map<String, ClassNode> NAME_TO_PRIMITIVE_TYPE_MAP = Maps.of(
"int", int_TYPE,
"void", VOID_TYPE,
"boolean", boolean_TYPE,
@@ -65,15 +65,15 @@ public class TypeDescriptionUtil {
);
public static boolean isPrimitiveType(String name) {
- return NAME_TO_TYPE_MAP.containsKey(name);
+ return NAME_TO_PRIMITIVE_TYPE_MAP.containsKey(name);
}
public static boolean isPrimitiveType(ClassNode type) {
- return TYPE_TO_DESCRIPTION_MAP.containsKey(type);
+ return PRIMITIVE_TYPE_TO_DESCRIPTION_MAP.containsKey(type);
}
public static String getDescriptionByType(ClassNode type) {
- String desc = TYPE_TO_DESCRIPTION_MAP.get(type);
+ String desc = PRIMITIVE_TYPE_TO_DESCRIPTION_MAP.get(type);
if (null == desc) { // reference type
if (!type.isArray()) {
@@ -95,7 +95,7 @@ public class TypeDescriptionUtil {
}
public static String getDescriptionByName(String name) {
- ClassNode type = NAME_TO_TYPE_MAP.get(name);
+ ClassNode type = NAME_TO_PRIMITIVE_TYPE_MAP.get(name);
if (null == type) {
return makeRefDescription(name);