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");

Reply via email to