Changelog for Groovy 4.0.3

Bug

  • [GROOVY-10092] - Compiler crash when trying to cast a boolean to float variable
  • [GROOVY-10143] - NullPointerException while compiling a trait
  • [GROOVY-10214] - Update from Groovy 3.0.8 to 3.0.9 breaks category class
  • [GROOVY-10227] - STC computes an imprecise LUB when involving two parameterized types implementing the same interface
  • [GROOVY-10266] - The diamond operator does not work when passing a value whose type is a type variable
  • [GROOVY-10316] - Type variable inference does not work properly in nested diamond operators
  • [GROOVY-10342] - STC is unable to infer type parameter of parameterized method call
  • [GROOVY-10343] - STC fails to infer dependent type variable
  • [GROOVY-10363] - STC produces compile-time error on encoutering bounded type parameter with conditional
  • [GROOVY-10364] - STC does not type check method call when using bounded type parameter as a type argument
  • [GROOVY-10365] - STC does not perform boxing when overriding method using a parameterized class with bounded type parameters
  • [GROOVY-10535] - IF condition on empty Collection has different behavior than null Collection
  • [GROOVY-10587] - Groovy resolves wrong annotation type
  • [GROOVY-10593] - Groovydoc links to wrong type
  • [GROOVY-10596] - IF-condition evaluation on the non-null object sometimes doesn't return true
  • [GROOVY-10598] - BUG! exception in phase 'instruction selection' unexpected NullPointerException
  • [GROOVY-10601] - Incompatible generic argument type when combining conditionals and bounded type parameters
  • [GROOVY-10603] - LUB operation returns incorrect result
  • [GROOVY-10607] - Groovy 4 fails to generate imports during joint compilation
  • [GROOVY-10608] - The default toString for emulated records has caching enabled
  • [GROOVY-10609] - The default equals and hashCode implementations for emulated records don't have the pojo flag set for generation
  • [GROOVY-10611] - Static fields not initialized when accessed from another class
  • [GROOVY-10619] - STC: fix support for unbounded wildcard references to self-bounded type parameters
  • [GROOVY-10622] - Wrong type is inferred when involving a bounded type parameter in a parameterized method call
  • [GROOVY-10624] - Nested diamond operators do not work correctly although the expected type argument is known
  • [GROOVY-10626] - --enable-preview doesn't show in CLI/help for groovysh
  • [GROOVY-10628] - Elvis assignment operator loses type information
  • [GROOVY-10635] - Method references not working for record components in dynamic code
  • [GROOVY-10637] - SC: implicit-this reference to outer class super property produces access error
  • [GROOVY-10643] - CLONE - Consolidation of VMPlugin didn't account for API calls in the Groovy runtime
  • [GROOVY-9853] - ClassFormatError using method reference on interface target

Dependency upgrade

  • [GROOVY-10627] - Bump jackson to 2.13.3
  • [GROOVY-10639] - Bump Spotbugs/Spotbugs annotations to 4.7.0 (build dependency)
  • [GROOVY-10640] - Bump findsecbugs-plugin to 1.12.0 (build dependency)
  • [GROOVY-10641] - Bump json-unit (test dependency) to 2.35.0
  • [GROOVY-10642] - Bump creadur-rat-gradle plugin to 0.7.1 (build dependency)

Improvement

  • [GROOVY-10599] - STC: support spread operator for list literals
  • [GROOVY-10610] - Provide a better fallback for running without a security manager for groovysh on JDK18
  • [GROOVY-10612] - Tweak plus operation for `Map` instance to align with Java
  • [GROOVY-10618] - SC: further optimize cast to bool