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;
}
}