Changelog for Groovy 2.4.13

Bug

  • [GROOVY-7315] - CompileStatic/TypeChecked cannot create non-static nested inner class using named-arg short-hand syntax
  • [GROOVY-7721] - Static type checking fails when compiling against a Java8 interface with inherited methods
  • [GROOVY-7995] - Short syntax of closure call invokes wrong closure if wrapped in another closure and @CompileStatic is applied
  • [GROOVY-8042] - groovyConsole gets confused with a slashy string with an escaped forward slash
  • [GROOVY-8112] - NPE in Groovy compiler when referencing @Field in aic
  • [GROOVY-8130] - Cannot call private constructor error - @CompileStatic & default method argument
  • [GROOVY-8195] - CompileStatic fails to infer correct type when using elvis operator
  • [GROOVY-8208] - VariableExpressionTransformer does not set source position on property expressions
  • [GROOVY-8213] - Closures are maybe not Threadsafe
  • [GROOVY-8220] - GroovyCastException with CompileStatic
  • [GROOVY-8222] - AsmClassGenerator does not set source positions on property expressions
  • [GROOVY-8240] - Compilation error in @CompileStatic
  • [GROOVY-8242] - Javadoc for Newify is missing some attribute values
  • [GROOVY-8245] - @Newify(auto=false) causing error (in Groovy Web Console)
  • [GROOVY-8246] - AIOOBE in StaticTypeCheckingVisitor with SAM
  • [GROOVY-8247] - AIOOBE in StaticTypeCheckingVisitor with SAM and explicit closure parameter
  • [GROOVY-8249] - @Newify on local variable declaration fails to resolve class expression
  • [GROOVY-8252] - AIOOBE in combination of ncurry and rcurry
  • [GROOVY-8255] - Odd problems with flow typing and generics in Groovy 2.4.12+
  • [GROOVY-8260] - Static compilation requires casting inside instanceof check
  • [GROOVY-8261] - Faulty getText implementations for ExpressionStatement & ThrowStatement
  • [GROOVY-8262] - GrabAnnotationTransformation.visit has unreachable code
  • [GROOVY-8268] - ReturnStatement.toString() doesn't include its expression
  • [GROOVY-8271] - Take/TakeRight methods on iterator needlessly calls hasNext for one too many elements
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8289] - STC and default value in ctor is causing debugging error
  • [GROOVY-8294] - Return 404 for non-existing paths in `TemplateServlet` when running from .war *
  • [GROOVY-8313] - NullPointerException in TypeResolver when using generic array return type
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8324] - Enabling groovy.indy.logging can lead to stack overflows
  • [GROOVY-8325] - @CompileStatic calls wrong newInstance method.
  • [GROOVY-8326] - @Override should not copied onto methods generated by applying @Memoize
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • [GROOVY-8336] - Static compilation requires casting inside instanceof check (additional cases)
  • [GROOVY-8341] - GDK: eachDirRecurse and eachFileRecurse are NOT depth-first
  • [GROOVY-8357] - EncodingGroovyMethods.decodeBase64() throws "bad character in base64 value" when meets \t \r
  • [GROOVY-8369] - Enum property access not working with @CompileStatic
  • [GROOVY-8380] - Regression in 2.4.13-SNAPSHOT: x & y, x | y, x ^ y lose typing information
  • [GROOVY-8382] - Target Typing for empty collections should work for field/property initialisers
  • [GROOVY-8383] - OptimizerVisitor#setConstField not @CS friendly
  • [GROOVY-8384] - Regression in 2.4.13 (snapshot) with STC and intdiv

Dependency upgrade

Documentation

  • [GROOVY-8257] - Incorrect package for Mixin AST transform in online docs
  • [GROOVY-8269] - Unclear/incorrect definition of default behavior for trait multiple inheritence conflicts
  • [GROOVY-8374] - Incorrect modifier listed in Properties description

Improvement

  • [GROOVY-8376] - Add @DelegatesTo to SwingBuilder methods that call setDelegate

New Feature

  • [GROOVY-8236] - Report more meaningful error for versions of Groovy not supporting @Repeatable

* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)