Changelog for Groovy 3.0.9

Bug

  • [GROOVY-10009] - TracingInterceptor throws NullPointerException if arguments contains a null argument
  • [GROOVY-10010] - STC: method call with GString elements in list/array has different error from assignment
  • [GROOVY-10027] - STC: NamedParams error for method call argument
  • [GROOVY-10033] - Compiler crash when encountering function reference on nested class
  • [GROOVY-10046] - NPE in static compiler
  • [GROOVY-10047] - STC infers Closure instead of SAM for method references
  • [GROOVY-10056] - Inferred parameter type of lambda expression for multi-dimensions array is not correct
  • [GROOVY-10075] - Static compiler incorrectly typechecks extension modules
  • [GROOVY-10079] - groovyc does not perform unboxing on Character type
  • [GROOVY-10085] - Class.isCase() documentation does not clarify that Class.isCase(SomeClass) is false, or why
  • [GROOVY-10087] - STC does not perform boxing on chars when encountering assignment and function call
  • [GROOVY-10097] - CLONE - Better propagation of InterruptedException (additional cases)
  • [GROOVY-10098] - Unexpected behaviour when the return type of a closure is a type parameter
  • [GROOVY-10102] - Type checking fails when calling trait method using indirect SelfType relation
  • [GROOVY-10104] - SC: runtime error for default argument call expression
  • [GROOVY-10106] - STC error for call to static trait method from closure
  • [GROOVY-10107] - Cannot assign null to a variable with a bounded generic type
  • [GROOVY-10111] - compiler crash during canonicalization
  • [GROOVY-10113] - StackOverflowError in STC
  • [GROOVY-10121] - @AnnotationCollector does not work with JUnit 5
  • [GROOVY-10122] - Wrong cast in stubs generated
  • [GROOVY-10132] - XmlUtil.serialize() Emoji bug
  • [GROOVY-10141] - NPE in InnerClassVisitor for non-static inner class CCE within two AICs
  • [GROOVY-10159] - Compilation failure: ClassCastException
  • [GROOVY-10164] - RootLoader cannot be set as system class loader in Java 12+
  • [GROOVY-10179] - STC: instanceof and for-in variable type
  • [GROOVY-10181] - Groovy 3 AST for annotated fields reports wrong lastLineNumber if field not initialized
  • [GROOVY-10188] - Different treatment of property expressions in closures from 2.4 to 2.5
  • [GROOVY-10189] - File.withWriter and Path.withWriter are inconsistent
  • [GROOVY-10191] - NoSuchMethodError during static field inlining is not caught, unlike NoSuchFieldException
  • [GROOVY-10194] - "PermittedSubclasses requires ASM9" when importing enum on Java 17
  • [GROOVY-10196] - "Cannot find matching method" with specific class hierarchy and static compilation
  • [GROOVY-10197] - java.lang.VerifyError using property inside enum's constant
  • [GROOVY-10199] - ASTTest cannot reference types from transform classpath
  • [GROOVY-10200] - Static scope error for variable in non-static method of static inner class
  • [GROOVY-3015] - Seems like ClosureMetaClass#invokeMethod does not respect the interceptable nature of the owner/delegate
  • [GROOVY-3421] - Expression underlying a spread map expression is evaluated twice
  • [GROOVY-4610] - GroovyInterceptable (AOP) not working with closures
  • [GROOVY-5453] - Incorrect resolve of category property for String
  • [GROOVY-6282] - groovyc ant task generates invalid stub (picks wrong constructor) and fails in Java 1.7 compilation
  • [GROOVY-7867] - asType(Collection col, Class clazz) ingnores exceptions in clazz constructor
  • [GROOVY-8111] - Stack overflow between WideningCategories lowestUpperBound and parameterizeLowestUpperBound
  • [GROOVY-8179] - Map-style constructor call, inner class and static compilation
  • [GROOVY-8202] - void tail calls in closures break @CompileStatic type inference
  • [GROOVY-8452] - @CompileStatic, generic with 'extends' bug: Expected parameter of type ? but got A
  • [GROOVY-8638] - CompileStatic fails with Guava Multimap#asMap
  • [GROOVY-8652] - Putting key on generic Map fails when using CompileStatic
  • [GROOVY-8678] - Groovy Script execution fails when comparing decimal values against decimal constant without leading 0
  • [GROOVY-9064] - STC: explicit declared variable type ignored in favor of assigned value type(s)
  • [GROOVY-9915] - STC: call to static method fails with incompatible generics error
  • [GROOVY-9945] - STC: Cannot find matching method when using Generics
  • [GROOVY-9971] - @TypeChecked: Closure<String> no longer compatible with Closure<GString> argument
  • [GROOVY-9984] - Wrong type inference when passing null
  • [GROOVY-9997] - STC: cast or coerce to functional interface fails to infer param types of closure/lambda

Dependency upgrade

Improvement

  • [GROOVY-10036] - STC: unresolved generics for return type of extension method call with full type arguments
  • [GROOVY-10052] - STC sometimes requires explicit closure to SAM cast inside of another closure
  • [GROOVY-10077] - Groovy Console: Support JDKs without macOS Runtime Support for Java
  • [GROOVY-10112] - IndexedProperty AST transform should only provide the getter for immutable fields
  • [GROOVY-10146] - Groovy 3 compilation errors are less accurate than Groovy 2
  • [GROOVY-10150] - Eliminate ambiguities while parsing non-static class creator
  • [GROOVY-10212] - Provide a mechanism for users to enable Antlr4's SLL (fast but only simple) mode

New Feature

  • [GROOVY-10210] - Provide a helper factory class to assist with porting

Task