The GitHub Actions job "Code Style" on grails-core.git/grails8-groovy6-canary 
has failed.
Run started by GitHub user jamesfredley (triggered by jamesfredley).

Head commit for run:
bd7a30ae531b1293e0b8497ab2d227c6e7dd71a7 / James Fredley 
<[email protected]>
Drop two more Groovy 6 workarounds - upstream fixes merged 2026-05-02

Pulled apache/groovy master to commit 40499016 (HEAD as of 2026-05-03 18:03 
UTC) and the 6.0.0-SNAPSHOT publication at build #571 
(5.0.6-20260503.181740-571 on the snapshot timeline). Two more workarounds 
become removable:

1. grails-data-hibernate5/.../HibernateConnectionSourceSettings.groovy
   The explicit clone() override on the inner @AutoClone HibernateSettings
   class was the workaround for the Java stub generator regression that
   emitted 'clone() throws CloneNotSupportedException' on a class extending
   LinkedHashMap (whose JDK clone() does not declare the exception). Tracked
   as GROOVY-11980 (https://issues.apache.org/jira/browse/GROOVY-11980),
   committed to apache/groovy master 2026-05-02 21:29 UTC as ced726ce
   ('GROOVY-11980: @AutoClone clone() override adds CloneNotSupportedException
   not declared by superclass'). Build #571 contains the fix. Removed the
   explicit clone() body and the 16-line workaround comment. @AutoClone now
   generates the override with the correct (no-throws) signature, javac
   accepts it as a valid override of LinkedHashMap.clone(), and the deep-
   clone semantics for tenant connection-source settings are preserved by
   @AutoClone(style = CLONE) which is the default style.

2. 
grails-geb/.../testFixtures/grails/plugin/geb/ContainerGebConfiguration.groovy
   IContainerGebConfiguration converted from trait back to interface with
   default methods. The interface->trait workaround was for an indy=false
   IncompatibleClassChangeError ('Method '...\()' must be
   InterfaceMethodref constant') that fired when downstream classes
   compiled with -PgrailsIndy=false consumed the interface. Tracked as
   GROOVY-11982 (https://issues.apache.org/jira/browse/GROOVY-11982),
   committed to apache/groovy master 2026-05-02 23:16 UTC as 88ca738c
   ('GROOVY-11982: Default methods in interface throw
   IncompatibleClassChangeError under indy=false'). Build #571 contains the
   fix. Standalone reproducer in
   
https://github.com/jamesfredley/groovy5-compiledynamic-trait-bug/blob/main/quick-checks/src/main/groovy/InterfaceDefaultsCheck.groovy
   was the basis for both the original workaround and this restoration;
   it now passes against build #571.

Compilation re-verified locally on Groovy 6.0.0-SNAPSHOT build #571:

  ./gradlew :grails-data-hibernate5-core:compileGroovy --refresh-dependencies
  ./gradlew :grails-geb:compileTestFixturesGroovy --refresh-dependencies

Both BUILD SUCCESSFUL. Runtime validation of the indy=false ContainerGebSpec
class init path is deferred to the canary CI matrix - the affected specs
(InheritedConfigSpec, ChildPreferenceInheritedConfigSpec) extend
ContainerGebSpec implements IContainerGebConfiguration and exercise the
exact \() InterfaceMethodref dispatch the upstream fix
addresses. (Pre-existing :grails-fields:compileGroovy failure on this
canary - unrelated to either of these workarounds; reproduces on the
unmodified merged tree.)

Net effect: two more rows leave the 'Real Groovy 6 regressions, no
upstream PR yet' table in the PR description. Combined with the three
inherited-from-#15557 workarounds dropped on the parent branch
(GROOVY-11983 unlocking PersistentEntityCodec + DefaultHalViewHelper),
five workarounds dropped against this round of upstream fixes.

Assisted-by: claude-code:claude-opus-4.6

Report URL: https://github.com/apache/grails-core/actions/runs/25287475689

With regards,
GitHub Actions via GitBox

Reply via email to