Changelog for Groovy 2.5.16
Bug
- [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-10037] - Private setter method in class that is extended by another class cannot be found.
- [GROOVY-10051] - STC: return type for unresolved placeholder with bound resolved to Object
- [GROOVY-10071] - SC: closure with variadic parameter
- [GROOVY-10072] - SC: closure with default argument(s)
- [GROOVY-10075] - Static compiler incorrectly typechecks extension modules
- [GROOVY-10104] - SC: runtime error for default argument call expression
- [GROOVY-10106] - STC error for call to static trait method from closure
- [GROOVY-10141] - NPE in InnerClassVisitor for non-static inner class CCE within two AICs
- [GROOVY-10164] - RootLoader cannot be set as system class loader in Java 12+
- [GROOVY-10176] - @NamedVariant with primitives can't find method
- [GROOVY-10179] - STC: instanceof and for-in variable type
- [GROOVY-10191] - NoSuchMethodError during static field inlining is not caught, unlike NoSuchFieldException
- [GROOVY-10197] - java.lang.VerifyError using property inside enum's constant
- [GROOVY-10199] - ASTTest cannot reference types from transform classpath
- [GROOVY-10215] - Ivy library threadsafe bug cause dependency resolve failed
- [GROOVY-10261] - @NamedVariant: Default parameters on ctor/method are ignored when passing some named parameters
- [GROOVY-10262] - MethodNode#getText can output incorrect modifiers
- [GROOVY-10289] - Regression with static and non static class mixing
- [GROOVY-10312] - MissingMethodException in method with default parameter in trait - regression in 3.0.9
- [GROOVY-10379] - Error for super class and super interface methods of same name
- [GROOVY-10396] - Static import is not applied for custom println method since 2.5.1
- [GROOVY-10424] - SC: stack overflow for optimized boolean on private inner class with inner class(es)
- [GROOVY-10457] - Compilation of constructor calls inside CompileDynamic constructors fails with ArrayIndexOutOfBoundsException
- [GROOVY-10458] - Path to a problematic file isn't shown in the error message sometimes if compilation fails with IndexOutOfBoundsException
- [GROOVY-10461] - Gradle multimodule project fails with NoClassDefFoundError in groovyjarjarasm.asm.signature.SignatureReader.parseType
- [GROOVY-10483] - Source encoding incorrectly set in v4.0.0
- [GROOVY-10484] - NamedVariant: NamedParam not checked when added by transform
- [GROOVY-10497] - NamedVariant: default value overrides supplied value if it's falsy
- [GROOVY-10500] - NamedVariant: non-trivial default value of NamedDelegate property
- [GROOVY-10516] - Script @groovy.transform.Field AST transformation generics handling with fully qualified types
- [GROOVY-3421] - Expression underlying a spread map expression is evaluated twice
- [GROOVY-4320] - Joint compiler + @Delegate fail to recognize method signature with default value
- [GROOVY-5204] - @Delegate to a method with optional params
- [GROOVY-5239] - Statically imported method vs other methods with the same name
- [GROOVY-5364] - Static property reference from static context in script does not compile
- [GROOVY-5728] - Accessing private constructor from a static factory
- [GROOVY-5736] - Log4j, Commons, Slf4j ast transforms are broken in Groovy-Eclipse
- [GROOVY-6510] - Problems with implicit closures inside of @Category-annotated classes
- [GROOVY-6747] - Problem With Anonymous Inner Enum
- [GROOVY-7033] - Bug with annotation with closure on method of anonymous class
- [GROOVY-7304] - Cannot mutate private field from within an AIC or a closure
- [GROOVY-7512] - Cannot call Trait method from Closure when using static compilation
- [GROOVY-7609] - java.lang.VerifyError when initializing object of inner class within the constructor of its containing class
- [GROOVY-7686] - Can not see local variable from overriden method called from the constructor of an anonymous class instance
- [GROOVY-7945] - Expect compilation error while resolving generic types
- [GROOVY-8104] - Could not call constructor of inner class from anonimous class inside closure
- [GROOVY-8111] - Stack overflow between WideningCategories lowestUpperBound and parameterizeLowestUpperBound
- [GROOVY-8433] - Anonymous inner class results in cast exception with @Category applied
- [GROOVY-8448] - Local variable is accessible via explicit this
- [GROOVY-8638] - CompileStatic fails with Guava Multimap#asMap
- [GROOVY-8652] - Putting key on generic Map fails when using CompileStatic
- [GROOVY-8707] - += in CompileStatic dynamically sets property instead of using setter
- [GROOVY-8715] - Cannot resolve array of inner class from type in same package (no import)
- [GROOVY-8840] - CLONE - Compile Static causes getAt to fail (advanced cases)
- [GROOVY-9151] - Default Arguments: reference to another defaulted parameter causes run-time errors
- [GROOVY-9158] - @NamedParam arguments don't get their default value when only named parameters are used in the method call
- [GROOVY-9183] - Issue using @MapConstructor and @NamedVariant
- [GROOVY-9189] - AIC in default argument expression of static method causes class cast exception
- [GROOVY-9238] - Groovy 2.5 AnnotationCollector not generating expected bytecode
- [GROOVY-9281] - Unqualified reference to inner class of super class does not support package-private visibility
- [GROOVY-9327] - @CompileStatic is not propagated to anonymous class
- [GROOVY-9328] - Cannot call private member of containing class in @CS
- [GROOVY-9336] - Shift operator used in field initial value expression causing incorrect type conversion
- [GROOVY-9338] - STC: no error for incorrect bounds match
- [GROOVY-9344] - CCE in closure shared variable assignment
- [GROOVY-9376] - Groovy completely ignores @GrabResolver annotation
- [GROOVY-9385] - Access to outer class private field from closure leads to ClassCastException (@CompileStatic)
- [GROOVY-9386] - Field initialized in a trait using tap doesn't work correctly
- [GROOVY-9455] - STC: no error for if (!(x instanceof T)) x.methodFromT()
- [GROOVY-9460] - Groovy 3 Compilation Failure with method with argument Class<?> called with Class<D>
- [GROOVY-9516] - Static compiler infers wrong type for implicitly shared variables
- [GROOVY-9524] - VerifyError when referencing a private enum method
- [GROOVY-9526] - Failed to reload classes with generic parameters
- [GROOVY-9570] - Class-Level Closure Definition With Generics Fails TypeChecked
- [GROOVY-9575] - ASTNode.hashCode violates Object.hashCode contract: does not return consistent value
- [GROOVY-9586] - SC: calling trait method inside closure has incorrect receivers data
- [GROOVY-9607] - Class generation regression in 3.0.5-ss: This method should not have been called
- [GROOVY-9711] - @Sortable annotation always sorts by the parent properties
- [GROOVY-9751] - STC: error for addAll with collect argument
- [GROOVY-9763] - Regression in groovyc 3.0 and 4.0 and Compile static with generic static method in trait
- [GROOVY-9807] - Static compile of dynamically generated code produces different output in a top-level class and a nested class
- [GROOVY-9855] - Compiler does not resolve compile-time constants in string concatenation
- [GROOVY-9862] - General error during instruction selection: ClassCastException
- [GROOVY-9882] - STC: field or property with parameterized SAM-type and closure initializer
- [GROOVY-9885] - STC doesn't coerce GString in certain ternary expressions
- [GROOVY-9890] - Static type checking can't find default method overload on interface
- [GROOVY-9902] - Generic typecheck in @DelegatesTo doesn't work
- [GROOVY-9903] - STC: @DelegatesTo error for incomplete arguments linked to first line of source
- [GROOVY-9918] - NPE in static compiler when calling pathological method signature
- [GROOVY-9935] - int reference seems to not use its wrapper class
- [GROOVY-9938] - VerifyError when instantiating class with @CompileStatic that implements a method with @DelegatesTo annotation.
- [GROOVY-9945] - STC: Cannot find matching method when using Generics
- [GROOVY-9971] - @TypeChecked: Closure<String> no longer compatible with Closure<GString> argument
- [GROOVY-9974] - @CompileStatic with Method References
- [GROOVY-9997] - STC: cast or coerce to functional interface fails to infer param types of closure/lambda
Dependency upgrade
- [GROOVY-10446] - Bump logback to 1.2.10 (test dependency)
- [GROOVY-10493] - Bump slf4j to 1.7.36 (test dependency)
- [GROOVY-10509] - Bump log4j2 version to 2.12.4 (test dependency)
Improvement
- [GROOVY-10052] - STC sometimes requires explicit closure to SAM cast inside of another closure
- [GROOVY-10112] - IndexedProperty AST transform should only provide the getter for immutable fields
- [GROOVY-10352] - Java8 does not load enum values into annotation attributes
- [GROOVY-10477] - SC: optimize for-in loop on array with dynamic variable
- [GROOVY-10505] - TraitComposer should mark generated methods as @Generated
- [GROOVY-5441] - Type argument checking
- [GROOVY-9289] - @Delegate should check property/method names for annotation attributes like includes/excludes
- [GROOVY-9726] - Compile error needed for illegal field modifier combination