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 2022/10/02 21:33:44 UTC
[groovy] branch GROOVY-10783 created (now e0928d55e0)
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a change to branch GROOVY-10783
in repository https://gitbox.apache.org/repos/asf/groovy.git
at e0928d55e0 GROOVY-10783: propertyMissing of category does not work when indy enabled
This branch includes the following new commits:
new e0928d55e0 GROOVY-10783: propertyMissing of category does not work when indy enabled
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[groovy] 01/01: GROOVY-10783: propertyMissing of category does not work when indy enabled
Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY-10783
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit e0928d55e019cde354cea955f425ce757d2fb967
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Oct 3 05:33:03 2022 +0800
GROOVY-10783: propertyMissing of category does not work when indy enabled
Though groovy 4+ enable indy by default, gradle does not.
To enable indy in gradle, set `groovyOptions.optimizationOptions.indy = true`
---
src/main/java/groovy/lang/MetaClassImpl.java | 3 +++
src/test/groovy/CategoryTest.groovy | 15 ++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java
index 7617f376f3..2c0c40ac90 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -2118,6 +2118,9 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
//----------------------------------------------------------------------
if (!useSuper && !isStatic && GroovyCategorySupport.hasCategoryInCurrentThread()) {
method = getCategoryMethodGetter(sender, "get", true);
+ if (null == method) {
+ method = getCategoryMethodGetter(sender, PROPERTY_MISSING, true);
+ }
if (method != null) {
return new GetMethodMetaProperty(name, VM_PLUGIN.transformMetaMethod(this, method));
}
diff --git a/src/test/groovy/CategoryTest.groovy b/src/test/groovy/CategoryTest.groovy
index f8c0a0f2a7..7f0c2e662b 100644
--- a/src/test/groovy/CategoryTest.groovy
+++ b/src/test/groovy/CategoryTest.groovy
@@ -21,7 +21,6 @@ package groovy
import groovy.test.GroovyTestCase
import static groovy.test.GroovyAssert.isAtLeastJdk
-import static org.junit.Assume.assumeTrue
final class CategoryTest extends GroovyTestCase {
@@ -358,6 +357,20 @@ final class CategoryTest extends GroovyTestCase {
}
}
+ // GROOVY-10783
+ void testPropertyMissing2() {
+ assertScript '''\
+ class X{ def bar(){1}}
+ class XCat4{ static propertyMissing(X x, String name) {"works"}}
+
+ def x = new X()
+
+ use(XCat4) {
+ assert x.baz == "works"
+ }
+ '''
+ }
+
// GROOVY-3867
void testMethodMissing() {
def x = new X()