Changelog for Groovy 2.5.19

Bug

  • [GROOVY-10006] - @CompileStatic fails to unify types
  • [GROOVY-10088] - STC: type argument not applied to error message
  • [GROOVY-10098] - Unexpected behaviour when the return type of a closure is a type parameter
  • [GROOVY-10107] - Cannot assign null to a variable with a bounded generic type
  • [GROOVY-10114] - Wrong type argument inference when using the result of ternary operator directly.
  • [GROOVY-10116] - STC: error when passing a type parameter in type constructor
  • [GROOVY-10120] - STC: Guava Multimap#asMap bridge method
  • [GROOVY-10180] - STC: instanceof and DGM each(Map,Closure)
  • [GROOVY-10217] - Type inference does not work with GDK class enhancements
  • [GROOVY-10229] - Question mark in the attribute for a class name
  • [GROOVY-10230] - Unexpected generics parameter arity mismatch in the "instruction selection" phase
  • [GROOVY-10254] - STC: cannot return closure from method without casting
  • [GROOVY-10256] - STC: no error for incompatible type bounds on return value
  • [GROOVY-10291] - STC fails to substitute type variable when using the diamond operator and calling a closure
  • [GROOVY-10294] - Variable's inferred type is upcasted to an Object
  • [GROOVY-10319] - Groovy3 CompileStatic bug: Method clone is protected in java.lang.Object
  • [GROOVY-10330] - STC instantiates type variable with a wrong type when calling an instance method of the same class
  • [GROOVY-10337] - STC rejects program on compiling constructor initialization with a wildcard type
  • [GROOVY-10351] - Wrong type argument is inferred on combining use-site variance and diamond operator
  • [GROOVY-10358] - Unable to resolve method after LUB operator
  • [GROOVY-10367] - STC fails to infer the correct type for type variable in the presence of the diamond operator and bounded polymorphism
  • [GROOVY-10414] - STC: cannot set non-static outer class property via setter method
  • [GROOVY-10637] - SC: implicit-this reference to outer class super property produces access error
  • [GROOVY-10668] - Reference to method is ambiguous if block in "if" with "instanceof"
  • [GROOVY-10700] - STC cannot locate method specified by interface but supplied by AST transform
  • [GROOVY-10711] - CompileStatic doesn't call asBoolean
  • [GROOVY-10717] - Map to type coercion not working on abstract classes
  • [GROOVY-10720] - Resolving wrong overloaded method?
  • [GROOVY-10725] - Regression in STC related to generics, unknown cause
  • [GROOVY-10731] - Exceptions thrown from MarkupTemplateEngine when map accessors and GString interpolation are used
  • [GROOVY-10741] - STC method pointer or reference to generated property method
  • [GROOVY-10744] - STC support assignment of primitives to interface types like Comparable and Serializable
  • [GROOVY-10745] - Type not captured correctly (regression in 2.5.18)
  • [GROOVY-10749] - STC: closure/lambda/reference parameter as type witness for SAM type generics
  • [GROOVY-10756] - STC: parameterized and bounded return value for java class property
  • [GROOVY-10757] - Regression from 2.5.16+: ClassCastException at runtime
  • [GROOVY-10767] - Cannot find matching method when trait that implements another trait is compiled statically
  • [GROOVY-10775] - VerifyError: Expecting a stackmap
  • [GROOVY-10787] - STC: parameterized property check during map-style construction
  • [GROOVY-7247] - spreadMap type inference is incorrect and STC reports on valid code
  • [GROOVY-7507] - Cannot assign value of type java.lang.Object in ternary operator with null
  • [GROOVY-7890] - Lack of compilation error while statically compiled the closure.
  • [GROOVY-8034] - Compile error when using generic type with lower bound
  • [GROOVY-8050] - Reference outer class property via inner class
  • [GROOVY-8243] - SAM trait coercion via middle interface
  • [GROOVY-8244] - SAM trait coercion with default parameters
  • [GROOVY-8643] - Make for-in null safe for CompileStatic
  • [GROOVY-8686] - STC: type inferencing for (a instanceof C && a...) bleeds into enclosing scope
  • [GROOVY-8737] - STC Method resolution fails if other methods with more parameters exist
  • [GROOVY-8762] - Invalid this reference in nested class
  • [GROOVY-8828] - Union types incorrectly resolved
  • [GROOVY-8965] - instanceof with || inserts wrong cast
  • [GROOVY-8974] - STC ignores declaration type
  • [GROOVY-9127] - Cannot set protected field from subclass
  • [GROOVY-9195] - STC: mixed checking for access to non-public fields
  • [GROOVY-9293] - Compilation error when accessing package-private super class field using `this` from inside a closure
  • [GROOVY-9463] - STC: no type check error for invalid method pointer or reference
  • [GROOVY-9604] - STC: method or property missing errors for Closure's getResolveStrategy(), etc.
  • [GROOVY-9762] - Wrong type resolved if method reference used with typed method
  • [GROOVY-9803] - Static type checker forgets nested generic types
  • [GROOVY-9871] - NPE when processing the AST of nested annotations from JAR files
  • [GROOVY-9893] - Wrong overloaded method selected
  • [GROOVY-9907] - Type tracked from instanceof condition is not captured in closure
  • [GROOVY-9915] - STC: call to static method fails with incompatible generics error
  • [GROOVY-9953] - Type from flow typing is not propagated in variable assignments
  • [GROOVY-9963] - Generic type of field is not instantiated
  • [GROOVY-9972] - LUB does not work correctly in case of ternary operator
  • [GROOVY-9983] - Type argument inference does not work in ternary operator
  • [GROOVY-9995] - Wrong inference inside closure when having a bounded type parameter

Dependency upgrade

  • [GROOVY-10766] - Bump Spock to 1.3 for GROOVY_2_5_X (test dependency)

Improvement