This is an automated email from the ASF dual-hosted git repository. codeconsole pushed a commit to branch 8.0.x in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 5752ba0f58379a588de77487e7540103d88fef49 Merge: c4f60ce5f2 df895a74a4 Author: Scott Murphy <[email protected]> AuthorDate: Sat Aug 22 20:14:21 2026 -0700 Merge pull request #16134 from codeconsole/feat/taglib-compile-time-index-8.0.x Resolve tag calls at compile time instead of through the metaclass end-to-end/README.md | 1 + end-to-end/settings.gradle | 4 + end-to-end/taglib-index-incremental/build.gradle | 54 ++ .../taglib/TagLibraryIndexIncrementalSpec.groovy | 241 ++++++++ gradle/rat-root-config.gradle | 1 + .../common/compiler/GroovyTransformOrder.groovy | 7 + .../TagLibraryInvokerTypeCheckingExtension.groovy | 7 + grails-doc/src/en/guide/introduction/whatsNew.adoc | 44 ++ .../theWebLayer/gsp/taglibs/compiledTags.adoc | 308 +++++++++++ grails-doc/src/en/guide/toc.yml | 1 + .../src/en/guide/upgrading/upgrading80x.adoc | 156 ++++++ .../plugin/core/GrailsCompileStaticOptions.groovy | 53 ++ .../views/gsp/GenerateTagLibraryIndexTask.groovy | 206 +++++++ .../plugin/views/gsp/GroovyPagePlugin.groovy | 230 +++++++- .../plugin/views/gsp/TagLibraryIndexFiles.groovy | 133 +++++ .../gsp/GenerateTagLibraryIndexTaskSpec.groovy | 231 ++++++++ .../views/gsp/TagLibraryIndexFilesSpec.groovy | 113 ++++ .../gsp/TagLibraryIndexWiringFunctionalSpec.groovy | 131 +++++ .../test-projects/taglib-index-wiring/build.gradle | 32 ++ .../taglib-index-wiring/settings.gradle | 1 + .../src/main/groovy/org/grails/gsp/GroovyPage.java | 47 ++ .../org/grails/gsp/GroovyPagesMetaUtils.groovy | 25 +- .../GroovyPageTypeCheckingExtension.groovy | 29 + .../grails/gsp/GroovyPageMethodMissingSpec.groovy | 120 ++++ .../grails/core/gsp/DefaultGrailsTagLibClass.java | 24 +- .../org/grails/taglib/CompiledTagInvocation.java | 215 +++++++ .../grails/taglib/NamespacedTagDispatcher.groovy | 23 +- .../taglib/TagLibNamespaceMethodDispatcher.groovy | 2 +- .../org/grails/taglib/TagLibraryMetaUtils.groovy | 56 +- .../groovy/org/grails/taglib/TagMethodInvoker.java | 217 ++++---- .../taglib/TemplateNamespacedTagDispatcher.groovy | 16 +- .../grails/taglib/discovery/AstTagLibraryView.java | 85 +++ .../grails/taglib/discovery/AstTagMethodView.java | 127 +++++ .../taglib/discovery/ReflectedTagLibraryView.java | 73 +++ .../taglib/discovery/ReflectedTagMethodView.java | 110 ++++ .../grails/taglib/discovery/TagDiscoveryRules.java | 187 +++++++ .../taglib/discovery/TagLibraryAstDiscovery.java | 88 +++ .../grails/taglib/discovery/TagLibraryView.java | 53 ++ .../org/grails/taglib/discovery/TagMethodView.java | 103 ++++ .../org/grails/taglib/index/TagLibraryIndex.java | 526 ++++++++++++++++++ .../grails/taglib/index/TagLibraryIndexEntry.java | 47 +- .../taglib/index/TagLibraryIndexGenerator.java | 431 ++++++++++++++ .../grails/taglib/index/TagLibraryIndexWriter.java | 212 +++++++ .../grails/taglib/index/TagLibraryIndexSpec.groovy | 340 ++++++++++++ .../TagLibraryIndexWriterConcurrencySpec.groovy | 127 +++++ .../main/groovy/grails/artefact/TagLibrary.groovy | 29 +- .../grails/artefact/gsp/TagLibraryInvoker.groovy | 20 +- .../taglib/compiler/CompiledTagCallRewriter.java | 616 +++++++++++++++++++++ .../gsp/taglib/compiler/LocalNameCollector.java | 131 +++++ .../gsp/taglib/compiler/PageBindingCollector.java | 93 ++++ .../TagLibArtefactTypeAstTransformation.java | 88 ++- .../taglib/discovery/TagDiscoveryRulesSpec.groovy | 122 ++++ .../taglib/discovery/TagSetAgreementSpec.groovy | 98 ++++ .../taglib/index/SingleIndexProducerSpec.groovy | 126 +++++ .../index/SourceResolvedIndexGeneratorSpec.groovy | 452 +++++++++++++++ .../index/TagLibraryIndexGeneratorSpec.groovy | 301 ++++++++++ .../web/taglib/NoMetaClassMutationSpec.groovy | 104 ++++ .../web/taglib/TagLibraryLookupIndexSpec.groovy | 118 ++++ .../org/grails/web/taglib/TagPrecedenceSpec.groovy | 112 ++++ grails-gsp/plugin/build.gradle | 1 + .../traits/CompiledTagCallTransformation.groovy | 109 ++++ ...org.codehaus.groovy.transform.ASTTransformation | 1 + .../plugins/web/GroovyPagesGrailsPlugin.groovy | 4 +- .../web/taglib/CompiledPageTagCallSpec.groovy | 138 +++++ .../web/taglib/CompiledTagCallBytecodeSpec.groovy | 284 ++++++++++ .../web/taglib/CompiledTagCallRewriterSpec.groovy | 53 ++ .../CompiledTagCallTransformationOrderSpec.groovy | 68 +++ .../web/taglib/CompiledTagInvocationSpec.groovy | 146 +++++ .../web/taglib/ControllerTagCallRewriteSpec.groovy | 156 ++++++ .../taglib/GroovyMethodNameCollisionSpec.groovy | 212 +++++++ .../web/taglib/GspStaticTagResolutionSpec.groovy | 181 ++++++ .../grails/web/taglib/IndexEdgeCaseTagLib.groovy | 65 +++ .../grails/web/taglib/RewrittenCallsTagLib.groovy | 52 ++ .../web/taglib/RewrittenPageRenderingSpec.groovy | 92 +++ .../web/taglib/SameProjectTagResolutionSpec.groovy | 129 +++++ .../grails/web/taglib/TagCallShadowingSpec.groovy | 236 ++++++++ .../web/taglib/TagLibraryIndexAgreementSpec.groovy | 119 ++++ .../taglib/TagLibraryInvokerDispatchSpec.groovy | 176 ++++++ .../grails/plugins/mail/PlainTextMailTagLib.groovy | 2 +- .../plugins/mail/PlainTextMailTagLibSpec.groovy | 50 ++ .../functionaltests/IncludesController.groovy | 13 + .../functionaltests/CompiledTagCallSpec.groovy | 66 +++ .../grails/testing/web/GrailsWebUnitTest.groovy | 3 + 83 files changed, 9768 insertions(+), 235 deletions(-)
