You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2017/05/26 00:04:54 UTC
[3/9] groovy git commit: Minor refactoring
Minor refactoring
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/1269bcc6
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/1269bcc6
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/1269bcc6
Branch: refs/heads/GROOVY_2_6_X
Commit: 1269bcc62dc2fef5044b80e9fb1ab54d19d87fb8
Parents: 4e84d7e
Author: sunlan <su...@apache.org>
Authored: Sat May 20 22:34:30 2017 +0800
Committer: paulk <pa...@asert.com.au>
Committed: Fri May 26 10:04:24 2017 +1000
----------------------------------------------------------------------
src/main/org/apache/groovy/util/Maps.java | 28 ++++++++++++++
.../groovy/control/CompilerConfiguration.java | 15 ++++----
.../apache/groovy/parser/antlr4/AstBuilder.java | 23 ++++++------
.../groovy/parser/antlr4/ModifierManager.java | 11 +++---
.../groovy/parser/antlr4/ModifierNode.java | 39 ++++++++++----------
.../parser/antlr4/internal/AtnManager.java | 12 +++---
.../groovy/parser/antlr4/util/StringUtils.java | 17 ++++-----
7 files changed, 84 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/src/main/org/apache/groovy/util/Maps.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/groovy/util/Maps.java b/src/main/org/apache/groovy/util/Maps.java
new file mode 100644
index 0000000..e94005c
--- /dev/null
+++ b/src/main/org/apache/groovy/util/Maps.java
@@ -0,0 +1,28 @@
+package org.apache.groovy.util;
+
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Map utilities.
+ */
+public abstract class Maps {
+ public static Map of(Object... args) {
+ int length = args.length;
+
+ if (0 != length % 2) {
+ throw new IllegalArgumentException("the length of arguments should be a power of 2");
+ }
+
+ Map map = new LinkedHashMap();
+
+ for (int i = 0, n = length / 2; i < n; i++) {
+ int index = i * 2;
+
+ map.put(args[index], args[index + 1]);
+ }
+
+ return Collections.unmodifiableMap(map);
+ }
+}
http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
index 9ea99e6..17ac7cf 100644
--- a/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.control;
+import org.apache.groovy.util.Maps;
import org.codehaus.groovy.control.customizers.CompilationCustomizer;
import org.codehaus.groovy.control.io.NullWriter;
import org.codehaus.groovy.control.messages.WarningMessage;
@@ -72,13 +73,13 @@ public class CompilerConfiguration {
/**
* JDK version to bytecode version mapping
*/
- public static final Map<String, Integer> JDK_TO_BYTECODE_VERSION_MAP = Collections.unmodifiableMap(new LinkedHashMap<String, Integer>() {{
- put(JDK4, Opcodes.V1_4);
- put(JDK5, Opcodes.V1_5);
- put(JDK6, Opcodes.V1_6);
- put(JDK7, Opcodes.V1_7);
- put(JDK8, Opcodes.V1_8);
- }});
+ public static final Map<String, Integer> JDK_TO_BYTECODE_VERSION_MAP = Maps.of(
+ JDK4, Opcodes.V1_4,
+ JDK5, Opcodes.V1_5,
+ JDK6, Opcodes.V1_6,
+ JDK7, Opcodes.V1_7,
+ JDK8, Opcodes.V1_8
+ );
/** An array of the valid targetBytecode values **/
public static final String[] ALLOWED_JDKS = JDK_TO_BYTECODE_VERSION_MAP.keySet().toArray(new String[0]);
http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index f50af1c..79b3d90 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -32,6 +32,7 @@ import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.groovy.parser.antlr4.internal.AtnManager;
import org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy;
import org.apache.groovy.parser.antlr4.util.StringUtils;
+import org.apache.groovy.util.Maps;
import org.codehaus.groovy.GroovyBugError;
import org.codehaus.groovy.antlr.EnumHelper;
import org.codehaus.groovy.ast.ASTNode;
@@ -3984,18 +3985,16 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
}
}
- private static final Map<ClassNode, Object> TYPE_DEFAULT_VALUE_MAP = Collections.unmodifiableMap(new HashMap<ClassNode, Object>() {
- {
- this.put(ClassHelper.int_TYPE, 0);
- this.put(ClassHelper.long_TYPE, 0L);
- this.put(ClassHelper.double_TYPE, 0.0D);
- this.put(ClassHelper.float_TYPE, 0.0F);
- this.put(ClassHelper.short_TYPE, (short) 0);
- this.put(ClassHelper.byte_TYPE, (byte) 0);
- this.put(ClassHelper.char_TYPE, (char) 0);
- this.put(ClassHelper.boolean_TYPE, Boolean.FALSE);
- }
- });
+ private static final Map<ClassNode, Object> TYPE_DEFAULT_VALUE_MAP = Maps.of(
+ ClassHelper.int_TYPE, 0,
+ ClassHelper.long_TYPE, 0L,
+ ClassHelper.double_TYPE, 0.0D,
+ ClassHelper.float_TYPE, 0.0F,
+ ClassHelper.short_TYPE, (short) 0,
+ ClassHelper.byte_TYPE, (byte) 0,
+ ClassHelper.char_TYPE, (char) 0,
+ ClassHelper.boolean_TYPE, Boolean.FALSE
+ );
private Object findDefaultValueByType(ClassNode type) {
return TYPE_DEFAULT_VALUE_MAP.get(type);
http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
index 23ce68e..22d6d69 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
@@ -18,6 +18,7 @@
*/
package org.apache.groovy.parser.antlr4;
+import org.apache.groovy.util.Maps;
import org.codehaus.groovy.ast.AnnotatedNode;
import org.codehaus.groovy.ast.AnnotationNode;
import org.codehaus.groovy.ast.ConstructorNode;
@@ -45,12 +46,10 @@ import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean;
* Created by Daniel.Sun on 2016/08/27.
*/
class ModifierManager {
- private static final Map<Class, List<Integer>> INVALID_MODIFIERS_MAP = Collections.unmodifiableMap(new HashMap<Class, List<Integer>>() {
- {
- put(ConstructorNode.class, Arrays.asList(STATIC, FINAL, ABSTRACT, NATIVE));
- put(MethodNode.class, Arrays.asList(VOLATILE/*, TRANSIENT*/));
- }
- });
+ private static final Map<Class, List<Integer>> INVALID_MODIFIERS_MAP = Maps.of(
+ ConstructorNode.class, Arrays.asList(STATIC, FINAL, ABSTRACT, NATIVE),
+ MethodNode.class, Arrays.asList(VOLATILE/*, TRANSIENT*/)
+ );
private AstBuilder astBuilder;
private List<ModifierNode> modifierNodeList;
http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
index 5d1007b..65a2f31 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
@@ -18,6 +18,7 @@
*/
package org.apache.groovy.parser.antlr4;
+import org.apache.groovy.util.Maps;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.AnnotationNode;
import org.objectweb.asm.Opcodes;
@@ -43,26 +44,24 @@ public class ModifierNode extends ASTNode {
private boolean repeatable;
public static final int ANNOTATION_TYPE = -999;
- public static final Map<Integer, Integer> MODIFIER_OPCODE_MAP = Collections.unmodifiableMap(new HashMap<Integer, Integer>() {
- {
- put(ANNOTATION_TYPE, 0);
- put(DEF, 0);
-
- put(NATIVE, Opcodes.ACC_NATIVE);
- put(SYNCHRONIZED, Opcodes.ACC_SYNCHRONIZED);
- put(TRANSIENT, Opcodes.ACC_TRANSIENT);
- put(VOLATILE, Opcodes.ACC_VOLATILE);
-
- put(PUBLIC, Opcodes.ACC_PUBLIC);
- put(PROTECTED, Opcodes.ACC_PROTECTED);
- put(PRIVATE, Opcodes.ACC_PRIVATE);
- put(STATIC, Opcodes.ACC_STATIC);
- put(ABSTRACT, Opcodes.ACC_ABSTRACT);
- put(FINAL, Opcodes.ACC_FINAL);
- put(STRICTFP, Opcodes.ACC_STRICT);
- put(DEFAULT, 0); // no flag for specifying a default method in the JVM spec, hence no ACC_DEFAULT flag in ASM
- }
- });
+ public static final Map<Integer, Integer> MODIFIER_OPCODE_MAP = Maps.of(
+ ANNOTATION_TYPE, 0,
+ DEF, 0,
+
+ NATIVE, Opcodes.ACC_NATIVE,
+ SYNCHRONIZED, Opcodes.ACC_SYNCHRONIZED,
+ TRANSIENT, Opcodes.ACC_TRANSIENT,
+ VOLATILE, Opcodes.ACC_VOLATILE,
+
+ PUBLIC, Opcodes.ACC_PUBLIC,
+ PROTECTED, Opcodes.ACC_PROTECTED,
+ PRIVATE, Opcodes.ACC_PRIVATE,
+ STATIC, Opcodes.ACC_STATIC,
+ ABSTRACT, Opcodes.ACC_ABSTRACT,
+ FINAL, Opcodes.ACC_FINAL,
+ STRICTFP, Opcodes.ACC_STRICT,
+ DEFAULT, 0 // no flag for specifying a default method in the JVM spec, hence no ACC_DEFAULT flag in ASM
+ );
public ModifierNode(Integer type) {
this.type = type;
http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
index 02cc152..11dfdb5 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
@@ -21,6 +21,7 @@ package org.apache.groovy.parser.antlr4.internal;
import org.antlr.v4.runtime.atn.ATN;
import org.apache.groovy.parser.antlr4.GroovyLangLexer;
import org.apache.groovy.parser.antlr4.GroovyLangParser;
+import org.apache.groovy.util.Maps;
import java.util.Collections;
import java.util.HashMap;
@@ -40,13 +41,10 @@ public class AtnManager {
private static final int CACHE_THRESHOLD;
private final Class ownerClass;
private final ATN atn;
- private static final Map<Class, AtnWrapper> ATN_MAP =
- Collections.unmodifiableMap(new HashMap<Class, AtnWrapper>() {
- {
- put(GroovyLangLexer.class, new AtnWrapper(GroovyLangLexer._ATN));
- put(GroovyLangParser.class, new AtnWrapper(GroovyLangParser._ATN));
- }
- });
+ private static final Map<Class, AtnWrapper> ATN_MAP = Maps.of(
+ GroovyLangLexer.class, new AtnWrapper(GroovyLangLexer._ATN),
+ GroovyLangParser.class, new AtnWrapper(GroovyLangParser._ATN)
+ );
static {
int t = 50;
http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
index 980facb..5b2a311 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
@@ -19,6 +19,7 @@
package org.apache.groovy.parser.antlr4.util;
import groovy.lang.Closure;
+import org.apache.groovy.util.Maps;
import org.codehaus.groovy.runtime.StringGroovyMethods;
import java.util.HashMap;
@@ -58,15 +59,13 @@ public class StringUtils {
});
}
- private static Map<Character, Character> STANDARD_ESCAPES = new HashMap<Character, Character>() {
- {
- this.put('b', '\b');
- this.put('t', '\t');
- this.put('n', '\n');
- this.put('f', '\f');
- this.put('r', '\r');
- }
- };
+ private static Map<Character, Character> STANDARD_ESCAPES = Maps.of(
+ 'b', '\b',
+ 't', '\t',
+ 'n', '\n',
+ 'f', '\f',
+ 'r', '\r'
+ );
public static String replaceStandardEscapes(String text) {
Pattern p = Pattern.compile("(\\\\*)\\\\([btnfr\"'])");