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/03/21 00:34:28 UTC
groovy git commit: Make generated closure classes final
Repository: groovy
Updated Branches:
refs/heads/GROOVY_2_5_X a59372b5c -> 56201b748
Make generated closure classes final
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/56201b74
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/56201b74
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/56201b74
Branch: refs/heads/GROOVY_2_5_X
Commit: 56201b7488c4071b9e0581dc83170a1c65f1ae65
Parents: a59372b
Author: sunlan <su...@apache.org>
Authored: Wed Mar 21 08:23:49 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Wed Mar 21 08:23:49 2018 +0800
----------------------------------------------------------------------
src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/56201b74/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 148567b..60fe447 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
@@ -52,6 +52,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;
@@ -89,7 +90,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;
}