This is an automated email from the ASF dual-hosted git repository. emilles pushed a commit to branch GROOVY_5_0_X in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 0ee7eb7c91d670651f8f1c8791c06105070cb671 Author: Eric Milles <[email protected]> AuthorDate: Sat Jan 17 13:55:59 2026 -0600 GROOVY-11745: check for null sender --- src/main/java/groovy/lang/MetaClassImpl.java | 2 +- src/test/groovy/groovy/lang/MetaClassTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java index d2a92cc5b6..912dfa427d 100644 --- a/src/main/java/groovy/lang/MetaClassImpl.java +++ b/src/main/java/groovy/lang/MetaClassImpl.java @@ -2832,7 +2832,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass { } private MetaProperty getMetaProperty(final Class<?> clazz, final String name, final boolean useSuper, final boolean useStatic) { - CachedClass cachedClass = (clazz == theClass ? theCachedClass : ReflectionCache.getCachedClass(clazz)); + CachedClass cachedClass = (clazz == null || clazz == theClass) ? theCachedClass : ReflectionCache.getCachedClass(clazz); Map<String, MetaProperty> propertyMap; if (useStatic) { diff --git a/src/test/groovy/groovy/lang/MetaClassTest.java b/src/test/groovy/groovy/lang/MetaClassTest.java index 3cf26ab0c8..866dd7a3fa 100644 --- a/src/test/groovy/groovy/lang/MetaClassTest.java +++ b/src/test/groovy/groovy/lang/MetaClassTest.java @@ -109,6 +109,8 @@ final class MetaClassTest { DymmyClass dymmyClass = new DymmyClass(); MetaClass metaClass = InvokerHelper.getMetaClass(dymmyClass); metaClass.setProperty(dymmyClass, "anInt", Integer.valueOf(10)); + + assertEquals(10, dymmyClass.getAnInt()); } @Test @@ -165,6 +167,18 @@ final class MetaClassTest { metaClass.setProperty(dymmyClass, "integers", list); } + // GROOVY-11745 + @Test + void testSetPropertyWithoutSender() { + MetaClass metaClass = new MetaClassImpl(DymmyClass.class); + metaClass.initialize(); + + DymmyClass dymmyClass = new DymmyClass(); + metaClass.setProperty(null, dymmyClass, "anInt", 1234, false, false); + + assertEquals(1234, dymmyClass.getAnInt()); + } + @Test void testMetaMethodsOnlyAddedOnce() { MetaClass metaClass = InvokerHelper.getMetaClass("some String");
