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
- [GROOVY-8291] - Bump XStream version to 1.4.10
- [GROOVY-8504] - Bump ASM version to 6.1
- [GROOVY-8533] - Bump jansi to 1.17
- [GROOVY-8534] - Bump jline to 2.14.6
- [GROOVY-8540] - Bump antlr to 4.7.1
- [GROOVY-8599] - Bump ivy to 2.5.0-rc1
- [GROOVY-8636] - Bump asm to 6.2
- [GROOVY-8661] - bump gradle to 4.8.1
Documentation
- [GROOVY-8618] - Update docs for GroovyConsole
- [GROOVY-8619] - Update docs for Groovy Shell
- [GROOVY-8620] - Update docs for Grape dependency manager
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
- [GROOVY-5299] - [PARROT] antlr 4 grammar creation task
- [GROOVY-8379] - Rework groovy-json FastStringUtils
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)