Changelog for Groovy 6.0.0-beta-2
Bug
- [GROOVY-9585] - CompilerConfiguration copy constructor does not copy compilation customizers *
- [GROOVY-12225] - STC: property access to a record component fails for precompiled records
- [GROOVY-12228] - STC: multiple assignment ignores the declared type of the target variables
- [GROOVY-12229] - STC: cannot call the generated setter of a String property with a GString
- [GROOVY-12230] - STC: String/GString conditional not accepted where String is expected
- [GROOVY-12231] - validate the four hex digits of a json \u escape
- [GROOVY-12233] - StringEscapeUtils.unescapeJava mis-decodes and silently drops malformed \u escapes
- [GROOVY-12235] - Interface default method without dynamic calls references unemitted call-site helper under indy=false
- [GROOVY-12242] - instanceof pattern variable scope is not aligned with Java flow scoping (JEP 394) *
- [GROOVY-12245] - @AnnotationCollector(processor=…) value that isn't a constant produces GroovyBugError: unexpected NullPointerException
- [GROOVY-12247] - NPE "Cannot invoke MetaMethod.isAbstract() because method is null" on super call to inherited generic method with default parameter
Dependency upgrade
- [GROOVY-12222] - Bump antlr to 4.13.2.13
- [GROOVY-12241] - Bump antlr to 4.13.2.14
- [GROOVY-12243] - Bump commonmark to 0.30.0
- [GROOVY-12246] - Bump JUnit to 6.1.3
Improvement
- [GROOVY-12223] - Introduce hidden class support
- [GROOVY-12224] - Add a no-arg findingResults(Iterator) DGM method to avoid an NPE
- [GROOVY-12227] - GeneratedDispatcher: avoid runtime class definition so packed closures work in native images
- [GROOVY-12234] - Indy: AOT link mode so dynamic Groovy dispatch works in GraalVM native images
- [GROOVY-12236] - Allow @ASTTest to be disabled via a groovy.asttest.enable system property
- [GROOVY-12238] - SecureASTCustomizer does not check constructors, initializer blocks or field initializers
- [GROOVY-12240] - Initialize argument-less enum constants with a direct constructor call *
- [GROOVY-12244] - SecureASTCustomizer does not check authored code relocated into a synthetic method
- [GROOVY-12250] - NullChecker: narrow arguments of null-validator and assertion methods (requireNonNull, assertNotNull, assertThat(x).isNotNull())
- [GROOVY-12251] - NullChecker: check @NonNull fields are definitely initialized (strict mode)
- [GROOVY-12252] - NullChecker: honour @Nullable type arguments reaching results via generics (get(0), xs[0], head())
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)