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

Reply via email to