Changelog for Groovy 4.0.0-rc-2


  • [GROOVY-3493] - Cannot override methods via metaclass that are part of an interface implementation
  • [GROOVY-5736] - Log4j, Commons, Slf4j ast transforms are broken in Groovy-Eclipse
  • [GROOVY-6097] - Using super.propertyName gives a MissingMethodException when the property is a boolean and uses the "isPropertyName" naming convention.
  • [GROOVY-6653] - StackOverflow Exception when calling super.method when extending java class
  • [GROOVY-7500] - Problem With Runtime Metaprogramming Over A Trait Method
  • [GROOVY-7799] - Extended generic types with var args isn't compiled if they contains in different files
  • [GROOVY-7890] - Lack of compilation error while statically compiled the closure.
  • [GROOVY-8050] - Reference outer class property via inner class
  • [GROOVY-8164] - Groovy allows a Java class to inherit static methods from its interface *
  • [GROOVY-8693] - Calling indirect default interface methods fails both dynamic/static compiled
  • [GROOVY-9391] - Casting the superclass object and calling it stack overflows
  • [GROOVY-9609] - ScriptBytecodeAdapter.getPropertyOnSuper fails with method missing for getProperty
  • [GROOVY-9851] - Private field and method use from subclass is inconsistent
  • [GROOVY-9884] - groovy3: setProperty does not work in sub classes
  • [GROOVY-9909] - Cannot call super when overriding an interface default method
  • [GROOVY-10144] - Calling method on specific trait fails when on different files
  • [GROOVY-10302] - StackOverflowError on Java 16+ for override method that delegates to super
  • [GROOVY-10394] - SC: operands evaluated multiple times for <=> operator on reference types
  • [GROOVY-10396] - Static import is not applied for custom println method since 2.5.1
  • [GROOVY-10398] - LazyFieldNode never equals itself
  • [GROOVY-10406] - Dollar slashy string is too greedy
  • [GROOVY-10407] - unchecked method invocation warning in generated stubs
  • [GROOVY-10414] - STC: cannot set non-static outer class property via setter method
  • [GROOVY-10419] - STC: stack overflow for elvis assignment with explicit setter
  • [GROOVY-10424] - SC: stack overflow for optimized boolean on private inner class with inner class(es)

Dependency upgrade


  • [GROOVY-10383] - SC: !in compiled to ScriptBytecodeAdapter#isNotCase
  • [GROOVY-10395] - SC: <=> compiled to ScriptBytecodeAdapter#compareTo for primitives
  • [GROOVY-10401] - Prevents paging out the groovy console when minimized
  • [GROOVY-10417] - MethodNode toString() could add quotes when name contains spaces (or other non-identifier characters)
  • [GROOVY-10418] - Include `src/antlr` in the sources jar


  • [GROOVY-7762] - Static inner classes not visible to child classes
  • [GROOVY-10393] - Funnel doPrivileged through VMPlugin (JEP-411)


  • [GROOVY-10259] - Groovy4 NV Macros: Rename NV* -> SV*
  • [GROOVY-10412] - Refactor: split formatting methods out of InvokerHelper
  • [GROOVY-10428] - Refactor: split formatting methods out of InvokerHelper (allow separate control of escapeBackslashes) *

Technical Debt

* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)