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/08/13 18:16:27 UTC
[groovy] branch master updated: GROOVY-10197:
namedArgs.containsKey(propertyName) isn't implicit-this
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 981e6b9 GROOVY-10197: namedArgs.containsKey(propertyName) isn't implicit-this
981e6b9 is described below
commit 981e6b9d9f6c8c2312f2f05afe89429788d8b59f
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Fri Aug 13 13:09:47 2021 -0500
GROOVY-10197: namedArgs.containsKey(propertyName) isn't implicit-this
---
.../TupleConstructorASTTransformation.java | 10 ++++-----
src/test/groovy/transform/stc/MiscSTCTest.groovy | 24 +++++++++++++++++++++-
.../classgen/asm/sc/MiscStaticCompileTest.groovy | 8 --------
3 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
index 28bd7c8..b2cdad3 100644
--- a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
@@ -36,6 +36,7 @@ import org.codehaus.groovy.ast.PropertyNode;
import org.codehaus.groovy.ast.expr.ClosureExpression;
import org.codehaus.groovy.ast.expr.ConstantExpression;
import org.codehaus.groovy.ast.expr.Expression;
+import org.codehaus.groovy.ast.expr.MethodCallExpression;
import org.codehaus.groovy.ast.expr.VariableExpression;
import org.codehaus.groovy.ast.stmt.BlockStatement;
import org.codehaus.groovy.ast.stmt.EmptyStatement;
@@ -333,11 +334,10 @@ public class TupleConstructorASTTransformation extends AbstractASTTransformation
for (PropertyNode pNode : cNode.getProperties()) {
if (pNode.isStatic()) continue;
- // if namedArgs.containsKey(propertyName) setProperty(propertyName, namedArgs.get(propertyName));
- Statement ifStatement = ifS(
- callX(namedArgs, "containsKey", constX(pNode.getName())),
- assignS(varX(pNode), propX(namedArgs, pNode.getName())));
- block.addStatement(ifStatement);
+ // if (namedArgs.containsKey(propertyName)) propertyNode= namedArgs.propertyName;
+ MethodCallExpression containsProperty = callX(namedArgs, "containsKey", constX(pNode.getName()));
+ containsProperty.setImplicitThis(false);
+ block.addStatement(ifS(containsProperty, assignS(varX(pNode), propX(namedArgs, pNode.getName()))));
props.add(pNode);
}
boolean pojo = !cNode.getAnnotations(POJO_TYPE).isEmpty();
diff --git a/src/test/groovy/transform/stc/MiscSTCTest.groovy b/src/test/groovy/transform/stc/MiscSTCTest.groovy
index 94be0de..9bde8b8 100644
--- a/src/test/groovy/transform/stc/MiscSTCTest.groovy
+++ b/src/test/groovy/transform/stc/MiscSTCTest.groovy
@@ -172,7 +172,7 @@ class MiscSTCTest extends StaticTypeCheckingTestCase {
1
'''
}
-
+
void testCompareEnumToNull() {
assertScript '''
enum MyEnum { a,b }
@@ -183,6 +183,28 @@ class MiscSTCTest extends StaticTypeCheckingTestCase {
'''
}
+ // GROOVY-10197
+ void testEnumMethodOverride() {
+ assertScript '''
+ enum E {
+ CONST {
+ int getValue() { 1 }
+ }
+ int getValue() { -1 }
+ }
+ assert E.CONST.value == 1
+ '''
+ assertScript '''
+ enum E {
+ CONST {
+ final int value = 1
+ }
+ int getValue() { -1 }
+ }
+ assert E.CONST.value == 1
+ '''
+ }
+
void testMethodReturnTypeInferenceShouldNotWorkBecauseNotSameSourceUnit() {
shouldFailWithMessages '''
import groovy.transform.stc.MiscSTCTest.MiscSTCTestSupport as A
diff --git a/src/test/org/codehaus/groovy/classgen/asm/sc/MiscStaticCompileTest.groovy b/src/test/org/codehaus/groovy/classgen/asm/sc/MiscStaticCompileTest.groovy
index 4377ab0..ee2b851 100644
--- a/src/test/org/codehaus/groovy/classgen/asm/sc/MiscStaticCompileTest.groovy
+++ b/src/test/org/codehaus/groovy/classgen/asm/sc/MiscStaticCompileTest.groovy
@@ -31,17 +31,9 @@ class MiscStaticCompileTest extends MiscSTCTest implements StaticCompilationTest
for(int i in 1..3){
new File(dir, "testEachFileRecurse${i}.txt").createNewFile()
}
-
dir.eachFileRecurse(FileType.FILES) { File spec ->
}
-
dir.deleteDir()
'''
}
-
- @Override
- void testCompareEnumToNull() {
- super.testCompareEnumToNull()
- }
}
-