Changelog for Groovy 2.5.15

Bug

  • [GROOVY-10121] - @AnnotationCollector does not work with JUnit 5
  • [GROOVY-10159] - Compilation failure: ClassCastException
  • [GROOVY-10188] - Different treatment of property expressions in closures from 2.4 to 2.5
  • [GROOVY-10200] - Static scope error for variable in non-static method of static inner class
  • [GROOVY-4727] - Adding "return" automatically in nested switch statements
  • [GROOVY-6610] - "Expecting to find object/array on stack" VerifyError when passing static member as argument to chained ctor call
  • [GROOVY-7024] - Reference to static member of parent class in enum constructor fails at runtime
  • [GROOVY-8179] - Map-style constructor call, inner class and static compilation
  • [GROOVY-8202] - void tail calls in closures break @CompileStatic type inference
  • [GROOVY-8427] - Issue With Static Compiler And Generics
  • [GROOVY-8850] - StreamingMarkupBuilder adds namespace on elements not expected
  • [GROOVY-8960] - Can not call a java parameterized type method from groovy with java enum. Compile error
  • [GROOVY-8961] - Cannot pass generic list into explicit setter
  • [GROOVY-9076] - Debugger Step Into doesn't work in Groovy-compiled classes
  • [GROOVY-9279] - StreamingJsonBuilder adding extra comma
  • [GROOVY-9462] - Groovy 3 BUG! exception in phase 'conversion' in source unit Caused by NullPointerException
  • [GROOVY-9591] - Compiler error for use of variable expression within tap closure
  • [GROOVY-9653] - SC: ClassCastException on delegate object property set
  • [GROOVY-9662] - Groovy 3.0.5: Closure delegate is not working properly
  • [GROOVY-9691] - Method call "main" is replaced with StaticMethodCallExpression in script
  • [GROOVY-9700] - SC: set groovy property written for variable expression assignment that should be direct setter call
  • [GROOVY-9737] - VerifyError if superclass has static and non-static overloads
  • [GROOVY-9739] - NPE in ClassNode.isDerivedFrom while compiling trait with Groovy 3.0.5
  • [GROOVY-9769] - STC: UnionTypeClassNode created for simple instanceof scenarios
  • [GROOVY-9771] - STC: "putAt" shortcut notation to outer class private field from Closure leads to GroovyCastException
  • [GROOVY-9786] - SC: cast exception for variable assigned within conditional blocks
  • [GROOVY-9791] - SC: cross-package protected field access uses dynamic property methods
  • [GROOVY-9847] - STC: regression in private inner class type inference
  • [GROOVY-9863] - arithmetic using an implicit getter fails to compile with "BUG! exception in phase 'class generation'" under static compilation
  • [GROOVY-9872] - GroovyCastException when using a map while iterating over something in a @CompileStatic object
  • [GROOVY-9896] - Switch return statement transformation misses last case without break
  • [GROOVY-9906] - ArrayIndexOutOfBoundsException when compiling method call with many overloaded methods
  • [GROOVY-9955] - IllegalAccessError exception is raised when accessing inherited static field
  • [GROOVY-9962] - Stub generation malforms annotation values
  • [GROOVY-9966] - Build Error: StringIndexOutOfBoundsException when the stars align...
  • [GROOVY-9967] - STC: Access to field/property is forbidden after instanceof.
  • [GROOVY-9982] - Can't assign a field with the result of a method call of the same name from a base class

Dependency upgrade

Improvement

  • [GROOVY-9858] - In generated closures, annotate generated call() methods with @Generated
  • [GROOVY-9878] - GroovyClassLoader#fileReallyExists is inefficient

New Feature

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

Task

  • [GROOVY-9958] - Prepare for bintray/jcenter sunset
  • [GROOVY-9989] - Investigate impact of Bintray/JCenter shutdown (grape config aspects)