Changelog for Groovy 1.8.7
Bug
- [GROOVY-3388] - GroovyASTTransformation phase must be SEMANTIC_ANALYSIS or later for usage
- [GROOVY-4016] - Single super constructor argument is casted to array if super constructor has vararg parameter
- [GROOVY-4269] - metaClosure not called when using named parameters in Sql.rows
- [GROOVY-4292] - ClassHelper.ClassHelperCache#classCache is not thread-safe
- [GROOVY-4803] - out of memory error when running groovydoc when there are java files in packages
- [GROOVY-4922] - StackOverflowError when calling super and overriding a package protected java method
- [GROOVY-4946] - Groovy getAt cannot be used with lazily initialized lists
- [GROOVY-5044] - Ant Groovyc compilation error in Gradle
- [GROOVY-5087] - Variables from a static import scope used in GStrings resolve to null under certain conditions
- [GROOVY-5111] - Named parameter support breaks with postgres casting syntax
- [GROOVY-5119] - Node.depthFirst() 'forgets' text nodes
- [GROOVY-5158] - Encoding issue with groovy.xml.XmlUtil.serialize()
- [GROOVY-5208] - Incorrect line numbers in code using optimized primitive operations
- [GROOVY-5256] - Wrong generation of stubs with Generics
- [GROOVY-5292] - Stub generation doesn't handle 'protected' multi-line String correctly.
- [GROOVY-5293] - ASTTransformationVisitor not closing URL streams
- [GROOVY-5303] - page title on groovydoc index page is "{todo.title}"
- [GROOVY-5304] - groovydoc output html does not specify character encoding
- [GROOVY-5316] - @Lazy (LazyASTTransformation) not multi-thread safe
- [GROOVY-5323] - JsonOutput.prettyPrint breaks escaped special characters
- [GROOVY-5330] - Typo in exception message at JsonSlurper.parseObject()
- [GROOVY-5339] - groovy.sql.Sql.executeQuery(String) should be non-final for extension
- [GROOVY-5340] - AbstractQueryCommand constructor should be protected for subclassing
- [GROOVY-5371] - Sql DataSet fails to work with non-literals in queries (fix error message/doco)
- [GROOVY-5377] - CLONE - Incomprehensible Error Message Passing Partial Evaluated Lambda Function (improved error message for normal closure not on classpath case)
- [GROOVY-5383] - @ListenerList changes the ArrayList classnode generics
- [GROOVY-5416] - Transform loaded by wrong class loader when @GroovyASTTransformationClass(classes = ...) is used
- [GROOVY-5428] - Performance problem: ClassCastExceptions are created in normal execution flow which kills performance
- [GROOVY-5457] - The example code in the docs of Closure class regarding OWNER_ONLY resolution strategy is wrong
- [GROOVY-5466] - Invalid code crashes the compiler
- [GROOVY-5475] - Consistently get IncompatibleClassChangeError in OpenJDK6
- [GROOVY-5494] - JsonOutput.toJson(def) fails with MissingMethodException if the object defines getProperties()
- [GROOVY-5500] - GroovyBugError thrown when it shouldn't be
- [GROOVY-5507] - rcurry for overloaded MethodClosure throws an exception
- [GROOVY-5508] - Verifier fails to check property types with covariant override
- [GROOVY-5552] - Stackoverflow in JsonSlurper.parseText
- [GROOVY-5588] - Multidimensional Arrays: Incompatible argument to function
- [GROOVY-5628] - new JsonBuilder('<complex xml string>').toPrettyPrint() throws StackOverflowException
- [GROOVY-5972] - String returned by JsonOutput.prettyPrint() isn't valid JSON
Improvement
- [GROOVY-2528] - Provide optional attribute to groovy task to specify Java executable to use, similar to the executable attribute used in the javac task
- [GROOVY-3916] - Implement ranges for Calendar
- [GROOVY-5024] - Reduce groovyc command line length
- [GROOVY-5307] - "Null key for a Map not allowed" is a bad error description in JsonOutput
- [GROOVY-5315] - Inject could take the initialValue from the first item in the Collection/Array
- [GROOVY-5324] - Provide a hook for FactoryBuilderSupport subclasses/decorators for handling methodMissing
- [GROOVY-5325] - Provide a hook for FactoryBuilderSupport subclasses/decorators for handling propertyMissing
- [GROOVY-5326] - FactorBuilderSupport's resolve* methods could be extension friendly
- [GROOVY-5338] - GroovyDoc doesn't create package-list
- [GROOVY-5387] - Support for Iterable.collectEntries
- [GROOVY-5401] - Extend groovy.sql.DataSet with paging capabilities
- [GROOVY-5402] - Provide a plus() method for arrays
- [GROOVY-5407] - Make DGM.first() and DGM.last() work with any Iterable
- [GROOVY-5408] - JavaAwareCompilationUnit should have a constructor that allows to set transformLoader
- [GROOVY-5409] - Improve error message for shouldFailWithCause
- [GROOVY-5429] - Add excludes to @EqualsAndHashCode
- [GROOVY-5432] - GroovyDoc error for @EqualsAndHashCode
New Feature
- [GROOVY-4835] - provide a @NotYetImplemented AST transform for test cases of not yet implemented features (@Hackergarten contribution)
- [GROOVY-5096] - @Immutable should have an extensible way to be informed of classes that are "deemed" Immutable
- [GROOVY-5341] - json implicit object of type JsonBuilder added to groovlets
- [GROOVY-5375] - Sql has newInstance methods which create connections but doesn't manage them
- [GROOVY-5405] - Named parameters for groovy.sql.Sql
- [GROOVY-5414] - Groovy could benefit from DGM takeWhile and dropWhile methods
- [GROOVY-5460] - HTML Builder changes & between URL parameters to & when building an <a> tag
Sub-task
- [GROOVY-4483] - Constants resolving doesn't work in map.put()
Task
Test
- [GROOVY-5381] - Can't have an abstract method in a non-abstract class