This is an automated email from the ASF dual-hosted git repository. sunlan pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push: new b5ec006 GROOVY-9266: added closure annotations to DefaultGroovyMethods.metaClass b5ec006 is described below commit b5ec006fe3f656150d7e699308bc02a19d692a12 Author: Eric Milles <eric.mil...@thomsonreuters.com> AuthorDate: Wed Oct 2 13:16:11 2019 -0500 GROOVY-9266: added closure annotations to DefaultGroovyMethods.metaClass and ExpandoMetaClass.define --- src/main/java/groovy/lang/ExpandoMetaClass.java | 5 ++++- src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/groovy/lang/ExpandoMetaClass.java b/src/main/java/groovy/lang/ExpandoMetaClass.java index 184345e..578fad1 100644 --- a/src/main/java/groovy/lang/ExpandoMetaClass.java +++ b/src/main/java/groovy/lang/ExpandoMetaClass.java @@ -18,6 +18,8 @@ */ package groovy.lang; +import groovy.transform.stc.ClosureParams; +import groovy.transform.stc.SimpleType; import org.codehaus.groovy.reflection.CachedClass; import org.codehaus.groovy.reflection.MixinInMetaClass; import org.codehaus.groovy.runtime.DefaultCachedMethodKey; @@ -796,7 +798,8 @@ public class ExpandoMetaClass extends MetaClassImpl implements GroovyObject { } } - public ExpandoMetaClass define(Closure closure) { + public ExpandoMetaClass define(@ClosureParams(value=SimpleType.class, options="java.lang.Object") + @DelegatesTo(value=DefiningClosure.class, strategy=Closure.DELEGATE_ONLY) Closure closure) { final DefiningClosure definer = new DefiningClosure(); Object delegate = closure.getDelegate(); closure.setDelegate(definer); diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java index dcdc945..69ec742 100644 --- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java +++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java @@ -17753,7 +17753,8 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport { * @throws GroovyRuntimeException if the metaclass can't be set for this class * @since 1.6.0 */ - public static MetaClass metaClass (Class self, Closure closure){ + public static MetaClass metaClass(Class self, @ClosureParams(value=SimpleType.class, options="java.lang.Object") + @DelegatesTo(type="groovy.lang.ExpandoMetaClass.DefiningClosure", strategy=Closure.DELEGATE_ONLY) Closure closure) { MetaClassRegistry metaClassRegistry = GroovySystem.getMetaClassRegistry(); MetaClass mc = metaClassRegistry.getMetaClass(self); @@ -17800,7 +17801,8 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport { * @throws GroovyRuntimeException if the metaclass can't be set for this object * @since 1.6.0 */ - public static MetaClass metaClass (Object self, Closure closure){ + public static MetaClass metaClass(Object self, @ClosureParams(value=SimpleType.class, options="java.lang.Object") + @DelegatesTo(type="groovy.lang.ExpandoMetaClass.DefiningClosure", strategy=Closure.DELEGATE_ONLY) Closure closure) { MetaClass emc = hasPerInstanceMetaClass(self); if (emc == null) { final ExpandoMetaClass metaClass = new ExpandoMetaClass(self.getClass(), false, true);