The GitHub Actions job "CI - Groovy Joint Validation Build" on grails-core.git/feature/taglib-method-actions has failed. Run started by GitHub user davydotcom (triggered by davydotcom).
Head commit for run: 7c89b784af9aa3c26baa34d0224459aaccaffac1 / David Estes <[email protected]> Address PR review feedback for method-based TagLib handlers Resolve blockers and major comments from review of PR #15465: - B1: rethrow Error from TagMethodInvoker.invokeTagMethod instead of wrapping in RuntimeException; matches closure-path semantics so StackOverflowError/AssertionError surface unchanged. - B2: cache resolved Closure tag fields per TagLib class via ClassValue. Eliminates per-invocation getDeclaredField walk and exception-driven control flow on the closure dispatch hot path. - M1: restore ValidationTagLib.formatValue as a public method tag and back into returnObjectForTags. Now safe because overload resolution no longer relies on the magic single-attribute fallback. - M2 + jf#6: replace the magic single-param attribute fallback in toMethodArguments with strict containsKey-based binding. Absent attribute rejects the overload; null is now a legal binding for reference-typed parameters and only rejected for primitives. - M3: deterministic same-arity tiebreaker (signature compareTo) so overload resolution is stable across HotSpot/Graal/J9. - jf#1: fix broken doc examples in namespaces.adoc and tagReturnValue.adoc that mixed method and closure syntax in the same snippet. - jf#2: introduce @grails.gsp.NotATag annotation as an explicit method opt-out, plus signature-based filtering for overrides of Object and GroovyObject methods (toString/hashCode/equals declared on the user class). Matches the controllers-style "public methods are tags; helpers are private" convention without forcing annotations. - B3: gate the closure deprecation AST warning behind the system property grails.taglib.warnDeprecatedClosures (default true). Set false to silence at compile time. - Document method-based TagLib handlers, @NotATag, the suppression property, and the tag method registration behavior change in upgrading70x.adoc (new section 16). New specs: - org.grails.taglib.TagMethodInvokerSpec - covers Error/RuntimeException propagation, Object/GroovyObject override exclusion, Spring lifecycle exclusion, @NotATag, closure-field cache including subclass shadowing, null/missing attribute binding semantics, and same-arity overload ordering. - grails.gsp.taglib.compiler.TagLibArtefactTypeAstTransformationSpec - covers default warning emission and suppression via system property. - ValidationTagLibSpec - new specs for <g:formatValue> tag-syntax and function-syntax invocation. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]> Report URL: https://github.com/apache/grails-core/actions/runs/25576090965 With regards, GitHub Actions via GitBox
