Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 93e145732 -> 235f9ccba


Make generated closure and lambda classes final

(cherry picked from commit 4abc754)


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

Branch: refs/heads/GROOVY_2_6_X
Commit: 235f9ccba48e9106bf4f1fc44306501bffb378ec
Parents: 93e1457
Author: danielsun1106 <realblue...@hotmail.com>
Authored: Wed Mar 21 01:14:54 2018 +0800
Committer: sunlan <sun...@apache.org>
Committed: Wed Mar 21 08:22:05 2018 +0800

----------------------------------------------------------------------
 src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java | 3 ++-
 .../codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/235f9ccb/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
index 22b8653..6ca8574 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
@@ -51,6 +51,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import static org.objectweb.asm.Opcodes.ACC_FINAL;
 import static org.objectweb.asm.Opcodes.ACC_PRIVATE;
 import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
 import static org.objectweb.asm.Opcodes.ACC_STATIC;
@@ -91,7 +92,7 @@ public class ClosureWriter {
 
         // generate closure as public class to make sure it can be properly 
invoked by classes of the
         // Groovy runtime without circumventing JVM access checks (see 
CachedMethod for example).
-        int mods = ACC_PUBLIC;
+        int mods = ACC_PUBLIC | ACC_FINAL;
         if (classNode.isInterface()) {
             mods |= ACC_STATIC;
         }

http://git-wip-us.apache.org/repos/asf/groovy/blob/235f9ccb/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
index 510d580..50b8542 100644
--- 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
+++ 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
@@ -56,6 +56,7 @@ import java.util.Map;
 
 import static 
org.codehaus.groovy.transform.stc.StaticTypesMarker.INFERRED_LAMBDA_TYPE;
 import static 
org.codehaus.groovy.transform.stc.StaticTypesMarker.PARAMETER_TYPE;
+import static org.objectweb.asm.Opcodes.ACC_FINAL;
 import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
 import static org.objectweb.asm.Opcodes.ACC_STATIC;
 import static org.objectweb.asm.Opcodes.ACC_SYNTHETIC;
@@ -108,7 +109,7 @@ public class StaticTypesLambdaWriter extends LambdaWriter {
 
         ClassNode classNode = controller.getClassNode();
         boolean isInterface = classNode.isInterface();
-        ClassNode lambdaWrapperClassNode = getOrAddLambdaClass(expression, 
ACC_PUBLIC | (isInterface ? ACC_STATIC : 0) | ACC_SYNTHETIC, 
abstractMethodNode);
+        ClassNode lambdaWrapperClassNode = getOrAddLambdaClass(expression, 
ACC_PUBLIC | ACC_FINAL | (isInterface ? ACC_STATIC : 0) | ACC_SYNTHETIC, 
abstractMethodNode);
         MethodNode syntheticLambdaMethodNode = 
lambdaWrapperClassNode.getMethods(DO_CALL).get(0);
 
         newGroovyLambdaWrapperAndLoad(lambdaWrapperClassNode, 
syntheticLambdaMethodNode);

Reply via email to