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/04/12 23:56:06 UTC

groovy git commit: GROOVY-8543: Support setting compileStatic by default via system properties

Repository: groovy
Updated Branches:
  refs/heads/master e72361882 -> 81ffc8099


GROOVY-8543: Support setting compileStatic by default via system properties


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/81ffc809
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/81ffc809
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/81ffc809

Branch: refs/heads/master
Commit: 81ffc8099bb3916885d796b40d7d811350c67dff
Parents: e723618
Author: sunlan <su...@apache.org>
Authored: Fri Apr 13 07:56:00 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Fri Apr 13 07:56:00 2018 +0800

----------------------------------------------------------------------
 .../org/apache/groovy/parser/antlr4/AstBuilder.java | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/81ffc809/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 80988f6..22c59d2 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
@@ -1187,6 +1187,9 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
         classNode.putNodeMetaData(CLASS_NAME, className);
         classNode.setSyntheticPublic(syntheticPublic);
 
+        if (COMPILE_STATIC_BY_DEFAULT) {
+            attachCompileStaticAnnotation(classNode);
+        }
         if (asBoolean(ctx.TRAIT())) {
             attachTraitAnnotation(classNode);
         }
@@ -1257,8 +1260,16 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
         return classNode;
     }
 
+    private void attachCompileStaticAnnotation(ClassNode classNode) {
+        attachAnnotation(classNode, GROOVY_TRANSFORM_COMPILE_STATIC);
+    }
+
     private void attachTraitAnnotation(ClassNode classNode) {
-        classNode.addAnnotation(new AnnotationNode(ClassHelper.make(GROOVY_TRANSFORM_TRAIT)));
+        attachAnnotation(classNode, GROOVY_TRANSFORM_TRAIT);
+    }
+
+    private void attachAnnotation(ClassNode classNode, String annotationClassName) {
+        classNode.addAnnotation(new AnnotationNode(ClassHelper.make(annotationClassName)));
     }
 
     @SuppressWarnings({"unchecked"})
@@ -4741,6 +4752,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
 
     private static final String PACKAGE_INFO = "package-info";
     private static final String PACKAGE_INFO_FILE_NAME = PACKAGE_INFO + ".groovy";
+    private static final String GROOVY_TRANSFORM_COMPILE_STATIC = "groovy.transform.CompileStatic";
     private static final String GROOVY_TRANSFORM_TRAIT = "groovy.transform.Trait";
     private static final Set<String> PRIMITIVE_TYPE_SET = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("boolean", "char", "byte", "short", "int", "long", "float", "double")));
     private static final Logger LOGGER = Logger.getLogger(AstBuilder.class.getName());
@@ -4768,4 +4780,6 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
     private static final String ENCLOSING_INSTANCE_EXPRESSION = "_ENCLOSING_INSTANCE_EXPRESSION";
 
     private static final String CLASS_NAME = "_CLASS_NAME";
+
+    private static final boolean COMPILE_STATIC_BY_DEFAULT = Boolean.getBoolean("groovy.compile.static.by.default");
 }