Changelog for Groovy 2.6.0-unreleased

Bug

  • [GROOVY-3472] - Wrong line/column numbers for method and closure blocks
  • [GROOVY-4095] - Labeled statements have wrong source position
  • [GROOVY-4438] - Use of an inner enum causes compilation to go into infinite loop
  • [GROOVY-4757] - Can't compile method with generic signatures and default visibiliy access
  • [GROOVY-4761] - Incorrect source location for method call expression
  • [GROOVY-4762] - Numbers as properties in command expressions
  • [GROOVY-5309] - Wrong line/col info for binary expressions
  • [GROOVY-5310] - Wrong line/col info for statements with whitespace before EOL
  • [GROOVY-5311] - Wrong line/col info for GStrings
  • [GROOVY-5312] - Wrong line/col info for MapEntryExpressions
  • [GROOVY-5313] - Wrong line/col info for SpreadMapExpressions
  • [GROOVY-5652] - Semicolon required after coercing to a parameterized (generic) type containing a parameterized (generic) type as its only or last type argument when there is no space between the ending ">>"
  • [GROOVY-5912] - Static compilation: Groovy doesn't fail compilation when accessing package scope methods, but fails at runtime
  • [GROOVY-6038] - Ability to declare inner annotation types
  • [GROOVY-6167] - Generics: within a single declaration, generic type definition order matters
  • [GROOVY-6632] - CompileStatic selects wrong constructor when GString is a parameter
  • [GROOVY-6742] - Groovy is unable to resolve this Generics use case
  • [GROOVY-6938] - Wrong error reported by @CompileStatic when overriding a method returning a parameterized value
  • [GROOVY-7031] - @CompileStatic breaks assign in combination with dereferencing
  • [GROOVY-7061] - Type inference not working for Collections.sort()
  • [GROOVY-7083] - PermGen memory leak in ConfigSlurper.parse(Script script, URL location)
  • [GROOVY-7202] - Unable to resolve nested enum of parent class when compiling against binary parent
  • [GROOVY-7218] - && operator is not handled correctly in some cases when it starts a new line
  • [GROOVY-7573] - Groovyc ant task does not release file handles
  • [GROOVY-7691] - Type checking error on generic property with covariant type in subclass
  • [GROOVY-7721] - Static type checking fails when compiling against a Java8 interface with inherited methods
  • [GROOVY-7753] - regression of return type from ternary operator
  • [GROOVY-7883] - Static compiler prefers private constructor over public if private matches better
  • [GROOVY-7985] - Wrong "incompatible generic type" error
  • [GROOVY-8055] - @CompileStatic improperly orders parameter types
  • [GROOVY-8059] - STC overloaded generic method selection not using resolved types
  • [GROOVY-8131] - Statement continued onto next line is flagged when first character is "="
  • [GROOVY-8150] - Inconsistency in multiple assignment with single variable
  • [GROOVY-8161] - Empty statement before semicolon with parrot parser
  • [GROOVY-8171] - Escaped dollar slashy difference between old and parrot parsers
  • [GROOVY-8216] - invalid octal split into two arguments
  • [GROOVY-8241] - SAM parameter type inference for explicit parameter
  • [GROOVY-8253] - Groovy console fails to launch
  • [GROOVY-8277] - [Parrot]Fix gls.syntax.MethodCallValidationTest#testDeclarationInMethodCall
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8311] - [Parrot]Failed to check duplicated parameters properly
  • [GROOVY-8317] - Smart type inference doesn't work on explicit closure params
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • [GROOVY-8332] - Packaging issue for Antlr4-related jars
  • [GROOVY-8338] - Calling Stream.of from groovy class in JDK 9 fails
  • [GROOVY-8377] - hashCode() generated by @EqualsAndHashCode is inefficient for instances with null fields or properties
  • [GROOVY-8387] - Invalid module-info.class in jar artifacts
  • [GROOVY-8407] - antlr4 jar file has not been repackaged into groovy-all-2.6.0-XXX-indy.jar
  • [GROOVY-8408] - invokeMethod cannot be set through category
  • [GROOVY-8432] - Weird behavior parsing dates
  • [GROOVY-8436] - IOException "Stream closed" occurred when rebuilding Apache Groovy in IntelliJ IDEA
  • [GROOVY-8439] - @CompileStatic cannot compile generic class's static method
  • [GROOVY-8445] - Static analysis does not work properly when coercing Closure to FunctionInterface
  • [GROOVY-8447] - It is allowed to define local variable of void type
  • [GROOVY-8470] - dead loop when compiling 'enum in enum without semicolon'
  • [GROOVY-8471] - Contents of META-INF/services/org.codehaus.groovy.source.Extensions conflict with Maven/Jisaw
  • [GROOVY-8474] - 'Unexpected super property set for:' when accessing super class property via super.propertyName
  • [GROOVY-8483] - groovy-all v2.5.0-beta-3 is missing from bintray
  • [GROOVY-8486] - Closure executed multiple times even if memoized
  • [GROOVY-8493] - Native lambdas with @CompileStatic at method level
  • [GROOVY-8509] - SC: error for call to protected method from same package
  • [GROOVY-8515] - groovy.g no longer included in sources jars
  • [GROOVY-8531] - Fail to resolve type defined in super class written in Java
  • [GROOVY-8537] - GroovyCollections.combinations(Iterable) exhibits incorrect (asymmetric) behavior
  • [GROOVY-8541] - Incorrect packaging in groovy-all pom
  • [GROOVY-8546] - Parrot Parser: multiple Reader instances opened from SourceUnit; many left open
  • [GROOVY-8583] - Fail to infer auto-return type from ternary operator
  • [GROOVY-8590] - STC incorrectly infers type of nested method call used in a return stmt
  • [GROOVY-8595] - Expected parameter of type XXX but got YYY static compile error
  • [GROOVY-8598] - Possible bug in AstBuilder Antlr4
  • [GROOVY-8609] - Fails to compile when upper bound has generics
  • [GROOVY-8610] - STC NPE using DGM collect on Iterator
  • [GROOVY-8613] - GCE in elvis assignment evaluation
  • [GROOVY-8624] - File descriptor leaks in compiler and runtime
  • [GROOVY-8628] - Groovydoc fails to parse static nested classes with diamond operator
  • [GROOVY-8629] - Groovy STC fails on the nested method call in constructor call
  • [GROOVY-8750] - the jar file, and only the jar file is missing from a large number of releases on Maven Central

Dependency upgrade

Documentation

Improvement

  • [GROOVY-3867] - Allow methodMissing/propertyMissing to be defined through category
  • [GROOVY-3898] - [PARROT] Allow the specification of types when initializing multiple iteration variables in a "for" construct
  • [GROOVY-4018] - Make the Groovy truth value of NaN be false *
  • [GROOVY-4585] - backslash can not be escaped by `SimpleTemplateEngine`
  • [GROOVY-7977] - Refine the implementation of LRUCache
  • [GROOVY-8165] - [PARROT] Parrot parser could be made to work on jdk7
  • [GROOVY-8312] - [PARROT] Deprecate useless features on unicode sequences
  • [GROOVY-8410] - Provide a common cache
  • [GROOVY-8428] - Add DGM startsWithAny(String...) and endsWithAny(String...)
  • [GROOVY-8464] - Allow rendering inline json
  • [GROOVY-8466] - Support native lambda in static compilation mode
  • [GROOVY-8490] - Extend @Newify to support a class name pattern parameter
  • [GROOVY-8492] - Groovy console should show generated lambda classes when showing generated closure classes
  • [GROOVY-8510] - Safe number parsing methods for more convenient XML parsing
  • [GROOVY-8524] - Triple quoted string with quotes on end of line
  • [GROOVY-8604] - Cache the parameterized type for better performance
  • [GROOVY-8621] - Grape command line tool synopsis improvement
  • [GROOVY-8630] - Refine the parameterized type cache

New Feature

  • [GROOVY-2840] - [PARROT] Support "not" for in and instanceof
  • [GROOVY-3791] - [PARROT] Support Java Array initializer syntax when not ambiguous
  • [GROOVY-5306] - [PARROT] Add "a ?= 2" support (Elvis assignment): should be expanded to "a = a == null ? 2 : a"
  • [GROOVY-5348] - [PARROT] Implement do/while loop
  • [GROOVY-6336] - [PARROT] Support Java 7 ARM blocks
  • [GROOVY-8138] - Compile static to support streams
  • [GROOVY-8334] - Java 8 Date/Time type support in Groovy JDK (JSR 310)
  • [GROOVY-8352] - Add a @Generated annotation to mark generated members
  • [GROOVY-8498] - [PARROT] Support `var` keyword of Java10
  • [GROOVY-8500] - Support logging the stacktrace of bytecode generation
  • [GROOVY-8516] - Add DGM `md5`
  • [GROOVY-8518] - Add DGM `digest`
  • [GROOVY-8542] - Support creating instances of non-static inner classes with Java-Like syntax
  • [GROOVY-8558] - Add DGM `getLocation` to get the url of the jar containing the specified class

Question

  • [GROOVY-8102] - Does/could Groovy support multiple variable definitions in for loop?

Sub-task

  • [GROOVY-1588] - Better error messages when using Java's array init syntax
  • [GROOVY-2324] - grammar forces usage of lowercase names for commands
  • [GROOVY-8228] - JSR308 grammar changes
  • [GROOVY-8594] - DocGenerator could be moved to avoid split packages - part (2)
  • [GROOVY-8597] - SqlGroovyMethods could be moved to avoid split packages - part (2)

Task

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