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 2020/06/25 19:03:44 UTC

[groovy] branch GROOVY_3_0_X updated: moved "super" handling into type chooser and removed redundant branch

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


The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
     new c25dfcc  moved "super" handling into type chooser and removed redundant branch
c25dfcc is described below

commit c25dfccd8ead92359bc32749ce5ea9109b99ae71
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Thu Jun 25 13:24:51 2020 -0500

    moved "super" handling into type chooser and removed redundant branch
    
    (cherry picked from commit 2e3ea2ed8b4e1015c61f9d8d27774c38f74f330c)
---
 src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java  | 2 +-
 .../org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java | 7 ++-----
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
index 0af38c0..eb181d8 100644
--- a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
@@ -1045,7 +1045,7 @@ public class AsmClassGenerator extends ClassGenerator {
         if (isThisExpression(objectExpression)) return true;
         if (objectExpression instanceof ClassExpression) return false;
 
-        ClassNode objectExpressionType = isSuperExpression(objectExpression) ? controller.getClassNode().getSuperClass() : controller.getTypeChooser().resolveType(objectExpression, controller.getClassNode());
+        ClassNode objectExpressionType = controller.getTypeChooser().resolveType(objectExpression, controller.getClassNode());
         if (objectExpressionType.equals(ClassHelper.OBJECT_TYPE)) objectExpressionType = objectExpression.getType();
         return objectExpressionType.isDerivedFromGroovyObject();
     }
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java b/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java
index 819dd17..f140d32 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java
@@ -20,7 +20,6 @@ package org.codehaus.groovy.classgen.asm;
 
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
-import org.codehaus.groovy.ast.FieldNode;
 import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.Variable;
 import org.codehaus.groovy.ast.expr.ClassExpression;
@@ -48,10 +47,8 @@ public class StatementMetaTypeChooser implements TypeChooser {
         if (exp instanceof VariableExpression) {
             VariableExpression ve = (VariableExpression) exp;
             if (ve.isClosureSharedVariable()) return ve.getType();
-            if (ve.getAccessedVariable() instanceof FieldNode) {
-                FieldNode fn = (FieldNode) ve.getAccessedVariable();
-                if (!fn.getDeclaringClass().equals(current)) return fn.getOriginType();
-            }
+            if (ve.isSuperExpression()) return current.getSuperClass();
+
             type = ve.getOriginType();
         } else if (exp instanceof Variable) {
             Variable v = (Variable) exp;