You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2021/02/20 15:07:01 UTC
[groovy] branch GROOVY_2_5_X updated: GROOVY-7996: restrict to
non-static get/set/propertyMissing
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_2_5_X by this push:
new f7cbef2 GROOVY-7996: restrict to non-static get/set/propertyMissing
f7cbef2 is described below
commit f7cbef2d399c934cac473d80eb0dce1339d3bbc3
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Fri Feb 19 12:54:53 2021 -0600
GROOVY-7996: restrict to non-static get/set/propertyMissing
Conflicts:
src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
---
.../org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
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 1162175..819d9ff 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1590,7 +1590,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
}
}
- // GROOVY-7996: check if receiver implements get(String)/set(String,Object) or propertyMissing(String)
+ // GROOVY-7996: check if receiver implements get(String)/set(String,Object) or propertyMissing(String) or $static_propertyMissing(String)?
if (!receiverType.isArray() && !isPrimitiveType(getUnwrapper(receiverType))
&& pexp.isImplicitThis() && typeCheckingContext.getEnclosingClosure() != null) {
MethodNode mopMethod;
@@ -1601,7 +1601,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
}
if (mopMethod == null) mopMethod = receiverType.getMethod("propertyMissing", new Parameter[]{new Parameter(STRING_TYPE, "propertyName")});
- if (mopMethod != null && !mopMethod.isSynthetic()) {
+ if (mopMethod != null && !mopMethod.isStatic() && !mopMethod.isSynthetic()) {
pexp.putNodeMetaData(StaticTypesMarker.DYNAMIC_RESOLUTION, Boolean.TRUE);
pexp.removeNodeMetaData(DECLARATION_INFERRED_TYPE);
pexp.removeNodeMetaData(INFERRED_TYPE);