Repository: groovy Updated Branches: refs/heads/master 0e055fb24 -> b02d2f57c
Minor refactoring Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/b02d2f57 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b02d2f57 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b02d2f57 Branch: refs/heads/master Commit: b02d2f57c09ba6ba46553ed77aff191ec9ab274e Parents: 0e055fb Author: sunlan <[email protected]> Authored: Sat May 20 22:34:30 2017 +0800 Committer: sunlan <[email protected]> Committed: Sat May 20 22:35:21 2017 +0800 ---------------------------------------------------------------------- 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/b02d2f57/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/b02d2f57/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 763d4e5..c0f00c6 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/b02d2f57/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 2930f26..451cff8 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; @@ -3905,18 +3906,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/b02d2f57/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 a45e36c..c3fb287 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; @@ -44,12 +45,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/b02d2f57/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/b02d2f57/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/b02d2f57/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 739a737..8903513 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\"'])");
