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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

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

Daniel.Sun
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 289cd1b90 -> f1e1c2de7


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

Avoid adding `CompilationCustomizer` multiple times and rename the option name to "groovy.compile.static"

(cherry picked from commit 31c5dab)


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

Branch: refs/heads/GROOVY_2_6_X
Commit: f1e1c2de7ddbc2ca0d1238e240b6f94e0199509e
Parents: 289cd1b
Author: sunlan <[hidden email]>
Authored: Fri Apr 13 19:13:52 2018 +0800
Committer: sunlan <[hidden email]>
Committed: Fri Apr 13 19:15:16 2018 +0800

----------------------------------------------------------------------
 .../groovy/control/CompilerConfiguration.java   | 62 ++++++++++----------
 1 file changed, 32 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/f1e1c2de/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
index 293d8da..15ae8c9 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -199,8 +199,6 @@ public class CompilerConfiguration {
 
     private final List<CompilationCustomizer> compilationCustomizers = new LinkedList<CompilationCustomizer>();
 
-    private static final boolean COMPILE_STATIC_BY_DEFAULT = Boolean.getBoolean("groovy.compile.static.by.default");
-
     /**
      * Sets a list of global AST transformations which should not be loaded even if they are
      * defined in META-INF/org.codehaus.groovy.transform.ASTTransformation files. By default,
@@ -943,47 +941,51 @@ public class CompilerConfiguration {
         return indyEnabled;
     }
 
+    private boolean compileStatic;
     private void enableCompileStaticByDefault() {
-        if (!COMPILE_STATIC_BY_DEFAULT) {
+        if (compileStatic) {
+            return;
+        }
+        if (!Boolean.getBoolean("groovy.compile.static")) {
             return;
         }
 
         compilationCustomizers.add(
-                new CompilationCustomizer(CompilePhase.CONVERSION) {
-                    @Override
-                    public void call(final SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException {
-                        for (ClassNode cn : source.getAST().getClasses()) {
-                            new ClassCodeVisitorSupport() {
-                                @Override
-                                public void visitClass(ClassNode node) {
-                                    enableCompileStatic(node);
+            new CompilationCustomizer(CompilePhase.CONVERSION) {
+                @Override
+                public void call(final SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException {
+                    for (ClassNode cn : source.getAST().getClasses()) {
+                        new ClassCodeVisitorSupport() {
+                            @Override
+                            public void visitClass(ClassNode node) {
+                                enableCompileStatic(node);
+                            }
+
+                            private void enableCompileStatic(ClassNode classNode) {
+                                if (!classNode.getAnnotations(ClassHelper.make(GROOVY_TRANSFORM_COMPILE_STATIC)).isEmpty()) {
+                                    return;
                                 }
-
-                                private void enableCompileStatic(ClassNode classNode) {
-                                    if (!classNode.getAnnotations(ClassHelper.make(GROOVY_TRANSFORM_COMPILE_STATIC)).isEmpty()) {
-                                        return;
-                                    }
-
-                                    if (!classNode.getAnnotations(ClassHelper.make(GROOVY_TRANSFORM_COMPILE_DYNAMIC)).isEmpty()) {
-                                        return;
-                                    }
-
-                                    classNode.addAnnotation(new AnnotationNode(ClassHelper.make(GROOVY_TRANSFORM_COMPILE_STATIC)));
+                                if (!classNode.getAnnotations(ClassHelper.make(GROOVY_TRANSFORM_COMPILE_DYNAMIC)).isEmpty()) {
+                                    return;
                                 }
 
-                                @Override
-                                protected SourceUnit getSourceUnit() {
-                                    return source;
-                                }
+                                classNode.addAnnotation(new AnnotationNode(ClassHelper.make(GROOVY_TRANSFORM_COMPILE_STATIC)));
+                            }
 
-                                private static final String GROOVY_TRANSFORM_COMPILE_STATIC = "groovy.transform.CompileStatic";
-                                private static final String GROOVY_TRANSFORM_COMPILE_DYNAMIC = "groovy.transform.CompileDynamic";
-                            }.visitClass(cn);
-                        }
+                            @Override
+                            protected SourceUnit getSourceUnit() {
+                                return source;
+                            }
+
+                            private static final String GROOVY_TRANSFORM_COMPILE_STATIC = "groovy.transform.CompileStatic";
+                            private static final String GROOVY_TRANSFORM_COMPILE_DYNAMIC = "groovy.transform.CompileDynamic";
+                        }.visitClass(cn);
                     }
                 }
+            }
         );
 
+        compileStatic = true;
     }
     { enableCompileStaticByDefault(); }
 }