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:53:39 UTC
[groovy] branch GROOVY_3_0_X 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 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 56e7b36 GROOVY-10197: namedArgs.containsKey(propertyName) isn't implicit-this
56e7b36 is described below
commit 56e7b3681b33100168f75655d26b36e5b0fd8121
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Fri Aug 13 13:09:47 2021 -0500
GROOVY-10197: namedArgs.containsKey(propertyName) isn't implicit-this
Conflicts:
src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
---
.../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 591bd70..3939944 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;
@@ -330,11 +331,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); // GROOVY-10197
+ block.addStatement(ifS(containsProperty, assignS(varX(pNode), propX(namedArgs, pNode.getName()))));
}
block.addStatement(stmt(callX(CHECK_METHOD_TYPE, "checkPropNames", args(varX("this"), namedArgs))));
return block;
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()
- }
}
-