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 2022/02/01 17:55:51 UTC
[groovy] 08/11: 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_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 0b998ce1306f3730813a96d8970d0e4563170c76
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 a9271cf..2b70572 100644
--- a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
@@ -37,6 +37,7 @@ import org.codehaus.groovy.ast.expr.BooleanExpression;
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;
@@ -337,11 +338,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()
- }
}
-