Changelog for Groovy 5.0.0-alpha-3
Bug
- [GROOVY-4487] - null.class inconsistent with null.getClass() [NullObject]
- [GROOVY-5893] - Return type of "inject" is not inferred properly
- [GROOVY-6567] - delegate is NullObject instance for closure metamethods invoked on null
- [GROOVY-7861] - asType(null) called in @CompileStatic method returns a string 'null'
- [GROOVY-8254] - Alias is ignored in constructor call *
- [GROOVY-8488] - STC: floating-point literals no longer accepted as args to method with double parameter
- [GROOVY-8875] - NullObject.metaClass
- [GROOVY-8948] - BigDecimal to primitive conversion not working
- [GROOVY-9154] - JSR308 info incomplete in bytecode
- [GROOVY-9155] - JSR308 annotation attributes not being validated
- [GROOVY-9367] - org.codehaus.groovy.runtime.MetaClassHelper#getClassWithNullAndWrapper should return NullObject when accept null
- [GROOVY-11014] - CompileStatic & Elvis operator: Cannot assign literal value of type (java.lang.Number or java.lang.Comparable) to variable of type double
- [GROOVY-11178] - JSR308 constructor call annotations not resolved or available
- [GROOVY-11179] - JSR308 inline constants for annotations in class header
- [GROOVY-11180] - Regression: STC loses track of package-scope constants
- [GROOVY-11189] - STC LUB of List and Set is not Collection for Java 21
- [GROOVY-11192] - Code that causes Groovy Compiler Crash
- [GROOVY-11196] - ambiguous method error for tap on null receiver
- [GROOVY-11198] - access to public static variable forbidden in enum
- [GROOVY-11199] - inner class cannot set property of enclosing class that has a getter without a setter
- [GROOVY-11206] - Concatenated strings not treated as compile-time constants
- [GROOVY-11207] - STC rejects concatenated string as annotation parameter
- [GROOVY-11209] - XmlUtil escapeControlCharacters escapes control characters 0-30 instead of 0-31
- [GROOVY-11224] - Reconsider name duplication for groovysh *
Dependency upgrade
- [GROOVY-11187] - Bump asm to 9.6
- [GROOVY-11210] - Bump Commons CLI to 1.6.0
- [GROOVY-11214] - Bump jansi to 2.4.1
- [GROOVY-11215] - Bump JUnit Jupiter/JUnit Platform to 5.10.1/1.10.1
- [GROOVY-11216] - Bump checkstyle to 10.12.4 (build dependency)
- [GROOVY-11217] - Bump Spotbugs/Spotbugs annotations to 4.8.0 (build dependency)
- [GROOVY-11218] - Bump jackson/jackson-databind to 2.15.3
- [GROOVY-11219] - Bump javaparser to 3.25.6
- [GROOVY-11220] - Bump jqwik to 1.8.1 (test dependency)
- [GROOVY-11232] - Bump jqwik to 1.8.2 (test dependency)
- [GROOVY-11233] - Bump log4j2 version to 2.22.0 (test dependency)
- [GROOVY-11234] - Bump Spotbugs/Spotbugs annotations to 4.8.1 (build dependency)
- [GROOVY-11235] - Bump jackson/jackson-databind to 2.16.0
- [GROOVY-11236] - Bump checkstyle to 10.12.5 (build dependency)
Improvement
- [GROOVY-6260] - "Possible solutions" message is confusing because it doesn't reflect whether a property is read-only or write-only
- [GROOVY-8064] - Confusing error message when trying to access a property which is actually a method
- [GROOVY-8859] - fix trait private method consistency
- [GROOVY-11184] - JSR308: improve support for explicit-this type annotations
- [GROOVY-11203] - IllegalArgumentException: null argument for primitive parameter
- [GROOVY-11213] - indexOf extension method for arrays
- [GROOVY-11225] - shouldFail return type
- [GROOVY-11230] - ProxyGenerator creates a lot of AtomicReference instances regardless of "groovy.adapter.cache.default.size" setting
New Feature
- [GROOVY-11194] - groovyc missing features from the library compiler
Sub-task
- [GROOVY-10060] - Support private interface methods
Task
- [GROOVY-11197] - Support JDK 22
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)