Repository: groovy
Updated Branches:
  refs/heads/master c6f32044e -> 0765a21f6


minor refactor


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

Branch: refs/heads/master
Commit: 0765a21f6a058f7023d73a170635a4dffa851a72
Parents: c6f3204
Author: paulk <[email protected]>
Authored: Mon Aug 29 12:05:47 2016 +1000
Committer: paulk <[email protected]>
Committed: Mon Aug 29 12:05:47 2016 +1000

----------------------------------------------------------------------
 src/main/groovy/lang/MetaClassImpl.java         | 17 +++++------------
 .../codehaus/groovy/ast/tools/GeneralUtils.java | 20 ++++++++++++++++++++
 .../codehaus/groovy/control/ResolveVisitor.java | 13 ++++---------
 3 files changed, 29 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/0765a21f/src/main/groovy/lang/MetaClassImpl.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/MetaClassImpl.java 
b/src/main/groovy/lang/MetaClassImpl.java
index 32988a9..91ddf9a 100644
--- a/src/main/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/lang/MetaClassImpl.java
@@ -92,15 +92,11 @@ import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+import static org.codehaus.groovy.ast.tools.GeneralUtils.inSamePackage;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.isDefaultVisibility;
+
 /**
  * Allows methods to be dynamically added to existing classes at runtime
- *
- * @author <a href="mailto:[email protected]";>James Strachan</a>
- * @author Guillaume Laforge
- * @author <a href="mailto:[email protected]";>Jochen "blackdrag" Theodorou</a>
- * @author Graeme Rocher
- * @author Alex Tkachman
- * @author Roshan Dawrani
  * @see groovy.lang.MetaClass
  */
 public class MetaClassImpl implements MetaClass, MutableMetaClass {
@@ -2403,12 +2399,9 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
     }
 
     private static boolean packageLocal(CachedField mfp, CachedClass klass) {
-        if ((mfp.getModifiers() & (Modifier.PRIVATE | Modifier.PUBLIC | 
Modifier.PROTECTED)) != 0 || klass == null)
+        if (klass == null)
             return false;
-        Package fieldPackage = mfp.field.getDeclaringClass().getPackage();
-        Package classPackage = klass.getTheClass().getPackage();
-        return (fieldPackage == null && classPackage == null) ||
-                fieldPackage != null && classPackage != null && 
fieldPackage.getName().equals(classPackage.getName());
+        return isDefaultVisibility(mfp.getModifiers()) && 
inSamePackage(mfp.field.getDeclaringClass(), klass.getTheClass());
     }
 
     private void applyStrayPropertyMethods(LinkedList<CachedClass> 
superClasses, Index classPropertyIndex, boolean isThis) {

http://git-wip-us.apache.org/repos/asf/groovy/blob/0765a21f/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java 
b/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
index ba9bb0e..b7d9deb 100644
--- a/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -25,6 +25,7 @@ import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
 import org.codehaus.groovy.ast.MethodNode;
+import org.codehaus.groovy.ast.PackageNode;
 import org.codehaus.groovy.ast.Parameter;
 import org.codehaus.groovy.ast.PropertyNode;
 import org.codehaus.groovy.ast.Variable;
@@ -63,6 +64,7 @@ import org.codehaus.groovy.syntax.Token;
 import org.codehaus.groovy.syntax.Types;
 import org.codehaus.groovy.transform.AbstractASTTransformation;
 
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -762,4 +764,22 @@ public class GeneralUtils {
     public static String getSetterName(String name) {
         return "set" + Verifier.capitalize(name);
     }
+
+    public static boolean isDefaultVisibility(int modifiers) {
+        return (modifiers & (Modifier.PRIVATE | Modifier.PUBLIC | 
Modifier.PROTECTED)) == 0;
+    }
+
+    public static boolean inSamePackage(ClassNode first, ClassNode second) {
+        PackageNode firstPackage = first.getPackage();
+        PackageNode secondPackage = second.getPackage();
+        return ((firstPackage == null && secondPackage == null) ||
+                        firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
+    }
+
+    public static boolean inSamePackage(Class first, Class second) {
+        Package firstPackage = first.getPackage();
+        Package secondPackage = second.getPackage();
+        return ((firstPackage == null && secondPackage == null) ||
+                        firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
+    }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/0765a21f/src/main/org/codehaus/groovy/control/ResolveVisitor.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/org/codehaus/groovy/control/ResolveVisitor.java
index af199ef..0a018c0 100644
--- a/src/main/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/org/codehaus/groovy/control/ResolveVisitor.java
@@ -35,6 +35,9 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.reflect.Modifier;
 import java.util.*;
 
+import static org.codehaus.groovy.ast.tools.GeneralUtils.inSamePackage;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.isDefaultVisibility;
+
 /**
  * Visitor to resolve Types and convert VariableExpression to
  * ClassExpressions if needed. The ResolveVisitor will try to
@@ -43,10 +46,6 @@ import java.util.*;
  * will force creation of a ClassExpression for C
  * <p>
  * Note: the method to start the resolving is  startResolving(ClassNode, 
SourceUnit).
- *
- * @author Jochen Theodorou
- * @author Roshan Dawrani
- * @author Alex Tkachman
  */
 public class ResolveVisitor extends ClassCodeExpressionTransformer {
     private ClassNode currentClass;
@@ -872,11 +871,7 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
         ClassNode redirect = type.redirect();
         if (Modifier.isPublic(redirect.getModifiers()) || 
Modifier.isProtected(redirect.getModifiers())) return true;
         // package local
-        PackageNode classPackage = ceType.getPackage();
-        PackageNode nestedPackage = redirect.getPackage();
-        return (redirect.getModifiers() & (Modifier.PROTECTED | 
Modifier.PUBLIC | Modifier.PRIVATE)) == 0 &&
-                ((classPackage == null && nestedPackage == null) ||
-                        classPackage != null && nestedPackage != null && 
classPackage.getName().equals(nestedPackage.getName()));
+        return isDefaultVisibility(redirect.getModifiers()) && 
inSamePackage(ceType, redirect);
     }
 
     private boolean directlyImplementsTrait(ClassNode trait) {

Reply via email to