Changelog for Groovy 4.0.0
Bug
- [GROOVY-10002] - STC: inconsistent support for assignment of list literals
- [GROOVY-10006] - @CompileStatic fails to unify types
- [GROOVY-10009] - TracingInterceptor throws NullPointerException if arguments contains a null argument
- [GROOVY-10010] - STC: method call with GString elements in list/array has different error from assignment
- [GROOVY-10011] - Combining flow typing and type argument inference does not work as expected
- [GROOVY-10024] - Dollar slashy /$ string ending in backslash "breaks" the parser
- [GROOVY-10027] - STC: NamedParams error for method call argument
- [GROOVY-10033] - Compiler crash when encountering function reference on nested class
- [GROOVY-10046] - NPE in static compiler
- [GROOVY-10047] - STC infers Closure instead of SAM for method references
- [GROOVY-10049] - STC fails when calling a generic method from another generic method
- [GROOVY-10051] - STC: return type for unresolved placeholder with bound resolved to Object
- [GROOVY-10053] - STC: Wrong type inferred for lambda parameter in a generic method
- [GROOVY-10055] - STC does not support self bounded types
- [GROOVY-10056] - Inferred parameter type of lambda expression for multi-dimensions array is not correct
- [GROOVY-10057] - MissingMethodException for pointer/reference from Class instance to Class method
- [GROOVY-10062] - STC: no type parameter inference for variadic method called with fewer arguments than parameters
- [GROOVY-10063] - STC: multiple-assignment from tuple-bearing static method
- [GROOVY-10067] - STC: Wrong return value type inferred for generic method with upper bound without parameters
- [GROOVY-10071] - SC: closure with variadic parameter
- [GROOVY-10072] - SC: closure with default argument(s)
- [GROOVY-10075] - Static compiler incorrectly typechecks extension modules
- [GROOVY-10079] - groovyc does not perform unboxing on Character type
- [GROOVY-10080] - Closure with type argument inference does not work as expected
- [GROOVY-10082] - Incompatible generic argument types when combining subtyping and closures
- [GROOVY-10085] - Class.isCase() documentation does not clarify that Class.isCase(SomeClass) is false, or why
- [GROOVY-10086] - STC misses type error when calling a vararg method
- [GROOVY-10087] - STC does not perform boxing on chars when encountering assignment and function call
- [GROOVY-10088] - STC: type argument not applied to error message
- [GROOVY-10089] - SC: GroovyCastException for map value as constructor for Collection
- [GROOVY-10091] - Incompatible generic argument types on closure's return type
- [GROOVY-10094] - STC misses type checks on default arguments
- [GROOVY-10097] - CLONE - Better propagation of InterruptedException (additional cases)
- [GROOVY-10098] - Unexpected behaviour when the return type of a closure is a type parameter
- [GROOVY-10102] - Type checking fails when calling trait method using indirect SelfType relation
- [GROOVY-10103] - Lambda with command method call fails with cast exception
- [GROOVY-10104] - SC: runtime error for default argument call expression
- [GROOVY-10106] - STC error for call to static trait method from closure
- [GROOVY-10107] - Cannot assign null to a variable with a bounded generic type
- [GROOVY-10111] - compiler crash during canonicalization
- [GROOVY-10113] - StackOverflowError in STC
- [GROOVY-10121] - @AnnotationCollector does not work with JUnit 5
- [GROOVY-10122] - Wrong cast in stubs generated
- [GROOVY-10125] - FP Cycle detected in type parameter that extends another type parameter
- [GROOVY-10128] - Cannot assign closure with long as return type to java.util.function.Function<X, Number>
- [GROOVY-10132] - XmlUtil.serialize() Emoji bug
- [GROOVY-10133] - Inconsistent method selection for [Bb]oolean properties *
- [GROOVY-10134] - Groovy console can not highlight token properly sometimes
- [GROOVY-10136] - [JDK16] Failed to find `public` method derived from `package` super class
- [GROOVY-10141] - NPE in InnerClassVisitor for non-static inner class CCE within two AICs
- [GROOVY-10144] - Calling method on specific trait fails when on different files
- [GROOVY-10145] - Support JDK16
- [GROOVY-10159] - Compilation failure: ClassCastException
- [GROOVY-10164] - RootLoader cannot be set as system class loader in Java 12+
- [GROOVY-10166] - Cannot call T#method(arg) with arguments <arg>
- [GROOVY-10176] - @NamedVariant with primitives can't find method
- [GROOVY-10178] - @CompileStatic and @NullCheck make compiler fail
- [GROOVY-10179] - STC: instanceof and for-in variable type
- [GROOVY-10180] - STC: instanceof and DGM each(Map,Closure)
- [GROOVY-10181] - Groovy 3 AST for annotated fields reports wrong lastLineNumber if field not initialized
- [GROOVY-10184] - NPE in SecureASTCustomizer with indirectImportCheckEnabled
- [GROOVY-10188] - Different treatment of property expressions in closures from 2.4 to 2.5
- [GROOVY-10189] - File.withWriter and Path.withWriter are inconsistent
- [GROOVY-10191] - NoSuchMethodError during static field inlining is not caught, unlike NoSuchFieldException
- [GROOVY-10199] - ASTTest cannot reference types from transform classpath
- [GROOVY-10200] - Static scope error for variable in non-static method of static inner class
- [GROOVY-10217] - Type inference does not work with GDK class enhancements
- [GROOVY-10218] - BUG! exception in phase 'instruction selection' when non-existent method called
- [GROOVY-10220] - Unexpected type mismatch when having conflicting type parameter names
- [GROOVY-10222] - Unable to infer the type parameter of a parameterized function
- [GROOVY-10225] - Unexpected NullPointerException during the "instruction selection" phase
- [GROOVY-10228] - STC fails to substitute type variable in the presence of the diamond operator and a function call
- [GROOVY-10229] - Question mark in the attribute for a class name
- [GROOVY-10230] - Unexpected generics parameter arity mismatch in the "instruction selection" phase
- [GROOVY-10232] - Massive increase in memory usage due to CacheableCallSite
- [GROOVY-10234] - Groovyc throws Stackoverflow error on generic class with lower bound
- [GROOVY-10235] - STC: Generic type of Set not correctly resolved when calling ConcurrentHashMap.newKeySet()
- [GROOVY-10236] - Parser fails to parse a single-statement lambda when omitting parentheses for method call
- [GROOVY-10238] - @CompileStatic @Canonical inner class throws RTE: NoSuchMethodError: java.util.Map.withDefault
- [GROOVY-10239] - GroovyCastException when @CompileStatic and !in keyword are used together
- [GROOVY-10243] - IOOBE thrown when parsing switch-expression without branches
- [GROOVY-10248] - Groovy ResolveVisitor runs twice
- [GROOVY-10249] - Generated stubs missing method from traits with array parameter
- [GROOVY-10250] - Erroneous type inference of closure in STC
- [GROOVY-10254] - STC: cannot return closure from method without casting
- [GROOVY-10256] - STC: no error for incompatible type bounds on return value
- [GROOVY-10261] - @NamedVariant: Default parameters on ctor/method are ignored when passing some named parameters
- [GROOVY-10262] - MethodNode#getText can output incorrect modifiers
- [GROOVY-10269] - STC: Stackoverflow Error when passing function reference to closure
- [GROOVY-10277] - STC fails to catch type error on the return type of lambdas
- [GROOVY-10280] - Type variable substitution does not work well when running into chain of field accesses
- [GROOVY-10282] - STC: false positive for BiFunction and BinaryOperator with same type parameter
- [GROOVY-10283] - Cannot assign type parameter whose bound is a parameterized type that takes a wildcard
- [GROOVY-10289] - Regression with static and non static class mixing
- [GROOVY-10291] - STC fails to substitute type variable when using the diamond operator and calling a closure
- [GROOVY-10294] - Variable's inferred type is upcasted to an Object
- [GROOVY-10299] - Groovy compiler generates invalid Java stubs
- [GROOVY-10302] - StackOverflowError on Java 16+ for override method that delegates to super
- [GROOVY-10303] - Compiler NPE within CompileStack#clear
- [GROOVY-10306] - STC rejects program when assigning a closure that returns a class field
- [GROOVY-10308] - SC incorrectly reports "access to Object#field" is forbidden
- [GROOVY-10309] - Improper type variable substitution when involving type parameters with conficting names
- [GROOVY-10310] - STC is unable to call parameterized function
- [GROOVY-10311] - MetaClassImpl creates static meta property for non-static field and getter (no setter)
- [GROOVY-10312] - MissingMethodException in method with default parameter in trait - regression in 3.0.9
- [GROOVY-10314] - finally block produces long sequence of nop instructions
- [GROOVY-10315] - Unable to infer type variable of parameterized function that expects two parameters
- [GROOVY-10317] - Type variable substitution does not work properly on parameterized function's return type
- [GROOVY-10318] - Weird behavior of !in operator
- [GROOVY-10319] - Groovy3 CompileStatic bug: Method clone is protected in java.lang.Object
- [GROOVY-10320] - Generics failed to compile with Groovy 3.0.9 when overriding plus operator
- [GROOVY-10322] - Type variable of function does not shadow the corresponding type variable of class
- [GROOVY-10323] - Compiler crashes on parameterized function with duplicate type variables
- [GROOVY-10324] - STC is unable to infer type variable when combining parameterized types and the diamond operator
- [GROOVY-10325] - STC: error for map*.value assignment
- [GROOVY-10326] - STC: missing error for map*.key assignment
- [GROOVY-10328] - STC: incorrect type inference for list, map, etc. with lower bound generics
- [GROOVY-10329] - import static star: add support for static callable property
- [GROOVY-10330] - STC instantiates type variable with a wrong type when calling an instance method of the same class
- [GROOVY-10336] - STC crashes when passing method reference to an inner closure
- [GROOVY-10337] - STC rejects program on compiling constructor initialization with a wildcard type
- [GROOVY-10339] - STC instantiates parameterized function with a wrong type leading to unsoundness
- [GROOVY-10344] - STC crashes when bound has two wildcard types as type arguments
- [GROOVY-10347] - STC: lowed bound wildcard inference produces false positives
- [GROOVY-10351] - Wrong type argument is inferred on combining use-site variance and diamond operator
- [GROOVY-10375] - SC: cast exception for private property access from lambda
- [GROOVY-10379] - Error for super class and super interface methods of same name
- [GROOVY-10380] - SC: IncompatibleClassChangeError when calling interface default method from non-public interface
- [GROOVY-10391] - Default interface methods causing problems with java 17 and groovy 3.0.9
- [GROOVY-10394] - SC: operands evaluated multiple times for <=> operator on reference types
- [GROOVY-10396] - Static import is not applied for custom println method since 2.5.1
- [GROOVY-10398] - LazyFieldNode never equals itself
- [GROOVY-10405] - @AutoClone breaks in Java17 for File properties
- [GROOVY-10406] - Dollar slashy string is too greedy
- [GROOVY-10407] - unchecked method invocation warning in generated stubs
- [GROOVY-10413] - IllegalAccessException when using closures for functional interfaces with default methods
- [GROOVY-10414] - STC: cannot set non-static outer class property via setter method
- [GROOVY-10419] - STC: stack overflow for elvis assignment with explicit setter
- [GROOVY-10424] - SC: stack overflow for optimized boolean on private inner class with inner class(es)
- [GROOVY-10429] - StringBuilder misses setLength method in Java17
- [GROOVY-10433] - "sealed" not usable as a restricted identifier
- [GROOVY-10434] - ClassNode isRecord and isSealed not useful before AST transformation
- [GROOVY-10439] - No error/warning for @Delegate introducing conflicting interface generics
- [GROOVY-10449] - Include public fields in the list of properties returned by MetaClassImpl#getProperties() *
- [GROOVY-10451] - Sealed classes incorrectly allow a self-reference in the permitted subclasses
- [GROOVY-10456] - Inconsistent exception upon accessing empty property
- [GROOVY-10457] - Compilation of constructor calls inside CompileDynamic constructors fails with ArrayIndexOutOfBoundsException
- [GROOVY-10462] - Groovy should not generate both `getFlag` and `isFlag` for a Boolean field.
- [GROOVY-10516] - Script @groovy.transform.Field AST transformation generics handling with fully qualified types
- [GROOVY-10746] - Calling method in Super class causes java.lang.StackOverflowError with Java 1.8
- [GROOVY-11242] - Stackoverflow error when calling super from overridden method
- [GROOVY-3015] - Seems like ClosureMetaClass#invokeMethod does not respect the interceptable nature of the owner/delegate
- [GROOVY-3421] - Expression underlying a spread map expression is evaluated twice
- [GROOVY-3422] - unable to reference one static closure from another without class name prefix
- [GROOVY-3493] - Cannot override methods via metaclass that are part of an interface implementation
- [GROOVY-3708] - Intercepting an indirectly called method doesn't work.
- [GROOVY-4266] - CLONE -Wrong generation of import statements in stubs
- [GROOVY-4320] - Joint compiler + @Delegate fail to recognize method signature with default value
- [GROOVY-4610] - GroovyInterceptable (AOP) not working with closures
- [GROOVY-4727] - Adding "return" automatically in nested switch statements
- [GROOVY-4945] - Incorrect "Possible solutions" when calling a method on super in a non-derived class
- [GROOVY-5103] - groovy compiler ignores import * for static nested classes in java sources
- [GROOVY-5106] - Same interface can be implemented with two different generic types
- [GROOVY-5169] - JsonOutput.toJson(object) is not returning expected results
- [GROOVY-5204] - @Delegate to a method with optional params
- [GROOVY-5239] - Statically imported method vs other methods with the same name
- [GROOVY-5245] - Inconsistency with accessing issers as properties
- [GROOVY-5358] - Different ways of extending a class functionality esp. adding getProperty inconsistent
- [GROOVY-5364] - Static property reference from static context in script does not compile
- [GROOVY-5367] - Closure property in Binding used as Closure delegate cannot be called
- [GROOVY-5453] - Incorrect resolve of category property for String
- [GROOVY-5728] - Accessing private constructor from a static factory
- [GROOVY-5736] - Log4j, Commons, Slf4j ast transforms are broken in Groovy-Eclipse
- [GROOVY-5746] - Array assignment with operator does double call for index expression and array part
- [GROOVY-6097] - Using super.propertyName gives a MissingMethodException when the property is a boolean and uses the "isPropertyName" naming convention.
- [GROOVY-6282] - groovyc ant task generates invalid stub (picks wrong constructor) and fails in Java 1.7 compilation
- [GROOVY-6328] - onMethodSelection() doesn't fire when setter is called with property syntax
- [GROOVY-6408] - Problem With @CompileStatic And Typed Collections
- [GROOVY-6453] - groovysh in Windows 7/8/10 doesn't support arrow keys and Del
- [GROOVY-6586] - Read vs Write to members of base script supplied by @BaseScript is inconsistent
- [GROOVY-6610] - "Expecting to find object/array on stack" VerifyError when passing static member as argument to chained ctor call
- [GROOVY-6653] - StackOverflow Exception when calling super.method when extending java class
- [GROOVY-6747] - Problem With Anonymous Inner Enum
- [GROOVY-6802] - CompileStatic: ListAssignment takes precedence over Coercion when statically compiling
- [GROOVY-6803] - CompileStatic: ListAssignment for String takes precendence over Coercion when statically compiling
- [GROOVY-6837] - String[] + String[] gives Object[] *
- [GROOVY-6882] - STC: AIC cannot resolve overridden method of outer class
- [GROOVY-6912] - @CompileStatic not recognising Literal list when LHS is a concrete list type
- [GROOVY-6919] - Static compilation fails with multiple bounds generics
- [GROOVY-7024] - Reference to static member of parent class in enum constructor fails at runtime
- [GROOVY-7033] - Bug with annotation with closure on method of anonymous class
- [GROOVY-7094] - Semantic of access super fields is not consistent: super.@field == super.field
- [GROOVY-7128] - Generic method declaration should see the super class
- [GROOVY-7142] - type inference problem with List of Interface and List of the class which implements the interface
- [GROOVY-7208] - Script.getProperty vs Script.setProperty asymmetry
- [GROOVY-7232] - Delegation inconsistent between methods and properties in nested closures *
- [GROOVY-7293] - @Memoized ignored in trait methods
- [GROOVY-7304] - Cannot mutate private field from within an AIC or a closure
- [GROOVY-7306] - Invalid stub generated for a constructor using a generic bounded parameter
- [GROOVY-7373] - Interact Closures withing Groovy Trait methods are not recognized by the implementing class
- [GROOVY-7399] - Method "with()" fails to call on the object reference in Trait
- [GROOVY-7419] - Static Compilation with Diamond of local EnumMap<>
- [GROOVY-7468] - type checker should use superclass bound when expected by generics
- [GROOVY-7473] - inefficient code generation
- [GROOVY-7490] - CompileStatic confuses statically importing an instance and statically importing a method
- [GROOVY-7494] - ArrayStoreException assigning GStringImpl to String[] when using Indy
- [GROOVY-7500] - Problem With Runtime Metaprogramming Over A Trait Method
- [GROOVY-7507] - Cannot assign value of type java.lang.Object in ternary operator with null
- [GROOVY-7510] - Static import of a static property causes joint compilation to fail
- [GROOVY-7512] - Cannot call Trait method from Closure when using static compilation
- [GROOVY-7549] - java.lang.IllegalAccessError occurs when attempting to run code built with CompileStatic
- [GROOVY-7582] - Closure to SAM coercion doesn't handle overloads with different SAM signatures
- [GROOVY-7682] - JsonBuilder or JsonOutput incompatible with JodaTime
- [GROOVY-7686] - Can not see local variable from overriden method called from the constructor of an anonymous class instance
- [GROOVY-7690] - TypeChecked Groovy does not throw illegal assignment error at compile time when using raw generic type
- [GROOVY-7701] - org.codehaus.groovy.runtime.typehandling.GroovyCastException in Groovy ".with { ... }" - Block
- [GROOVY-7759] - @Lazy does not work when used in a Trait
- [GROOVY-7799] - Extended generic types with var args isn't compiled if they contains in different files
- [GROOVY-7843] - Trait method calling closure cannot be inherited while using CompileStatic
- [GROOVY-7848] - Closure generic parameters ignored and return types missing from collections methods
- [GROOVY-7867] - asType(Collection col, Class clazz) ingnores exceptions in clazz constructor
- [GROOVY-7890] - Lack of compilation error while statically compiled the closure.
- [GROOVY-7945] - Expect compilation error while resolving generic types
- [GROOVY-7968] - A field and a property with the same name and both having an initial value leads to an ambiguity over what the initial value should be, so should fail compilation *
- [GROOVY-8000] - Problem With Trait Generics
- [GROOVY-8001] - Static compiling fails type checking with generics
- [GROOVY-8034] - Compile error when using generic type with lower bound
- [GROOVY-8049] - Trait properties with 'with'
- [GROOVY-8050] - Reference outer class property via inner class
- [GROOVY-8100] - MarkupBuilder cant yield before first tag
- [GROOVY-8104] - Could not call constructor of inner class from anonimous class inside closure
- [GROOVY-8111] - Stack overflow between WideningCategories lowestUpperBound and parameterizeLowestUpperBound
- [GROOVY-8164] - Groovy allows a Java class to inherit static methods from its interface *
- [GROOVY-8179] - Map-style constructor call, inner class and static compilation
- [GROOVY-8202] - void tail calls in closures break @CompileStatic type inference
- [GROOVY-8270] - Bug in @AutoImplement
- [GROOVY-8274] - methodMissing not executed when the delegate is an inner class
- [GROOVY-8284] - getMetaClass should be annotated as (JavaBeans) transient
- [GROOVY-8409] - Static compilation with generic function wrapping BiFunction causes GroovyCastException
- [GROOVY-8427] - Issue With Static Compiler And Generics
- [GROOVY-8433] - Anonymous inner class results in cast exception with @Category applied
- [GROOVY-8452] - @CompileStatic, generic with 'extends' bug: Expected parameter of type ? but got A
- [GROOVY-8633] - MME on Class receiver via method closure
- [GROOVY-8638] - CompileStatic fails with Guava Multimap#asMap
- [GROOVY-8652] - Putting key on generic Map fails when using CompileStatic
- [GROOVY-8678] - Groovy Script execution fails when comparing decimal values against decimal constant without leading 0
- [GROOVY-8693] - Calling indirect default interface methods fails both dynamic/static compiled
- [GROOVY-8707] - += in CompileStatic dynamically sets property instead of using setter
- [GROOVY-8715] - Cannot resolve array of inner class from type in same package (no import)
- [GROOVY-8774] - Stub generator doesn't handle package-info
- [GROOVY-8820] - Closure inside trait cannot use Closure's delegate variables
- [GROOVY-8840] - CLONE - Compile Static causes getAt to fail (advanced cases)
- [GROOVY-8850] - StreamingMarkupBuilder adds namespace on elements not expected
- [GROOVY-8909] - List literal type inference does not take its context into account
- [GROOVY-8946] - @CompileStatic ignores declared type and forces a cast when inside a closure
- [GROOVY-8960] - Can not call a java parameterized type method from groovy with java enum. Compile error
- [GROOVY-8961] - Cannot pass generic list into explicit setter
- [GROOVY-8974] - STC ignores declaration type
- [GROOVY-8983] - Cannot assign Collection to Array
- [GROOVY-8984] - Can assign Collection with super wildcard to Array
- [GROOVY-8999] - Access to private fields and methods from subclass exhibits strange behavior
- [GROOVY-9006] - Static type checking fails on java.sql.Timestamp when compared to null
- [GROOVY-9033] - Bad code green: empty list literal with each method
- [GROOVY-9064] - STC: explicit declared variable type ignored in favor of assigned value type(s)
- [GROOVY-9076] - Debugger Step Into doesn't work in Groovy-compiled classes
- [GROOVY-9093] - SC: subclass access to package-private or private field is not indicated as an error
- [GROOVY-9146] - Seems to be a gap in method reference support
- [GROOVY-9158] - @NamedParam arguments don't get their default value when only named parameters are used in the method call
- [GROOVY-9185] - groovyc doesn't keep RetentionPolicy in generated bytecode
- [GROOVY-9194] - Groovy fails when a script starts with a #
- [GROOVY-9255] - trait property throws MissingPropertyException when read using qualified super expression
- [GROOVY-9256] - trait qualified-super expressions fail when inside closure
- [GROOVY-9310] - Groovy does not ignore second bash directive
- [GROOVY-9344] - CCE in closure shared variable assignment
- [GROOVY-9373] - ASM: rework line numbers for blocks with fast-path, try/catch or return statement insertion
- [GROOVY-9382] - Inconsistent support for [Bb]oolean properties *
- [GROOVY-9385] - Access to outer class private field from closure leads to ClassCastException (@CompileStatic)
- [GROOVY-9386] - Field initialized in a trait using tap doesn't work correctly
- [GROOVY-9387] - Using this.method() in closures inside BuilderSupport subclasses doesn't dispatch properly
- [GROOVY-9389] - STC regression using increment/decrement operators on custom bean accessors in Groovy 3.0.0
- [GROOVY-9391] - Casting the superclass object and calling it stack overflows
- [GROOVY-9392] - GroovyClassLoader as system class loader fails in Groovy 3
- [GROOVY-9396] - Captured arguments in closures are not annotated with @Generated
- [GROOVY-9397] - CLONE - Closures are maybe not Threadsafe
- [GROOVY-9398] - GroovyScriptEngine cannot recompile a class that uses generic parameters
- [GROOVY-9399] - Annotations on annotation methods are missing in the AST
- [GROOVY-9400] - Regression in end of line handling between 2.5.9 and 3.0.0
- [GROOVY-9405] - Junit 5 IncompatibleClassChangeError
- [GROOVY-9409] - org.codehaus.groovy.runtime.callsite.GroovySunClassLoader is unusable
- [GROOVY-9410] - Writable is not on classpath for compilation when using maven repository
- [GROOVY-9414] - Groovy 3.0.1 : @Delegate does not work with default getter
- [GROOVY-9420] - Incorrect type inference on map[key]
- [GROOVY-9422] - @CompileStatic non-static inner class instantiation in closure
- [GROOVY-9427] - Regression in GString handling
- [GROOVY-9429] - Illegal reflective access warnings occurred when getting property
- [GROOVY-9433] - grammar ambiguity with ternary expression being confused with safe indexing
- [GROOVY-9448] - Missing throws clause of constructor declaration in java stubs
- [GROOVY-9449] - Mutliple methods with the same name now fail before AST transformations can fix it
- [GROOVY-9450] - DefaultGroovyMethods findIndexOf method can't use startIndex
- [GROOVY-9452] - Multiple Repeatable Annotations Container generated if an explicit container is present and an implicit one required
- [GROOVY-9454] - STC: regression for instanceof on generic field/property
- [GROOVY-9455] - STC: no error for if (!(x instanceof T)) x.methodFromT()
- [GROOVY-9459] - Line number information for automatically inserted return statements quirky
- [GROOVY-9460] - Groovy 3 Compilation Failure with method with argument Class<?> called with Class<D>
- [GROOVY-9462] - Groovy 3 BUG! exception in phase 'conversion' in source unit Caused by NullPointerException
- [GROOVY-9463] - STC: no type check error for invalid method pointer or reference
- [GROOVY-9465] - GroovyDoc: class-header is not always displayed
- [GROOVY-9469] - Original exception during global AST transformation no longer preserved in error message
- [GROOVY-9472] - Static import causes unresolved reference to become resolved
- [GROOVY-9477] - FastStringServiceFactory SPI loading in OSGi
- [GROOVY-9480] - New v9 ClassFinder throws NoSuchFileException/UnsupportedOperationException and writes it to stderr
- [GROOVY-9483] - Console exits when Cancel is clicked on the "Save changes" dialog
- [GROOVY-9485] - metaclass is not initialized
- [GROOVY-9489] - package.html files being ignored during javadoc generation when building on JDK9+
- [GROOVY-9501] - MissingPropertyException for access to private static field from inner class when subclassing
- [GROOVY-9505] - java.lang.UnsupportedOperationException: This feature requires ASM8 on JDK 14 in Spock tests
- [GROOVY-9506] - Joint compilation is broken
- [GROOVY-9507] - JSP style loop in StreamingTemplateEngine template results in TemplateParseException
- [GROOVY-9508] - groovyConsole CLI plumbing for --enable-preview command-line switch is missing one part
- [GROOVY-9511] - Annotation spanning lines is not supported by Parrot
- [GROOVY-9515] - MethodHandle with spread args should not be cached
- [GROOVY-9516] - Static compiler infers wrong type for implicitly shared variables
- [GROOVY-9517] - CompileStatic typeCasting runtime error from Class Array to Class List
- [GROOVY-9518] - Closure argument types not inferred when calling a constructor
- [GROOVY-9522] - Throwing NPE when I use ternary operator with something special
- [GROOVY-9524] - VerifyError when referencing a private enum method
- [GROOVY-9526] - Failed to reload classes with generic parameters
- [GROOVY-9529] - Static type checking сannot choose between Map#getAt(Object) and Object#getAt(String) methods
- [GROOVY-9543] - groovydoc multiple issues with generics
- [GROOVY-9546] - Annotations on class signature are rendered incorrectly
- [GROOVY-9547] - @see tags are not working properly
- [GROOVY-9548] - groovydoc: properties claim to be "private" and don't show annotations
- [GROOVY-9554] - @Field variable access within closures broken
- [GROOVY-9556] - Stub generated without the effect of AST transformation makes joint compilation fail
- [GROOVY-9558] - Wrong code for putAt on Map that is member of closure delegate
- [GROOVY-9562] - Base class property causes CCE
- [GROOVY-9566] - Default import for Proxy is wrong
- [GROOVY-9567] - groovydoc: abstract methods do not have abstract modifier
- [GROOVY-9568] - groovydoc: extra default constructor
- [GROOVY-9569] - SC: new compiler error for access of static, non-final, outer-class field *
- [GROOVY-9570] - Class-Level Closure Definition With Generics Fails TypeChecked
- [GROOVY-9571] - groovydoc: annotation definitions, enums, interfaces, and traits have a default ctor
- [GROOVY-9573] - groovydoc: byte[] shown as [B
- [GROOVY-9574] - ConcurrentModificationException in Java9.concealedPackageList
- [GROOVY-9575] - ASTNode.hashCode violates Object.hashCode contract: does not return consistent value
- [GROOVY-9577] - Order of ModuleNode#getImports() is expected but not guaranteed
- [GROOVY-9580] - STC: return type checking for generic, covariant property gives false error
- [GROOVY-9581] - コンパイラで、クロージャから静的クラス変数を参照できない.
- [GROOVY-9584] - CLONE - Error when creation a variable named "context"
- [GROOVY-9586] - SC: calling trait method inside closure has incorrect receivers data
- [GROOVY-9587] - Scope of method call changed from non-static to static 2.4->2.5
- [GROOVY-9588] - groovyCompile 6x slower in 3.0.4 than 2.5.6
- [GROOVY-9591] - Compiler error for use of variable expression within tap closure
- [GROOVY-9597] - CompileStatic: @ClosureParams in @DelegatesTo doesn't work
- [GROOVY-9598] - CompileStatic: Runtime error: Access outer class property from static inner in @DelegatesTo
- [GROOVY-9600] - Picocli-related VersionProvider helper classes should be public to avoid access warnings
- [GROOVY-9601] - Parsing text into a class became much slower under Groovy 3.x
- [GROOVY-9603] - Assignment of Map literal to Map element fails to compile (static)
- [GROOVY-9604] - STC: method or property missing errors for Closure's getResolveStrategy(), etc.
- [GROOVY-9605] - leftShift operator does not work on BigInteger (throws UnsupportedOperationException)
- [GROOVY-9606] - Traits using generics generate incorrect stub for Methods
- [GROOVY-9607] - Class generation regression in 3.0.5-ss: This method should not have been called
- [GROOVY-9609] - ScriptBytecodeAdapter.getPropertyOnSuper fails with method missing for getProperty
- [GROOVY-9615] - super.method() can trigger method on outer class in case of missing method
- [GROOVY-9618] - Property reference resolves to field, not getter when property name is single upper-case letter *
- [GROOVY-9620] - MetaClassImpl uses findPropertyInClassHierarchy inefficiently
- [GROOVY-9632] - Java 8 Type Param Annotation Not Generated in Byte Code
- [GROOVY-9634] - ClassNode hasPossibleMethod and tryFindPossibleMethod make inefficient use of getMethods(String) and getSuperClass()
- [GROOVY-9635] - Generic types get mixed up
- [GROOVY-9642] - Inner interface of parent class unresolved in anon. inner class expression
- [GROOVY-9643] - Using Spock thrown() method causes IllegalAccessError for 2.0-M2-groovy-3.0 on JDK 8 with noverify switch
- [GROOVY-9645] - Inconsistencies in JavaBean naming for property access
- [GROOVY-9647] - Module changes for Groovy 4
- [GROOVY-9648] - Bad error message when attempting to call a missing constructor
- [GROOVY-9652] - SC: ClassCastException for comparison to single-character string literal in closure
- [GROOVY-9653] - SC: ClassCastException on delegate object property set
- [GROOVY-9654] - should not consider bridge methods when determining whether an overridden method annotated with @Override is valid
- [GROOVY-9657] - JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException
- [GROOVY-9658] - Infinite recursion exists in HashCodeHelper#updateHash(int, java.lang.Character)
- [GROOVY-9661] - Since Groovy 3 ArrayExpression#sizeExpression can suddenly return null
- [GROOVY-9662] - Groovy 3.0.5: Closure delegate is not working properly
- [GROOVY-9666] - ConcurrentModificationException with ASTTransformation
- [GROOVY-9672] - trait conflict resolution not available for static methods
- [GROOVY-9673] - GroovyCastException when using Trait.super.name = ... with multiple setters
- [GROOVY-9681] - Groovy2 indy not backward compatible missingMethod with Groovy3
- [GROOVY-9688] - Groovy 3.0.5 references groovyjarjaropenbeans.BeanInfo (doesn't seem to be included in the distribution) and 3.0.0.rc1 uses java.beans.BeanInfo
- [GROOVY-9691] - Method call "main" is replaced with StaticMethodCallExpression in script
- [GROOVY-9692] - Adding extension method 'call' on ArrayList with Closure as a parameter stopped working in 3.0.x
- [GROOVY-9699] - @CompileStatic does not use bridge methods for keyed map access
- [GROOVY-9700] - SC: set groovy property written for variable expression assignment that should be direct setter call
- [GROOVY-9702] - ASTTest annotation has runtime retention and transform removes required member from AST *
- [GROOVY-9703] - DefaultGroovyMethods.reverse(T[], true) performs extra copy
- [GROOVY-9704] - The '~' negate operator causes an ASM processing error when static compiled
- [GROOVY-9706] - Groovy 3.0.5 varargs [Static type checking] - Cannot find matching method
- [GROOVY-9707] - TypeChecked: NoSuchMethodError: DefaultGroovyMethods.plus(java.lang.String, java.lang.Object)
- [GROOVY-9711] - @Sortable annotation always sorts by the parent properties
- [GROOVY-9712] - groovyc fails when compiling class starting with unicode character
- [GROOVY-9717] - 3.0 stubs include packages annotations on classes other than package-info.groovy
- [GROOVY-9732] - CompareToNullExpression has empty implementation of transformExpression
- [GROOVY-9735] - STC: incorrect error for actual vs inferred closure parameter type
- [GROOVY-9737] - VerifyError if superclass has static and non-static overloads
- [GROOVY-9739] - NPE in ClassNode.isDerivedFrom while compiling trait with Groovy 3.0.5
- [GROOVY-9751] - STC: error for addAll with collect argument
- [GROOVY-9757] - ASTTest is run for every SourceUnit in a CompilationUnit
- [GROOVY-9758] - groovsh import of non existing class throws null pointer instead of syntax error
- [GROOVY-9760] - NPE when trait with type parameter is implemented as raw type
- [GROOVY-9762] - Wrong type resolved if method reference used with typed method
- [GROOVY-9763] - Regression in groovyc 3.0 and 4.0 and Compile static with generic static method in trait
- [GROOVY-9769] - STC: UnionTypeClassNode created for simple instanceof scenarios
- [GROOVY-9770] - Groovy 3 generated lambda classes are marked as synthetic
- [GROOVY-9771] - STC: "putAt" shortcut notation to outer class private field from Closure leads to GroovyCastException
- [GROOVY-9772] - AnnotationCollectorTransform generates code not marked with @Generated
- [GROOVY-9777] - Stub missing cast, depending on constructor order
- [GROOVY-9779] - Inconsistency with callable properties in static context
- [GROOVY-9784] - GroovyRowResult not assignable to Map<String, Object> with static type checker
- [GROOVY-9786] - SC: cast exception for variable assigned within conditional blocks
- [GROOVY-9790] - bootstrap method initialization exception raised when lambda parameter type is wrong
- [GROOVY-9791] - SC: cross-package protected field access uses dynamic property methods
- [GROOVY-9797] - println(-0.0f) does not comply with IEEE754
- [GROOVY-9799] - Using a method reference causes a compiler error
- [GROOVY-9803] - Static type checker forgets nested generic types
- [GROOVY-9807] - Static compile of dynamically generated code produces different output in a top-level class and a nested class
- [GROOVY-9814] - Method reference doesn't accept subtypes of argument
- [GROOVY-9815] - Object not bound with Groovy (but works fine in Java)
- [GROOVY-9816] - @AutoImplement does not consider declared properties
- [GROOVY-9821] - STC: spread-safe and list property access error for CollType<? extends ItemType>
- [GROOVY-9822] - StackOverflowError in STC
- [GROOVY-9824] - CVE-2020-17521 Apache Groovy Information Disclosure
- [GROOVY-9825] - interface constants from super interfaces lost in some contexts
- [GROOVY-9826] - Better propagation of InterruptedException
- [GROOVY-9828] - Migrate from Codehouse to Apache Groovy 4.0.0-alpha
- [GROOVY-9842] - Static inner class of a static inner class is missing inner class table attribute
- [GROOVY-9844] - STC infers too-narrow bounds for inline map
- [GROOVY-9851] - Private field and method use from subclass is inconsistent
- [GROOVY-9852] - Result is already complete (IllegalStateException) *
- [GROOVY-9855] - Compiler does not resolve compile-time constants in string concatenation
- [GROOVY-9859] - Groovy3 doesn't parse a function property when there's a new line between return value and function name
- [GROOVY-9860] - compilation error when passing a closure's genericized parameters to a constructor under static compilation
- [GROOVY-9861] - parsing bug when inner class references top level class fields in groovy 3
- [GROOVY-9862] - General error during instruction selection: ClassCastException
- [GROOVY-9863] - arithmetic using an implicit getter fails to compile with "BUG! exception in phase 'class generation'" under static compilation
- [GROOVY-9867] - docgenerator not displaying array types correctly
- [GROOVY-9875] - backspace does not work in the groovysh under SecureCRT connecting Linux
- [GROOVY-9880] - Switch incorrectly falls through default case
- [GROOVY-9881] - STC can't distinguish SAMs based on arity
- [GROOVY-9882] - STC: field or property with parameterized SAM-type and closure initializer
- [GROOVY-9884] - groovy3: setProperty does not work in sub classes
- [GROOVY-9885] - STC doesn't coerce GString in certain ternary expressions
- [GROOVY-9890] - Static type checking can't find default method overload on interface
- [GROOVY-9891] - Wrongly detected incompatible generic arguments for Java collections
- [GROOVY-9892] - STC: VerifyError when embedding unary pre/postfix inc/decrement operation of outer field in GString
- [GROOVY-9893] - Wrong overloaded method selected
- [GROOVY-9896] - Switch return statement transformation misses last case without break
- [GROOVY-9901] - Memoization doesn't seem to work for trait methods
- [GROOVY-9902] - Generic typecheck in @DelegatesTo doesn't work
- [GROOVY-9903] - STC: @DelegatesTo error for incomplete arguments linked to first line of source
- [GROOVY-9905] - Groovy 3 bug: references to an outer class's parent class variable fails
- [GROOVY-9906] - ArrayIndexOutOfBoundsException when compiling method call with many overloaded methods
- [GROOVY-9907] - Type tracked from instanceof condition is not captured in closure
- [GROOVY-9909] - Cannot call super when overriding an interface default method
- [GROOVY-9910] - STC: no error for incorrect parameter type if not referenced in lambda
- [GROOVY-9911] - Tuples with same collection values do not match
- [GROOVY-9914] - map.collectEntries extension method variant returns Map<?,?>
- [GROOVY-9915] - STC: call to static method fails with incompatible generics error
- [GROOVY-9916] - IllegalArgumentException when set null to a boolean field into a closure
- [GROOVY-9918] - NPE in static compiler when calling pathological method signature
- [GROOVY-9923] - Several Sql#call variants incorrectly throw Exception rather than SqlException *
- [GROOVY-9932] - MockFor/StubFor makes mocked internal method return null
- [GROOVY-9934] - Bounded type parameter is not captured by closure
- [GROOVY-9935] - int reference seems to not use its wrapper class
- [GROOVY-9936] - Difference between Antlr2 and parrot parsers for variable declaration optimisation *
- [GROOVY-9938] - VerifyError when instantiating class with @CompileStatic that implements a method with @DelegatesTo annotation.
- [GROOVY-9945] - STC: Cannot find matching method when using Generics
- [GROOVY-9948] - Cannot infer the correct type in the presence of diamond operator
- [GROOVY-9951] - @CompileStatic @POJO annotation on static inner class with @Immutable annotation
- [GROOVY-9953] - Type from flow typing is not propagated in variable assignments
- [GROOVY-9954] - JsonSlurper LAX parser skips the first character after comments
- [GROOVY-9955] - IllegalAccessError exception is raised when accessing inherited static field
- [GROOVY-9956] - Cannot infer correct type argument when passing a subtype of the declared type argument
- [GROOVY-9963] - Generic type of field is not instantiated
- [GROOVY-9966] - Build Error: StringIndexOutOfBoundsException when the stars align...
- [GROOVY-9967] - STC: Access to field/property is forbidden after instanceof.
- [GROOVY-9968] - @TypeChecked Error: Members of Iterable<T extends Foo> are Foo, not Object
- [GROOVY-9970] - Type argument inference does not work in closure
- [GROOVY-9971] - @TypeChecked: Closure<String> no longer compatible with Closure<GString> argument
- [GROOVY-9972] - LUB does not work correctly in case of ternary operator
- [GROOVY-9973] - @CompileStatic: Binary operation with property throws ClassCastException
- [GROOVY-9974] - @CompileStatic with Method References
- [GROOVY-9977] - @CompileStatic does not work when a class field has a lambda initializer
- [GROOVY-9978] - ASM reporting processing error
- [GROOVY-9981] - CLONE - println(-0.0f) does not comply with IEEE754
- [GROOVY-9982] - Can't assign a field with the result of a method call of the same name from a base class
- [GROOVY-9983] - Type argument inference does not work in ternary operator
- [GROOVY-9984] - Wrong type inference when passing null
- [GROOVY-9985] - STC does not report type mismatches in array initializers
- [GROOVY-9991] - STC: error for closure not matching functional interface method's parameter count
- [GROOVY-9993] - CLONE - Field and a property with the same name: clarification of boundary cases *
- [GROOVY-9994] - Type checking of array initializer expressions
- [GROOVY-9995] - Wrong inference inside closure when having a bounded type parameter
- [GROOVY-9996] - Cannot infer correct type argument when using subtyping
- [GROOVY-9997] - STC: cast or coerce to functional interface fails to infer param types of closure/lambda
- [GROOVY-9998] - Wildcards with a lower bound fail static type checking
Dependency upgrade
- [GROOVY-10013] - Bump jackson version to 2.12.2
- [GROOVY-10014] - Bump checkstyle to 8.41.1
- [GROOVY-10015] - Bump xstream to 1.4.16
- [GROOVY-10016] - Bump JavaParser to 3.20.2
- [GROOVY-10017] - Bump jansi to 2.3.2
- [GROOVY-10018] - Bump log4j2 to 2.14.1
- [GROOVY-10019] - Bump picocli to 4.6.1
- [GROOVY-10020] - Bump Spotbugs/Spotbugs annotations to 4.2.2
- [GROOVY-10021] - Bump json-unit to 2.25.0
- [GROOVY-10030] - Bump asciidoctor versions
- [GROOVY-10038] - Bump jackson to 2.12.3
- [GROOVY-10042] - Bump Ant version to 1.10.10
- [GROOVY-10043] - Bump spotbugs to 4.2.3
- [GROOVY-10044] - Bump versions plugin to 0.38.0
- [GROOVY-10048] - Bump Gradle to 6.8.3
- [GROOVY-10058] - Bump junit to 5.7.1
- [GROOVY-10093] - Bump Spock version to 2.0 final
- [GROOVY-10117] - Bump javaparser to 3.22.1
- [GROOVY-10118] - Bump xstream to 1.4.17
- [GROOVY-10119] - Bump versions gradle plugin to 0.39.0
- [GROOVY-10135] - Bump jansi to 2.3.3
- [GROOVY-10151] - Bump gradle to 6.9
- [GROOVY-10154] - Bump asm to 9.2
- [GROOVY-10167] - Bump jackson version to 2.12.4
- [GROOVY-10168] - Bump json-unit version to 2.27.0
- [GROOVY-10169] - Bump Ant version to 1.10.11 (incorporates CVE-2021-36373 and CVE-2021-36374)
- [GROOVY-10170] - Bump JUnit Jupiter/JUnit Platform to 5.7.2/1.7.2
- [GROOVY-10171] - Bump slf4j to 1.7.31
- [GROOVY-10172] - Bump Spotbugs version to 4.3.0
- [GROOVY-10173] - Bump checkstyle to 8.44
- [GROOVY-10174] - Bump gson to 2.8.7
- [GROOVY-10175] - Bump Codenarc to 2.1.0
- [GROOVY-10182] - Bump jansi to 2.3.4
- [GROOVY-10202] - Bump Gradle to 6.9.1
- [GROOVY-10203] - Bump xstream to 1.4.18
- [GROOVY-10204] - Bump javaparser to 3.23.0
- [GROOVY-10205] - Bump jackson version to 2.12.5
- [GROOVY-10206] - Bump Spotbugs version to 4.4.0
- [GROOVY-10211] - Bump Codenarc to 2.2.0
- [GROOVY-10237] - Bump gradle to 7.2
- [GROOVY-10242] - Bump asciidoctor gradle to 3.3.2
- [GROOVY-10245] - Bump asciidoctorj to 2.5.2
- [GROOVY-10246] - Bump junit5 to 5.8.0
- [GROOVY-10255] - Bump JUnit5 to 5.8.1
- [GROOVY-10276] - Bump jackson to 2.13.0
- [GROOVY-10285] - Bump javaparser to 3.23.1
- [GROOVY-10292] - Bump checkstyle to 9.0.1
- [GROOVY-10296] - Bump Spotbugs/Spotbugs annotations to 4.4.2
- [GROOVY-10313] - Bump jansi to 2.4.0
- [GROOVY-10331] - Bump Commons CLI to 1.5.0
- [GROOVY-10332] - Bump logback to 1.2.6
- [GROOVY-10333] - Bump slf4j to 1.7.32
- [GROOVY-10334] - Bump Ant version to 1.10.12
- [GROOVY-10348] - Bump picocli to 4.6.2
- [GROOVY-10349] - Bump gradle to 7.3-rc-5
- [GROOVY-10366] - Bump gradle to 7.3
- [GROOVY-10384] - Bump checkstyle to 9.1
- [GROOVY-10385] - Bump japicmp plugin to 0.3.0
- [GROOVY-10386] - Bump Spotbugs/Spotbugs annotations to 4.5.0
- [GROOVY-10387] - Bump gson (test dependency) to 2.8.9
- [GROOVY-10388] - Bump json-unit (test dependency) version to 2.28.0
- [GROOVY-10389] - Bump logback to 1.2.7
- [GROOVY-10390] - Bump jqwik (test dependency) to 1.6.0
- [GROOVY-10397] - Bump junit to 5.8.2
- [GROOVY-10399] - Bump bridger to 1.6.Final (build dependency)
- [GROOVY-10400] - Bump gradle to 7.3.1 (build dependency)
- [GROOVY-10402] - Bump jarjar to 1.8.0 (build dependency)
- [GROOVY-10408] - Bump log4j2 version to 2.15.0 (test dependency)
- [GROOVY-10410] - Bump log4j2 version to 2.16.0 (test dependency)
- [GROOVY-10416] - Bump logback to 1.2.8 (test dependency)
- [GROOVY-10420] - Bump gradle to 7.3.2 (build dependency)
- [GROOVY-10421] - Bump jqwik to 1.6.1 (test dependency)
- [GROOVY-10422] - Bump Spotbugs/Spotbugs annotations version to 4.5.2 (build dependencies)
- [GROOVY-10423] - Bump checkstyle to 9.2 (build dependency)
- [GROOVY-10425] - Bump log4j2 version to 2.17.0 (test dependency)
- [GROOVY-10426] - Bump jqwik to 1.6.2 (test dependency)
- [GROOVY-10427] - Bump jackson version to 2.13.1
- [GROOVY-10430] - Bump gradle to 7.3.3 (build dependency)
- [GROOVY-10431] - Bump logback to 1.2.9 (test dependency)
- [GROOVY-10432] - Bump hsqldb to 2.6.1 (test dependency)
- [GROOVY-10435] - Bump log4j2 version to 2.17.1 (test dependency)
- [GROOVY-10441] - Bump testng to 7.5
- [GROOVY-10444] - Bump javaparser to 3.24.0
- [GROOVY-10445] - Bump Spotbugs/Spotbugs annotations to 4.5.3 (build dependency)
- [GROOVY-10446] - Bump logback to 1.2.10 (test dependency)
- [GROOVY-10447] - Bump checkstyle to 9.2.1 (build dependency)
- [GROOVY-10448] - Bump gradle versions plugin to 0.41.0 (build dependency)
- [GROOVY-10452] - Bump slf4j to 1.7.33 (test dependency)
- [GROOVY-10453] - Bump jqwik to 1.6.3 (test dependency)
- [GROOVY-9403] - Bump javaparser to 3.15.12
- [GROOVY-9419] - Bump gradle to 6.2.1
- [GROOVY-9428] - Bump javaparser to 3.15.13
- [GROOVY-9437] - Bump gradle to 6.2.2
- [GROOVY-9466] - Bump javaparser to 3.15.15
- [GROOVY-9488] - Bump javaparser to 3.15.17
- [GROOVY-9490] - Bump ASM to 8.0
- [GROOVY-9497] - Bump asm to 8.0.1
- [GROOVY-9502] - Bump junit to 5.6.2
- [GROOVY-9503] - Bump javaparser to 3.15.18
- [GROOVY-9520] - Update Spotbugs/Spotbugs plugin to 4.0.2/4.0.5
- [GROOVY-9527] - Bump javaparser to 3.15.21
- [GROOVY-9536] - Bump testng to 7.2.0
- [GROOVY-9540] - Bump spotbugs plugin to 4.0.8
- [GROOVY-9544] - Bump gradle to 6.4
- [GROOVY-9551] - Bump JavaParser to 3.15.22
- [GROOVY-9552] - Bump Ant versions to address: [CVE-2020-1945] Apache Ant insecure temporary file vulnerability
- [GROOVY-9557] - Bump gradle to 6.4.1
- [GROOVY-9559] - Bump log4j2 version to 2.13.3
- [GROOVY-9560] - Update Spotbugs/Spotbugs plugin to 4.0.3/4.2.0
- [GROOVY-9583] - Bump gradle to 6.5
- [GROOVY-9590] - Bump javaparser to 3.16.1
- [GROOVY-9593] - Bump Spock to 2.0-M3-groovy-3.0
- [GROOVY-9621] - Bump gradle to 6.5.1
- [GROOVY-9622] - Bump checkstyle to 8.34
- [GROOVY-9623] - Bump Jackson version to 2.11.1
- [GROOVY-9624] - Bump Codenarc to 1.6
- [GROOVY-9625] - Bump spotbugs/plugin to 4.0.6/4.4.4
- [GROOVY-9626] - Bump rat to 0.7.0
- [GROOVY-9627] - Bump picocli to 4.4.0 *
- [GROOVY-9670] - Bump TestNG to 7.3.0
- [GROOVY-9685] - Bump gradle to 6.6
- [GROOVY-9686] - Bump spotbugs library/plugin to 4.1.1/4.5.0
- [GROOVY-9687] - Bump versions plugin to 0.29.0
- [GROOVY-9689] - Bump codenarc to 1.6.1
- [GROOVY-9690] - Bump checkstyle to 8.35
- [GROOVY-9693] - bump picocli to 4.5.0
- [GROOVY-9694] - bump jackson version to 2.11.2
- [GROOVY-9697] - Bump asciidoctor to 3.2.0
- [GROOVY-9738] - Bump xstream to 1.4.13
- [GROOVY-9740] - Bump JUnit5/platform to 5.7.0/1.7.0
- [GROOVY-9741] - Bump gradle to 6.6.1
- [GROOVY-9743] - Bump hsqldb to 2.5.1
- [GROOVY-9746] - Bump picocli to 4.5.1
- [GROOVY-9747] - Bump versions plugin to 0.33.0
- [GROOVY-9748] - Bump spotbugs to 4.1.2
- [GROOVY-9749] - Bump sonarqube plugin to 3.0
- [GROOVY-9750] - Bump checkstyle to 8.36.1
- [GROOVY-9752] - Bump ASM version to 9.0 and JDK 16 support
- [GROOVY-9783] - Bump gradle to 6.7
- [GROOVY-9787] - Bump javaparser to 3.16.2
- [GROOVY-9788] - Bump Ant version to 1.10.9 (fixes Apache Ant CVE 2020-11979)
- [GROOVY-9792] - Bump Spotbugs/Spotbugs annotations versions
- [GROOVY-9793] - Bump JUnit4 version to 4.13.1 (includes security fix)
- [GROOVY-9794] - Bump picocli version to 4.5.2
- [GROOVY-9809] - Bump jackson to 2.11.3
- [GROOVY-9810] - Bump javaparser to 3.16.3
- [GROOVY-9812] - Bump Spock version to 2.0-M4-groovy-3.0
- [GROOVY-9819] - bump jsp-api/servlet-api versions to 2.3.3/4.0.1
- [GROOVY-9820] - Bump gradle to 6.7.1
- [GROOVY-9830] - Bump xstream to 1.4.14
- [GROOVY-9831] - Bump javaparser to 3.17.0
- [GROOVY-9833] - Bump slf4j to 1.7.30
- [GROOVY-9834] - Bump logback to 1.2.3
- [GROOVY-9835] - Bump versions gradle plugin to 0.36.0
- [GROOVY-9836] - Bump checkstyle to 8.37
- [GROOVY-9837] - Bump japicmp gradle plugin to 0.2.9
- [GROOVY-9838] - Bump log4j2 version to 2.14.0
- [GROOVY-9839] - Bump Codenarc version to 2.0.0
- [GROOVY-9840] - Bump findsecbugs plugin to 1.11.0
- [GROOVY-9841] - Bump spotbugs plugin to 4.6.0
- [GROOVY-9856] - Bump jackson to 2.12.0
- [GROOVY-9869] - Upgrade Jansi to 2
- [GROOVY-9876] - Bump antlr to 4.9.0
- [GROOVY-9889] - Bump Gradle to 6.8
- [GROOVY-9897] - Bump jansi to 2.1.1
- [GROOVY-9898] - Bump xstream to 1.4.15
- [GROOVY-9899] - Bump javaparser to 3.18.0
- [GROOVY-9900] - Bump jackson to 2.12.1
- [GROOVY-9912] - Bump Gradle to 6.8.1
- [GROOVY-9913] - Bump checkstyle to 8.39
- [GROOVY-9940] - Bump gradle to 6.8.2
- [GROOVY-9942] - Bump Gradle to 6.8.2 and Gradle Enterprise Plugin to 3.5.2
- [GROOVY-9943] - Bump ASM to 9.1 and add JDK17 constant
- [GROOVY-9944] - Bump junit to 4.13.2
- [GROOVY-9957] - Bump testng to 7.4.0
- [GROOVY-9990] - Bump openbeans to 1.0.2
Documentation
- [GROOVY-9925] - Groovy match operator documentation should contain real examples and slashy strings reminder
- [GROOVY-9926] - Groovy documentation does not describe how to instantiate empty maps in section where maps are first described
Improvement
- [GROOVY-10003] - Eliminate some ambiguities while parsing
- [GROOVY-10004] - @Lazy transform should check for explicit getters/setters *
- [GROOVY-10028] - Add support for type conversion from Stream to array/collection/list/set
- [GROOVY-10029] - SC: produce direct method call for assignment of collection to array
- [GROOVY-10031] - Compiler writes multianewarray instruction for all non-initializer array allocations
- [GROOVY-10034] - Compiler writes extra cast for Type[] to Object[]
- [GROOVY-10035] - Eliminate redundant type cast
- [GROOVY-10036] - STC: unresolved generics for return type of extension method call with full type arguments
- [GROOVY-10050] - Add additional NamedParam annotations in ResourceGroovyMethods, NioExtensions and JsonSlurper
- [GROOVY-10052] - STC sometimes requires explicit closure to SAM cast inside of another closure
- [GROOVY-10061] - "del" ASCII character also should be escaped
- [GROOVY-10077] - Groovy Console: Support JDKs without macOS Runtime Support for Java
- [GROOVY-10110] - AST browser should show additional information *
- [GROOVY-10112] - IndexedProperty AST transform should only provide the getter for immutable fields
- [GROOVY-10123] - Consolidate methods for collecting interfaces *
- [GROOVY-10126] - Support parsing multiple YAML documents
- [GROOVY-10146] - Groovy 3 compilation errors are less accurate than Groovy 2
- [GROOVY-10148] - Groovy should support sealed classes
- [GROOVY-10150] - Eliminate ambiguities while parsing non-static class creator
- [GROOVY-10155] - Add JDK18 constant
- [GROOVY-10160] - Highlight source code in the AST browser smartly
- [GROOVY-10212] - Provide a mechanism for users to enable Antlr4's SLL (fast but only simple) mode
- [GROOVY-10233] - Sealed classes should generate native class information for JDK17+
- [GROOVY-10252] - @Final should have a boolean attribute to disable
- [GROOVY-10275] - Align intersect which takes a closure/comparator ordering to be the same as other languages. *
- [GROOVY-10279] - Support native record
- [GROOVY-10281] - Add compiler option for logging class generation
- [GROOVY-10284] - AnnotationCollector should not collect @Incubating which is a meta-annotation in Groovy
- [GROOVY-10286] - Set target bytecode by JDK
- [GROOVY-10287] - The Groovy Console About window could list Java/OS versions along with the Groovy version
- [GROOVY-10295] - STC: cannot infer list or map type for method return
- [GROOVY-10297] - Refine @ToString and @EqualsAndHashCode generation of fallback methods
- [GROOVY-10298] - Refine records to not use system properties
- [GROOVY-10321] - @ToString could provide annotation attributes to control further the format of the created toString
- [GROOVY-10338] - Enhance records with additional helper methods
- [GROOVY-10340] - Refine sealed classes to not use system properties
- [GROOVY-10341] - "super" invocations of abstract methods should be caught at compile time with static compilation enabled
- [GROOVY-10352] - Java8 does not load enum values into annotation attributes
- [GROOVY-10353] - StaticTypeCheckingSupport#evaluateExpression can provide lightweight evaluation for simple expressions
- [GROOVY-10361] - TupleConstructor could be improved to have a smarter mode for handling default values
- [GROOVY-10372] - STC: check lambda or closure parameter types against target method
- [GROOVY-10377] - SC: === and !== compiled to ScriptBytecodeAdapter#compareIdentical
- [GROOVY-10378] - Provide a mechanism to prioritise AST transforms running at the same stage
- [GROOVY-10383] - SC: !in compiled to ScriptBytecodeAdapter#isNotCase
- [GROOVY-10395] - SC: <=> compiled to ScriptBytecodeAdapter#compareTo for primitives
- [GROOVY-10401] - Prevents paging out the groovy console when minimized
- [GROOVY-10417] - MethodNode toString() could add quotes when name contains spaces (or other non-identifier characters)
- [GROOVY-10418] - Include `src/antlr` in the sources jar
- [GROOVY-10463] - Add equals() and hashCode() methods to ImportNode
- [GROOVY-4694] - Move AstBuilderTransformation Global xForm to separate module
- [GROOVY-5441] - Type argument checking
- [GROOVY-6360] - GString performance is slow with String's method
- [GROOVY-6603] - Static type checks for closure parameters of methods
- [GROOVY-6954] - map.foo = "bar" not optimized by the static compiler
- [GROOVY-7001] - generics info can be improved for DGM methods with a collector
- [GROOVY-7106] - Improve coercion / implicit cast of map literals for @CompileStatic
- [GROOVY-7274] - Improve type inference for hash map -> Map<?, ?>
- [GROOVY-8729] - Eliminate the additional resolving phase of compilation for better performance
- [GROOVY-9132] - Improve type inference for method reference
- [GROOVY-9377] - Support JDK15
- [GROOVY-9394] - Groovy could provide some minimal methods to assist with migrating between Groovy versions
- [GROOVY-9408] - Avoid unnecessary looking up default import classes when resolving types
- [GROOVY-9417] - Make @NullCheck play nicer with @Immutable
- [GROOVY-9430] - Added support for ScriptEngine.FILENAME behaviour
- [GROOVY-9447] - Add a parse tree viewer to groovy console
- [GROOVY-9468] - Support running as Java code in the Groovy console
- [GROOVY-9473] - Support compiling as Java code in the Groovy console
- [GROOVY-9478] - Groovy Ant task could support Ant resources
- [GROOVY-9486] - Remove redundant code `Sentinel`
- [GROOVY-9487] - Update and check if initialized via same field of metaclass
- [GROOVY-9492] - Relax groovy.test.NotYetImplemented dependency on JUnit 4's AssertionFailedError *
- [GROOVY-9504] - Add support for Path to slurper classes
- [GROOVY-9509] - JavaShell should allow options to be passed
- [GROOVY-9512] - Control the fallback threshold of indy with different switch
- [GROOVY-9513] - Enable indy by default
- [GROOVY-9514] - Remove antlr2 parser
- [GROOVY-9545] - DGM: add toArray(Class) extension method for java.util.stream.Stream
- [GROOVY-9549] - groovydoc: implemented interfaces not shown in class description
- [GROOVY-9576] - groovydoc: $INIT static method shown on Groovy enums
- [GROOVY-9578] - Also output aborted tests in JUnit 5 GroovyJUnitRunnerHelper
- [GROOVY-9589] - Parse source codes in parallel
- [GROOVY-9592] - Replace "groovy.generate.stub.in.memory" with "groovy.mem.stub"
- [GROOVY-9594] - Rename whitelist/blacklist in SecureASTCustomizer to more meaningful names *
- [GROOVY-9602] - return more specific type for ifS/ifElseS helper methods in GeneralUtils
- [GROOVY-9619] - Adjust pom for groovy-test-junit5 so that junit-jupiter-api is compile time not runtime
- [GROOVY-9628] - Initial support for reproducible builds
- [GROOVY-9631] - Replace legacy data structure with Java collection *
- [GROOVY-9633] - Improve the doco on the Groovy Console
- [GROOVY-9637] - Improve the performance of GString
- [GROOVY-9644] - Add java.io.File to immutable type list
- [GROOVY-9667] - Tweak ManagedIdentityConcurrentMap for better performance
- [GROOVY-9669] - Enhance immutability check
- [GROOVY-9682] - Support coerce for @NamedVariant
- [GROOVY-9726] - Compile error needed for illegal field modifier combination
- [GROOVY-9736] - Remove org.objectweb.asm.Opcodes as implemented interface in most (all?) places *
- [GROOVY-9744] - PropertyNode should be enriched to support getter/setter names
- [GROOVY-9745] - Provide a way to filter illegal/discouraged characters when using MarkupBuilder
- [GROOVY-9753] - EqualsAndHashCode should be enhanced to be POJO aware
- [GROOVY-9756] - MapConstructor generated code should be POJO aware
- [GROOVY-9767] - GroovyAssert should not depend on org.junit.Assert *
- [GROOVY-9800] - Log generic mismatches extensively
- [GROOVY-9808] - GroovyShell parse script use given context
- [GROOVY-9832] - groovy-jmx: JmxMetaMapBuilder should support GString object names
- [GROOVY-9849] - Show elapsed time in groovy console
- [GROOVY-9858] - In generated closures, annotate generated call() methods with @Generated
- [GROOVY-9865] - Add some DGM methods for primitive arrays
- [GROOVY-9868] - DGM methods via dgminfo not enabled for int[][], long[][], double[][]
- [GROOVY-9877] - Add DGM `asReversed` to `List`
- [GROOVY-9878] - GroovyClassLoader#fileReallyExists is inefficient
- [GROOVY-9921] - Replace legacy data structure with Java collection(SingleKeyHashMap) *
- [GROOVY-9941] - Make Gradle build fully cacheable
- [GROOVY-9946] - Add `@Pure` to mark constant result of method
New Feature
- [GROOVY-10032] - CLONE - left-open and full-open ranges (consider adjusting containsWithinBounds behavior) *
- [GROOVY-10193] - Support sealed type grammar
- [GROOVY-10195] - Groovy should have a @Final AST transform
- [GROOVY-10210] - Provide a helper factory class to assist with porting
- [GROOVY-10240] - Support record grammar
- [GROOVY-10274] - Improvements to DGM: provide a set union and minus which take a closure/comparator
- [GROOVY-4990] - Ability to create missing parent directories when using File.write()
- [GROOVY-5450] - Final field assignment check on static compilation
- [GROOVY-7492] - Groovy should allow CompileStatic classes to not implement GroovyObject (AKA @POJO)
- [GROOVY-8225] - Groovy support for JSR 308/JEP 104 (Annotations in more places)
- [GROOVY-8258] - [GEP] Create a LINQ-like DSL (basic cases)
- [GROOVY-9159] - [GEP] Support LINQ, aka GINQ
- [GROOVY-9272] - Support switch expression
- [GROOVY-9318] - SecureASTCustomizer: add support for allowing or blocking entire package trees
- [GROOVY-9365] - Implement JavaShell to run Java code
- [GROOVY-9384] - Groovy should provide a Maven BOM
- [GROOVY-9534] - Groovy could provide an AST transform to hook into platform logging (JEP 264)
- [GROOVY-9649] - left-open and full-open ranges
- [GROOVY-9671] - Absorb GContracts project into Groovy project
- [GROOVY-9675] - There should be a mechanism to disable individual macro methods & extension methods
- [GROOVY-9677] - provide a library of pre-canned macro methods
- [GROOVY-9680] - Groovy 4 should provide some pre-canned type checker extensions
- [GROOVY-9684] - We should provide shouldFail/assertScript variants which take a shell
- [GROOVY-9754] - Provide a record-like equivalent
- [GROOVY-9755] - ToString AST transformation should be enhanced to be POJO aware
- [GROOVY-9804] - Support TOML
- [GROOVY-9817] - Enhance Closure annotation value (as Closure class) to Arrays
- [GROOVY-9922] - Add DGM `getPid`
Sub-task
- [GROOVY-10137] - [JDK16] Illegal access to dynamic proxy
- [GROOVY-10138] - [JDK16] Failed to invoke default method of proxy
- [GROOVY-10393] - Funnel doPrivileged through VMPlugin (JEP-411)
- [GROOVY-2686] - Can't call a Closure in a Closure's Delegete
- [GROOVY-5357] - The accessor pair can't be provided from different sources
- [GROOVY-7762] - Static inner classes not visible to child classes
Task
- [GROOVY-10005] - Remove groovy-jaxb module from Groovy 4 *
- [GROOVY-10023] - Remove BSF from Groovy 4 *
- [GROOVY-10065] - Move stream-related extension methods to StreamGroovyMethods
- [GROOVY-10259] - Groovy4 NV Macros: Rename NV* -> SV*
- [GROOVY-10411] - Refactor org.codehaus.groovy.vmplugin.v8.Java8 *
- [GROOVY-10412] - Refactor: split formatting methods out of InvokerHelper
- [GROOVY-10428] - Refactor: split formatting methods out of InvokerHelper (allow separate control of escapeBackslashes) *
- [GROOVY-6843] - Remove GroovyDoc JANSI dependency
- [GROOVY-9380] - VMPlugin refactor: Coalesce Java5 through Java7 into Java8 *
- [GROOVY-9773] - Rework gradle build to use modern conventions
- [GROOVY-9774] - Rework gradle build to use modern conventions - test remediation
- [GROOVY-9775] - Rework gradle build to use modern conventions - doc remediation
- [GROOVY-9827] - Rework gradle build to use modern conventions - better support "provided" concept *
- [GROOVY-9958] - Prepare for bintray/jcenter sunset
- [GROOVY-9989] - Investigate impact of Bintray/JCenter shutdown (grape config aspects)
Technical Debt
- [GROOVY-10300] - Rework runtime script member resolution
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)