[ https://issues.apache.org/jira/browse/GROOVY-9510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17753562#comment-17753562 ]
Eric Milles commented on GROOVY-9510: ------------------------------------- A couple additional ways to detect closure nesting without my {{isInClosure}} solution: {code:groovy} contribute(bind(closure: inClosure()) & isThisType() & enclosingClass(subType('spock.lang.Specification')) & (enclosingClass(annotations: annotatedBy('spock.lang.Retry')) | enclosingMethod(annotations: annotatedBy('spock.lang.Retry')))) { for (AnnotationNode retry : annotations) { def condition = retry.getMember('condition') if (condition in closure) { // closure is a collection ... } } } {code} {code:groovy} contribute(inClosure() & isThisType() & enclosingClass(subType('spock.lang.Specification')) & (enclosingClass(annotations: annotatedBy('spock.lang.Retry')) | enclosingMethod(annotations: annotatedBy('spock.lang.Retry')))) { for (AnnotationNode retry : annotations) { def condition = retry.getMember('condition') if (condition === delegate.@scope.enclosingClosure) { // scope is private field of DSLContributionGroup ... } } } {code} > DelegatesTo and similar for annotation member methods > ----------------------------------------------------- > > Key: GROOVY-9510 > URL: https://issues.apache.org/jira/browse/GROOVY-9510 > Project: Groovy > Issue Type: Bug > Reporter: Björn Kautler > Priority: Major > Labels: annotations > Attachments: image-2023-08-04-11-04-29-834.png, screenshot-1.png > > > If you have an annotation with a closure field like for example this in Spock: > {code:java} > @Retention(RetentionPolicy.RUNTIME) > @Target({ElementType.TYPE, ElementType.METHOD}) > @ExtensionAnnotation(RequiresExtension.class) > public @interface Requires { > Class<? extends Closure> value(); > }{code} > you can use it like > {code:java} > @Requires({ os.windows }){code} > But I see no way to add IDE-hints for that closure like > {{@DelegatesTo(PreconditionContext.class)}} as it is restriced to parameters. > It would be nice if you could also annotate annotation member methods (and if > IDEs would then support that too). -- This message was sent by Atlassian Jira (v8.20.10#820010)