The GitHub Actions job "CI" on grails-core.git/fix/issue-16280 has failed. Run started by GitHub user sbglasius (triggered by sbglasius).
Head commit for run: 1d0096c14561a3ed7844eabbaaf2e7a85df2cd86 / Søren Berg Glasius <[email protected]> Cover attrs and strengthen the identifier regression test Review feedback on #16281, all three points verified locally first. The attrs half of the static-compilation caveat was uncovered, and it is the quieter one: gspTagSyntaxCall has a real setter, so under @CompileStatic "attrs.gspTagSyntaxCall = false" compiles and silently drives the flag while leaving the map untouched, where the equivalent on params fails at compile time. Assignment to a setter-backed name also changed in dynamically compiled code, which was undocumented. Probing a replica with and without this PR's fix on Groovy 4.0.30 and 5.0.6 shows the change comes from the fix, not from Groovy 5: without it both the dotted and subscript forms called setGspTagSyntaxCall on either Groovy version; with it both write a map entry. Nothing in the framework depends on the old routing. The controller-level regression test did not exercise the mechanism its name described. Controller.initializeCommandObject reads commandObjectBindingSource.getIdentifierValue() first, and SimpleMapDataBindingSource returns map['id'], so submitting an id meant the params.getIdentifier() fallback never ran. Rewritten to submit only an identifier parameter, which drives the fallback; mutation-checked to fail on the command object resolution rather than on a duplicated assertion. Also documents that assigning params.metaClass throws rather than storing an entry, and pins that with a test. No production code changes. Report URL: https://github.com/apache/grails-core/actions/runs/33519644596 With regards, GitHub Actions via GitBox
