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 2019/10/30 15:55:35 UTC

[groovy] 11/17: trivial refactor

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit a814f30891efef9245e409328b060163b83c0279
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Tue Oct 29 18:52:33 2019 -0500

    trivial refactor
    
    (cherry picked from commit 72392fd647dbb81e2ade639986920aedc75b926c)
---
 .../groovy/classgen/AsmClassGenerator.java         | 27 ++++++++++++----------
 .../classgen/asm/sc/StaticTypesCallSiteWriter.java | 20 ++++++++--------
 .../transform/stc/StaticTypeCheckingVisitor.java   | 19 +++++++--------
 3 files changed, 32 insertions(+), 34 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
index 069e198..d7c30f4 100644
--- a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
@@ -178,7 +178,7 @@ public class AsmClassGenerator extends ClassGenerator {
     private final Map genericParameterNames;
     private final SourceUnit source;
     private WriterController controller;
-    
+
     public AsmClassGenerator(
             SourceUnit source, GeneratorContext context,
             ClassVisitor classVisitor, String sourceFile
@@ -1092,7 +1092,7 @@ public class AsmClassGenerator extends ClassGenerator {
             return;
         }
 
-        if (propName!=null) {
+        if (propName != null) {
             // TODO: spread safe should be handled inside
             if (adapter == getProperty && !expression.isSpreadSafe()) {
                 controller.getCallSiteWriter().makeGetPropertySite(objectExpression, propName, expression.isSafe(), expression.isImplicitThis());
@@ -1163,25 +1163,28 @@ public class AsmClassGenerator extends ClassGenerator {
         return controller.isStaticContext() && isThisOrSuper(objectExpression);
     }
 
+    @Override
     public void visitPropertyExpression(PropertyExpression expression) {
         Expression objectExpression = expression.getObjectExpression();
         OperandStack operandStack = controller.getOperandStack();
-        int mark = operandStack.getStackLength()-1;
+        int mark = operandStack.getStackLength() - 1;
         MethodCallerMultiAdapter adapter;
         if (controller.getCompileStack().isLHS()) {
-            //operandStack.box();
-            adapter = setProperty;
-            if (isGroovyObject(objectExpression)) adapter = setGroovyObjectProperty;
-            if (isThisOrSuperInStaticContext(objectExpression)) adapter = setProperty;
+            if (isGroovyObject(objectExpression) && !isThisOrSuperInStaticContext(objectExpression)) {
+                adapter = setGroovyObjectProperty;
+            } else {
+                adapter = setProperty;
+            }
         } else {
-            adapter = getProperty;
-            if (isGroovyObject(objectExpression)) adapter = getGroovyObjectProperty;
-            if (isThisOrSuperInStaticContext(objectExpression)) adapter = getProperty;
+            if (isGroovyObject(objectExpression) && !isThisOrSuperInStaticContext(objectExpression)) {
+                adapter = getGroovyObjectProperty;
+            } else {
+                adapter = getProperty;
+            }
         }
         visitAttributeOrProperty(expression, adapter);
         if (controller.getCompileStack().isLHS()) {
-            // remove surplus values
-            operandStack.remove(operandStack.getStackLength()-mark);
+            operandStack.remove(operandStack.getStackLength() - mark);
         } else {
             controller.getAssertionWriter().record(expression.getProperty());
         }
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
index 1b2ab80..3c09a11 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
@@ -196,7 +196,7 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter implements Opcodes
         }
         if (makeGetPrivateFieldWithBridgeMethod(receiver, receiverType, propertyName, safe, implicitThis)) return;
 
-        // GROOVY-5580, it is still possible that we're calling a superinterface property
+        // GROOVY-5580: it is still possible that we're calling a superinterface property
         String getterName = "get" + capitalize(propertyName);
         String altGetterName = "is" + capitalize(propertyName);
         if (receiverType.isInterface()) {
@@ -226,7 +226,7 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter implements Opcodes
             }
         }
 
-        // GROOVY-5568, we would be facing a DGM call, but instead of foo.getText(), have foo.text
+        // GROOVY-5568: we would be facing a DGM call, but instead of foo.getText(), have foo.text
         List<MethodNode> methods = findDGMMethodsByNameAndArguments(controller.getSourceUnit().getClassLoader(), receiverType, getterName, ClassNode.EMPTY_ARRAY);
         for (MethodNode dgm : findDGMMethodsByNameAndArguments(controller.getSourceUnit().getClassLoader(), receiverType, altGetterName, ClassNode.EMPTY_ARRAY)) {
             if (Boolean_TYPE.equals(getWrapper(dgm.getReturnType()))) methods.add(dgm);
@@ -256,8 +256,7 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter implements Opcodes
 
         String receiverName = (receiver instanceof ClassExpression ? receiver.getType() : receiverType).toString(false);
         controller.getSourceUnit().addError(
-                new SyntaxException("Access to " + receiverName + "#" + propertyName + " is forbidden",
-                    receiver.getLineNumber(), receiver.getColumnNumber(), receiver.getLastLineNumber(), receiver.getLastColumnNumber())        );
+                new SyntaxException("Access to " + receiverName + "#" + propertyName + " is forbidden", receiver));
         controller.getMethodVisitor().visitInsn(ACONST_NULL);
         controller.getOperandStack().push(OBJECT_TYPE);
     }
@@ -411,18 +410,17 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter implements Opcodes
             return makeGetPrivateFieldWithBridgeMethod(pexp, outerClass, fieldName, safe, true);
         }
         ClassNode classNode = controller.getClassNode();
-        if (field != null && field.isPrivate()
-                && (StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(receiverType, classNode) || StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(classNode,receiverType))
-                && !receiverType.equals(classNode)) {
+        if (field != null && field.isPrivate() && !receiverType.equals(classNode)
+                && (StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(receiverType, classNode) || StaticInvocationWriter.isPrivateBridgeMethodsCallAllowed(classNode, receiverType))) {
             Map<String, MethodNode> accessors = receiverType.redirect().getNodeMetaData(StaticCompilationMetadataKeys.PRIVATE_FIELDS_ACCESSORS);
-            if (accessors!=null) {
+            if (accessors != null) {
                 MethodNode methodNode = accessors.get(fieldName);
-                if (methodNode!=null) {
+                if (methodNode != null) {
                     MethodCallExpression mce = new MethodCallExpression(receiver, methodNode.getName(),
-                            new ArgumentListExpression(field.isStatic()?new ConstantExpression(null):receiver));
+                            new ArgumentListExpression(field.isStatic() ? new ConstantExpression(null) : receiver));
+                    mce.setImplicitThis(implicitThis);
                     mce.setMethodTarget(methodNode);
                     mce.setSafe(safe);
-                    mce.setImplicitThis(implicitThis);
                     mce.visit(controller.getAcg());
                     return true;
                 }
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index f38d0d7..633d7fa 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -503,22 +503,19 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
      */
     private void checkOrMarkPrivateAccess(Expression source, FieldNode fn, boolean lhsOfAssignment) {
         if (fn == null) return;
-        ClassNode enclosingClassNode = typeCheckingContext.getEnclosingClassNode();
-        ClassNode declaringClass = fn.getDeclaringClass();
-        if (fn.isPrivate() &&
-                (declaringClass != enclosingClassNode || typeCheckingContext.getEnclosingClosure() != null) &&
-                declaringClass.getModule() == enclosingClassNode.getModule()) {
+        ClassNode declaringClass = fn.getDeclaringClass(), enclosingClassNode = typeCheckingContext.getEnclosingClassNode();
+        if (fn.isPrivate() && (declaringClass != enclosingClassNode || typeCheckingContext.getEnclosingClosure() != null)
+                && declaringClass.getModule() == enclosingClassNode.getModule()) {
             if (!lhsOfAssignment && enclosingClassNode.isDerivedFrom(declaringClass)) {
                 // check for a public/protected getter since JavaBean getters haven't been recognised as properties
                 // at this point and we don't want private field access for that case which will be handled later
-                boolean isPrimBool = fn.getOriginType().equals(boolean_TYPE);
                 String suffix = Verifier.capitalize(fn.getName());
-                MethodNode getterNode = findValidGetter(enclosingClassNode, "get" + suffix);
-                if (getterNode == null && isPrimBool) {
-                    getterNode = findValidGetter(enclosingClassNode, "is" + suffix);
+                MethodNode getter = findValidGetter(enclosingClassNode, "get" + suffix);
+                if (getter == null && boolean_TYPE.equals(fn.getOriginType())) {
+                    getter = findValidGetter(enclosingClassNode, "is" + suffix);
                 }
-                if (getterNode != null) {
-                    source.putNodeMetaData(INFERRED_TYPE, getterNode.getReturnType());
+                if (getter != null) {
+                    source.putNodeMetaData(INFERRED_TYPE, getter.getReturnType());
                     return;
                 }
             }