Changelog for Groovy 3.0.0
Bug
- [GROOVY-3278] - Using referenced String constant as value of Annotation causes compile error
- [GROOVY-3525] - Null-safe dereference operator not available for subscript operator access to properties or array/list elements
- [GROOVY-4438] - Use of an inner enum causes compilation to go into infinite loop
- [GROOVY-4976] - NPE in AntlrParserPlugin on incorrect array creation expression
- [GROOVY-5912] - Static compilation: Groovy doesn't fail compilation when accessing package scope methods, but fails at runtime
- [GROOVY-6148] - Multi-assignment declarations should allow "final" keyword instead of "def" placeholder
- [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-6777] - Inner class causes VerifierError
- [GROOVY-6809] - VerifyError With Inner Class
- [GROOVY-6938] - Wrong error reported by @CompileStatic when overriding a method returning a parameterized value
- [GROOVY-6996] - Anonymous class field initialized with an enclosing argument results in MissingPropertyException
- [GROOVY-7020] - Problem With "this" Inside Of Anonymous Inner Class
- [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-7157] - CompilationError for [[1]] as List<List<Integer>>
- [GROOVY-7160] - NoSuchMethodError for varargs when type parameter extends interface
- [GROOVY-7202] - Unable to resolve nested enum of parent class when compiling against binary parent
- [GROOVY-7204] - Static type checking and compilation fail when multiple generics in use
- [GROOVY-7330] - Incorrect dynamic proxy creation from map when there are default methods
- [GROOVY-7362] - Can't compile Java class extending Groovy abstract class with explicit GroovyObject interface
- [GROOVY-7573] - Groovyc ant task does not release file handles
- [GROOVY-7609] - java.lang.VerifyError when initializing object of inner class within the constructor of its containing class
- [GROOVY-7647] - Incorrect line information for debug
- [GROOVY-7687] - Bug with @CompileStatic and nested closures
- [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-7722] - StackOverflowError when use anonymous class with generics.
- [GROOVY-7753] - regression of return type from ternary operator
- [GROOVY-7778] - CLONE - Enum constructor with value throws "unexpected token" error
- [GROOVY-7812] - Static inner classes cannot be accessed from other files when running by 'groovy' command
- [GROOVY-7854] - Annotation value cannot be concatenated constant
- [GROOVY-7856] - Adding CompileStatic via compiler config script to class with eachWithIndex results in exception in instruction selection phase
- [GROOVY-7864] - Stack overflow correcting generics when using @CompileStatic
- [GROOVY-7868] - Calling super constructor with in-line casted Closure param does not compile: unexpected "constructor call must be first statement" error
- [GROOVY-7883] - Static compiler prefers private constructor over public if private matches better
- [GROOVY-7954] - Equal Operator for Classes implementing Comparable not Working on Interfaces
- [GROOVY-7975] - Use of static final field in an annotation element causes compile errors
- [GROOVY-7985] - Wrong "incompatible generic type" error
- [GROOVY-7996] - Using with method with a closure that references a protected property produces ClassCastException
- [GROOVY-8002] - Static compilation drops source position for method calls
- [GROOVY-8053] - Groovyc: anonymous class in static method cannot access its fields without "this"
- [GROOVY-8055] - @CompileStatic improperly orders parameter types
- [GROOVY-8059] - STC overloaded generic method selection not using resolved types
- [GROOVY-8073] - Map delegate within @CompileStatic
- [GROOVY-8084] - Captured types doesn't work in @CompileStatic
- [GROOVY-8090] - Incorrectly processing method-level type generics information
- [GROOVY-8169] - StaticCompilationVisitor.visitForLoop sets Parameter origin type, which prevents access to original source type and location
- [GROOVY-8171] - Escaped dollar slashy difference between old and parrot parsers
- [GROOVY-8238] - multiple-catch statement behaves strangely
- [GROOVY-8241] - SAM parameter type inference for explicit parameter
- [GROOVY-8250] - VariableScopeVisitor does not set declaring class on property nodes
- [GROOVY-8272] - Extending trait can't execute static method
- [GROOVY-8277] - [Parrot]Fix gls.syntax.MethodCallValidationTest#testDeclarationInMethodCall
- [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
- [GROOVY-8296] - Groovydoc Recognition exception with Java 8 class
- [GROOVY-8298] - Slow Performance Caused by Invoke Dynamic
- [GROOVY-8305] - Error trying to grab a dependency available in local m2 repo when using the default Ivy settings file provided by Groovy
- [GROOVY-8310] - Strange @CompileStatic check in Closure
- [GROOVY-8314] - groovy Eclipse task is generating classpath with duplicated src/main entry
- [GROOVY-8315] - Looping in GroovyRecognizer.enumConstants during compilation
- [GROOVY-8317] - Smart type inference doesn't work on explicit closure params
- [GROOVY-8319] - Improve smart type on list expresions
- [GROOVY-8321] - !instanceof treated incorrectly in type checker
- [GROOVY-8327] - Can't access static method from same class within this constructor call
- [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
- [GROOVY-8337] - STC: instanceof in ternary expression not propagating type info to true expression
- [GROOVY-8338] - Calling Stream.of from groovy class in JDK 9 fails
- [GROOVY-8342] - Static compilation error with a method returning an array in a type parameter
- [GROOVY-8372] - GrapeIvy downloads wrong artifact for non-default conf when artifact name is not the same as the module
- [GROOVY-8377] - hashCode() generated by @EqualsAndHashCode is inefficient for instances with null fields or properties
- [GROOVY-8389] - Static import of a property messes with instance method
- [GROOVY-8399] - ImportCustomizer is applied once per class (should be once per module) *
- [GROOVY-8405] - Inherited methods with default parameters cause cause static compilation to fail
- [GROOVY-8408] - invokeMethod cannot be set through category
- [GROOVY-8418] - getSet* property name => Cannot read write-only property exception
- [GROOVY-8423] - Private and protected inner classes have incorrect access modifier values
- [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-8441] - IllegalAccessError when calling a public method on a field whose type is declared to be a package-private implementation one
- [GROOVY-8442] - java.lang.VerifyError: Bad <init> method call from inside of a branch
- [GROOVY-8445] - Static analysis does not work properly when coercing Closure to FunctionInterface
- [GROOVY-8446] - void[] return type causes compiler to fail
- [GROOVY-8447] - It is allowed to define local variable of void type
- [GROOVY-8457] - Compiler error for @CompileStatic and @NotYetImplemented combination
- [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-8486] - Closure executed multiple times even if memoized
- [GROOVY-8493] - Native lambdas with @CompileStatic at method level
- [GROOVY-8495] - GroovyObject method implementations are marked with ACC_SYNTHETIC
- [GROOVY-8496] - Can't call default getProperty() implementation from Java subclass
- [GROOVY-8497] - Can't call getProperty() from Java
- [GROOVY-8507] - groovyc hangs when compiling nested enum
- [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-8546] - Parrot Parser: multiple Reader instances opened from SourceUnit; many left open
- [GROOVY-8549] - Compile Static causes getAt to fail
- [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-8641] - Cannot qualify path expression with soft keyword (exclude "def" for now)
- [GROOVY-8648] - Compound assignment to attribute fails with ASM error
- [GROOVY-8651] - Method override weaker access check does not fully account for package-private visibility
- [GROOVY-8669] - Groovy class does not compile if the ValueType of an annotation is not on the classpath
- [GROOVY-8675] - GenericsUtils.PARAMETERIZED_TYPE_CACHE is static and private
- [GROOVY-8680] - The AST of string constant with the unary operator is different with the one generated by the old parser
- [GROOVY-8686] - STC: type inferencing for (a instanceof C && a...) bleeds into enclosing scope
- [GROOVY-8688] - AsmDecompiler.parseClass fails against a Java 11 JEP 181 class
- [GROOVY-8703] - Unexpected behavior with @NamedVariant on constructor *
- [GROOVY-8727] - JDK 11 Compilation Failure: ClassVisitor.visitNestMemberExperimental throws UnsupportedOperationException
- [GROOVY-8732] - @CompileStatic refers to private field in parent class
- [GROOVY-8740] - groovy.util.CliBuilder doesn't handle parse errors correctly
- [GROOVY-8741] - Single character GString and '==' with Character or Number
- [GROOVY-8742] - Line number information for method is confusing debugger
- [GROOVY-8743] - Abstract method in trait should not have method body
- [GROOVY-8747] - jar/zip file and input stream are not closed in grape
- [GROOVY-8750] - the jar file, and only the jar file is missing from a large number of releases on Maven Central
- [GROOVY-8753] - Compiler error in STC: exception in phase 'instruction selection'
- [GROOVY-8754] - Spaces in JAVA_HOME not handled properly for JDK10 on windows
- [GROOVY-8757] - Incorrect bytecode produced after compiling class implementing trait with generic method
- [GROOVY-8758] - @WithReadLock in inner class of @CompileStatic class causes java.lang.VerifyError
- [GROOVY-8762] - Invalid this reference in nested class
- [GROOVY-8764] - Closure inside an anonymous class uses wrong outside class instance with @CS
- [GROOVY-8766] - Groovy packages not compatible with OSGi (ServiceLoader Capability)
- [GROOVY-8772] - Groovy debugger is on the wrong line when exiting a try/catch
- [GROOVY-8775] - Bug joint compilation in ant task groovyc: classpath not set
- [GROOVY-8776] - @MapConstructor with @CompileStatic: Creating static inner class instance => VerifyError: Bad type on operand stack CTE
- [GROOVY-8777] - @MapConstructor with @CompileStatic: Creating inner class instance => IncompatibleClassChangeError ... does not implement the requested interface java.util.Map
- [GROOVY-8778] - Cast short-hand breaks for empty map *
- [GROOVY-8779] - Groovy 2.5.2 triggers a bug in IntelliJ IDEA
- [GROOVY-8797] - VariableScopeVisitor.getPropertyName does not check for "isser" style method
- [GROOVY-8800] - Wrong detection of Java 10 version in groovy-json
- [GROOVY-8805] - GroovyScriptEngine reload fails when dependent class is deleted
- [GROOVY-8806] - Immutable classes break in groovy 2.5.2
- [GROOVY-8815] - Inconsistent class file - undefined type parameter for trait implementer
- [GROOVY-8816] - NPE in inferClosureParameterTypes with CompileStatic and incorrect zero-arg closure
- [GROOVY-8819] - java.lang.VerifyError when calling this() with static final field from a super class
- [GROOVY-8822] - Conflict between @Generated and @Delegate
- [GROOVY-8825] - CLONE - Conflict between @Generated and @Delegate
- [GROOVY-8833] - @Canonical creates invalid hashCode
- [GROOVY-8835] - AstNodeToScriptVisitor - no token needed for EmptyStatement initialization
- [GROOVY-8853] - string literal can span rows
- [GROOVY-8855] - Calling Matcher.asBoolean() twice returns different results *
- [GROOVY-8865] - Specifying initial heap size results in an error
- [GROOVY-8868] - Static factory method does not compile anymore with 2.5.3 (was ok with 2.4.x)
- [GROOVY-8871] - Long Constants Defined in Groovy 2.5.3 Under OpenJDK 11 Cause an IllegalAccessError
- [GROOVY-8873] - Fails at runtime with @CompileStatic and two nested with
- [GROOVY-8876] - groovydoc fails with "java.lang.StringIndexOutOfBoundsException: String index out of range: -1" on file with no extension
- [GROOVY-8881] - Inner class - qualified "this" reference cast exception inside 2 closures
- [GROOVY-8882] - CS: Loop over elements of String has different element type *
- [GROOVY-8892] - Trait instance init blocks are called only when there are fields defined in same Trait
- [GROOVY-8895] - Traits defining getter conflicts with generated getter
- [GROOVY-8898] - Annotation value cannot take inline constant from enum.
- [GROOVY-8907] - StringGroovyMethods.findAll(String, Pattern, Closure) and StringGroovyMethods.findAll(CharSequence, Pattern, Closure) is with @ClosureParams incorrect
- [GROOVY-8914] - Error compiling static inner class that extends some other (static) inner class
- [GROOVY-8917] - Failed to infer parameter type of some SAM, e.g. BinaryOperator
- [GROOVY-8920] - Fails to infer parameter and return type of SAM on RHS
- [GROOVY-8930] - JVM verification fails when using static interface method from inside CompileStatic groovy
- [GROOVY-8931] - AstNodeToScriptVisitor - wrong "extends/implements" order
- [GROOVY-8936] - NPE occurred when `null` message passed into `MissingPropertyException`
- [GROOVY-8947] - Fail to resolve non-static inner class outside of outer class
- [GROOVY-8951] - Traits defining getter conflicts with generated getter (improvements for pre-compiled case)
- [GROOVY-8953] - Imported enum causes compilation bug preventing tests from compiling
- [GROOVY-8954] - VerifyError due to incorrect bytecode produced when a trait super property call also comes from an interface
- [GROOVY-8959] - NPE in StaticVerifier
- [GROOVY-8964] - MissingMethodException when trying to resolve overload with variable arguments
- [GROOVY-8966] - Exclusive NumberRange is converted to inclusive when used by List.getAt(range).
- [GROOVY-8967] - @Immutable not handling property default values from map constructor
- [GROOVY-8969] - Parameter name data is erased when applying traits regardless of --parameters setting
- [GROOVY-8970] - Fix typo in MANIFEST.MF: Main-class
- [GROOVY-8975] - GroovyCastException on the result of CliBuilder.parseFromSpec
- [GROOVY-8978] - NPE when accessing protected method from subclass clone
- [GROOVY-8990] - No compiler error for mismatched generics when using &
- [GROOVY-8991] - Difference in behaviour with closure and lambda
- [GROOVY-9004] - Parser fails to recognize token sequence expression newline bitwise-operator expression
- [GROOVY-9005] - SomeClass.groovy: -1: Access to java.lang.Object#this is forbidden @ line -1, column -1
- [GROOVY-9007] - Getting java.lang.NoSuchFieldError with groovy version 2.5.6
- [GROOVY-9009] - AutoClone throws ClassCastException when used with @ToString or @EqualsAndHashCode
- [GROOVY-9010] - MissingMethodException during ASTTest annotation assert execution
- [GROOVY-9014] - printf does not respect "out" property
- [GROOVY-9018] - WARNING: package sun.awt.windows not in java.desktop
- [GROOVY-9028] - @EqualsAndHashCode can't recognize final field
- [GROOVY-9031] - Traits using generics generate incorrect stub for Properties
- [GROOVY-9035] - config script: unexpected NPE when processing compiler config DSL
- [GROOVY-9040] - scripts within src/bin don't pass latest shellcheck recommendations
- [GROOVY-9043] - Access to package-scoped static field is forbidden for inner class in static compilation mode
- [GROOVY-9046] - Build hardening
- [GROOVY-9049] - EncodingGroovyMethods.digest() truncates hashes over 128 bits starting with 0's
- [GROOVY-9050] - Missing @Generated annotation in @Sortable
- [GROOVY-9051] - The default constructor should be annotated with @Generated
- [GROOVY-9052] - Missing @Generated annotation on @Vetoable
- [GROOVY-9053] - Missing @Generated annotation in @Bindable
- [GROOVY-9054] - @groovy.transform.builder.Builder should generate @Generated annotations for build(), builder() and setter methods
- [GROOVY-9058] - each parameter type not correctly inferenced
- [GROOVY-9059] - Failed to parse/compile generic methods with "extends"
- [GROOVY-9061] - Tests containing @Grab statements within nested scripts fail in JDK12
- [GROOVY-9063] - Groovy 2.5.6 @CompileStatic generates invalid bytecode (leading to runtime ClassCastException) when accessing protected instance member from 2 level of nested closures
- [GROOVY-9077] - STC: inferred type not always stored for property getters that resolve to a method
- [GROOVY-9078] - Inefficiency in MethodNode and ConstructorNode
- [GROOVY-9079] - STC: NPE in StaticTypeCheckingVisitor.inferSAMTypeGenericsInAssignment
- [GROOVY-9080] - MarkupTemplateEngine uses invalid XML entity for escaping double quotes
- [GROOVY-9086] - @CompileStatic of closure calls with OWNER_FIRST fail at runtime with ClassCastException
- [GROOVY-9089] - STC: owner qualifier produces error for nested closures
- [GROOVY-9095] - Default retention policy not implemented for annotation
- [GROOVY-9096] - Repeatable annotation not wrapped with container type in class file
- [GROOVY-9105] - Fix trying to compile properties files and anything that doesn't end with java
- [GROOVY-9106] - @CompileStatic and @PackageScope support for inner classes and package peers
- [GROOVY-9115] - General error during class generation
- [GROOVY-9121] - Default compiler configuration is modified by GroovyMain
- [GROOVY-9123] - "java.nio.file.Path.setText" does not work with CompileStatic on Groovy 2.5.7
- [GROOVY-9126] - Unreachable line numbers after ARETURN in bytecode
- [GROOVY-9127] - Cannot set protected field from subclass
- [GROOVY-9136] - Compile error when accessing a public field inside a closure
- [GROOVY-9141] - NPE: Groovy compiler error: exception in phase 'conversion' in source unit
- [GROOVY-9147] - Using 'File.text = ' cause FileNotFoundException in Groovy 2.5.7 with @CompileStatic
- [GROOVY-9151] - Default Arguments: reference to another defaulted parameter causes run-time errors
- [GROOVY-9153] - StaticInvocationWriter modifies shared global node ConstantExpression.NULL
- [GROOVY-9156] - The metaDataMap table of values should scale with the outer frame
- [GROOVY-9161] - Sortable AST transform replaces custom compareTo method
- [GROOVY-9162] - AutoClone AST transform replaces custom clone method
- [GROOVY-9163] - AutoExternalize AST transform replaces custom read/write method
- [GROOVY-9168] - Default Arguments: non-static inner class constructor call in default value not supported
- [GROOVY-9170] - The method clone should be public as it implements the corresponding method from interface java.lang.Object
- [GROOVY-9171] - Static compiler ASM error for methods with identical names
- [GROOVY-9173] - IllegalAccessError for class extending Java class that provides protected getProperty/setProperty
- [GROOVY-9176] - Syntactic sugar for set method calls in conflict with class member declarations
- [GROOVY-9183] - Issue using @MapConstructor and @NamedVariant
- [GROOVY-9184] - CLONE - Use of an inner enum causes compilation to go into infinite loop - antlr2 fix
- [GROOVY-9189] - AIC in default argument expression of static method causes class cast exception
- [GROOVY-9191] - Cannot compile generic method without public keyword
- [GROOVY-9195] - STC: mixed checking for access to non-public fields
- [GROOVY-9197] - Groovyc fails to correctly propagate classpath entries to javac when run under JDK 11
- [GROOVY-9200] - StringIndexOutOfBoundsException in AstBrowser
- [GROOVY-9203] - Anonymous inner class count is not local to enclosing type
- [GROOVY-9204] - Compiler loses type info of superclass field
- [GROOVY-9215] - Incorrect compile time access error is raised when using @CompileStatic and/or @TypeChecked
- [GROOVY-9226] - Calling super.toString() with @TypeChecked or @CompileStatic will throw java.lang.StackOverflowError
- [GROOVY-9231] - groovy.lang.TypeChecked should be groovy.transform
- [GROOVY-9237] - GContracts and Groovy3
- [GROOVY-9238] - Groovy 2.5 AnnotationCollector not generating expected bytecode
- [GROOVY-9243] - Fail to resolve nested type defined in base type written in Groovy
- [GROOVY-9244] - Anonymous subclasses should cast their super-parameters
- [GROOVY-9245] - synthetic constructors should be ignored
- [GROOVY-9246] - Version 3.0.0-beta-3 does not conform to OSGi version standard.
- [GROOVY-9252] - -1: Access to java.lang.Object#myField is forbidden @ line -1, column -1.
- [GROOVY-9257] - Could not create Groovysh with JDK 11 and Spring-Boot
- [GROOVY-9265] - ScriptMain.groovy: -1: Access to bugs.ClassWithInnerClass$InnerClass#obj is forbidden @ line -1, column -1.
- [GROOVY-9268] - Access to ... is forbidden
- [GROOVY-9270] - Using "instanceof boolean" or using a Trait will cause the compiled code to not work with OSGi/maven-bundle-plugin/bnd
- [GROOVY-9281] - Unqualified reference to inner class of super class does not support package-private visibility
- [GROOVY-9282] - Account for package-private methods when overriding as protected
- [GROOVY-9288] - Compilation error when accessing a protected super class field from inside a closure
- [GROOVY-9292] - Compilation error when accessing a protected super class field from a closure using owner, delegate or thisObject qualifier (different package)
- [GROOVY-9293] - Compilation error when accessing package-private super class field using `this` from inside a closure
- [GROOVY-9294] - SC: array length not available within closure
- [GROOVY-9301] - [Antlr2]Parser error for enum constant with comma followed by method
- [GROOVY-9317] - Value record missing for assert on field expression
- [GROOVY-9321] - @CompileStatic on call of static method on interface (Java 8): VerifyError
- [GROOVY-9323] - AST for precompiled classes loaded from the classpath does not contain constructor annotation information
- [GROOVY-9327] - @CompileStatic is not propagated to anonymous class
- [GROOVY-9328] - Cannot call private member of containing class in @CS
- [GROOVY-9329] - OOME raised while `parseClass(scriptText)`
- [GROOVY-9332] - Error occurred when accessing static field in lambda within static initialization block
- [GROOVY-9333] - `this` within native lambda does not reference the instance of enclosing class
- [GROOVY-9336] - Shift operator used in field initial value expression causing incorrect type conversion
- [GROOVY-9337] - DGM: more Optional and Stream extension methods
- [GROOVY-9338] - STC: no error for incorrect bounds match
- [GROOVY-9340] - Lambda using variable expression parameter produces generics error for self type
- [GROOVY-9341] - SC: Lambda within lambda that references "this" produces cast exceptions
- [GROOVY-9342] - SC: Lambda in static initializer that uses static field on LHS of += produces errors
- [GROOVY-9347] - STC: lambda expression on wildcard generics fail to resolve param type(s)
- [GROOVY-9352] - Static compilation fails with NoClassDefFoundError
- [GROOVY-9368] - Breaking change regarding jointCompilationOptions
- [GROOVY-9370] - Type inference regression with anonymous class and nested closure type coersion to SAM
- [GROOVY-9374] - Type-inference fails for tap on inner classes with type checking
- [GROOVY-9376] - Groovy completely ignores @GrabResolver annotation
- [GROOVY-9499] - VerifyError when AIC used as argument to special constructor call
Dependency upgrade
- [GROOVY-8290] - Bump Ant version to 1.10.1
- [GROOVY-8291] - Bump XStream version to 1.4.10
- [GROOVY-8304] - Upgrade Apache Ivy from 2.4.0 to a newer version
- [GROOVY-8504] - Bump ASM version to 6.1
- [GROOVY-8532] - Bump ant to 1.10.3
- [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
- [GROOVY-8672] - bump testng to 6.14.3
- [GROOVY-8674] - bump ant dependency to 1.10.4
- [GROOVY-8676] - Bump ant to 1.10.4
- [GROOVY-8677] - Bump picocli to 3.1.0
- [GROOVY-8682] - bump asciidoctor to 1.5.8
- [GROOVY-8744] - bump ASM to 6.2.1
- [GROOVY-8745] - bump ant versions
- [GROOVY-8746] - bump bridger to 1.5.Final
- [GROOVY-8767] - bump gradle to 4.10
- [GROOVY-8773] - Bump JUnit 5 to 5.3
- [GROOVY-8785] - Bump JUnit 5 to 5.3.1
- [GROOVY-8789] - Bump spot bugs to 1.6.3
- [GROOVY-8790] - bump gradle to 4.10.1
- [GROOVY-8807] - Bump gradle to 4.10.2
- [GROOVY-8813] - Bump jackson-dataformat-yaml and jackson-databind to 2.9.7
- [GROOVY-8818] - Bump asm to 7.0-beta
- [GROOVY-8823] - Bump slf4j to 1.7.25
- [GROOVY-8829] - Bump spotbugs plugin to 1.6.4
- [GROOVY-8830] - Bump spotbugs to 3.1.7
- [GROOVY-8862] - Bump asm to 7.0
- [GROOVY-8883] - Bump xstream to 1.4.11.1
- [GROOVY-8884] - Bump spotbugs-annotations to 3.1.8
- [GROOVY-8885] - Bump spotbugs gradle plugin to 1.6.5
- [GROOVY-8904] - Bump junit to 5.3.2 and bump junit platform to 1.3.2
- [GROOVY-8908] - Bump gradle to 5.2.1
- [GROOVY-8921] - Bump build-scan gradle plugin to 2.1
- [GROOVY-8922] - Bump spotbugs gradle plugin to 1.6.6 and bump spotbugs-annotations to 3.1.9
- [GROOVY-8923] - Bump gradle-license-report to 1.3
- [GROOVY-8924] - Bump creadur-rat-gradle to 0.3.1
- [GROOVY-8925] - Bump picocli to 3.8.2 *
- [GROOVY-8928] - Bump jackson-dataformat-yaml and jackson-databind to 2.9.8
- [GROOVY-8937] - Bump antlr to 4.7.2
- [GROOVY-8980] - Bump picocli to 3.9.3
- [GROOVY-8985] - Bump junit to 5.4.0
- [GROOVY-8988] - Bump antlr to 4.7.3
- [GROOVY-8993] - Bump spotbugs gradle plugin to 1.6.9
- [GROOVY-8994] - Bump spotbugs-annotations to 3.1.11
- [GROOVY-9020] - bump asm to 7.1
- [GROOVY-9042] - Bump junit to 5.4.1
- [GROOVY-9044] - Bump versions plugin to 0.21.0
- [GROOVY-9045] - Bump build-scan to 2.2.1
- [GROOVY-9047] - bump gradle to 5.3
- [GROOVY-9062] - Bump codenarc to 1.3
- [GROOVY-9071] - Bump gradle to 5.3.1
- [GROOVY-9087] - Bump gradle to 5.4
- [GROOVY-9098] - Bump gradle to 5.4.1
- [GROOVY-9104] - Bump build-scan plugin to 2.3
- [GROOVY-9116] - Bump ant to 1.10.7
- [GROOVY-9117] - Bump jmh gradle plugin to 0.4.8
- [GROOVY-9118] - Bump japicmp gradle plugin to 0.2.8
- [GROOVY-9119] - Bump spotbugs gradle plugin to 1.7.1
- [GROOVY-9138] - Upgrade JUnit 5 to 5.5.0
- [GROOVY-9139] - Bump JUnit 5 to 5.5.0-M1
- [GROOVY-9142] - Bump jackson-dataformat-yaml to 2.9.9
- [GROOVY-9143] - Bump picocli to 3.9.6
- [GROOVY-9179] - Bump CodeNarc to 1.4
- [GROOVY-9180] - Bump junit5 to 5.5.0-RC2
- [GROOVY-9181] - Bump jansi to 1.8
- [GROOVY-9182] - Bump gradle to 5.5
- [GROOVY-9186] - Bump asm to 7.2-beta
- [GROOVY-9190] - Bump gradle to 5.5.1
- [GROOVY-9201] - Bump junit to 5.5.1
- [GROOVY-9202] - Bump picocli to 4.0.1
- [GROOVY-9212] - Bump gradle to 5.6-rc-1
- [GROOVY-9216] - Bump gradle to 5.6-rc-2
- [GROOVY-9219] - Bump versions gradle plugin to 0.22.0
- [GROOVY-9220] - Switch spotbugs gradle plugin to jp.skypencil.spotbugs.snom variant
- [GROOVY-9221] - Bump build-scan gradle plugin to 2.4
- [GROOVY-9222] - Bump picocli to 4.0.2
- [GROOVY-9227] - Bump gradle to 5.6
- [GROOVY-9234] - Bump build-scan gradle plugin to 2.4.1
- [GROOVY-9241] - Bump gradle to 5.6.1
- [GROOVY-9242] - Bump picocli to 4.0.3
- [GROOVY-9247] - Bump gradle to 5.6.2
- [GROOVY-9249] - Bump junit to 5.5.2
- [GROOVY-9251] - Bump picocli to 4.0.4
- [GROOVY-9262] - Bump asm to 7.2
- [GROOVY-9263] - Bump versions gradle plugin to 0.25.0
- [GROOVY-9264] - Bump build-scan gradle plugin to 2.4.2
- [GROOVY-9269] - Bump jackson related libs to 2.10.0
- [GROOVY-9275] - Bump antlr to 4.7.4
- [GROOVY-9277] - Bump versions gradle plugin to 0.26.0
- [GROOVY-9280] - Bump gradle to 5.6.3
- [GROOVY-9285] - Bump javaparser to 3.15.2
- [GROOVY-9286] - Bump versions gradle plugin to 0.27.0
- [GROOVY-9290] - Bump ivy to 2.5.0
- [GROOVY-9297] - Bump javaparser to 3.15.3
- [GROOVY-9300] - Bump gradle to 5.6.4
- [GROOVY-9303] - Bump javaparser to 3.15.4
- [GROOVY-9307] - Bump javaparser to 3.15.5
- [GROOVY-9311] - Bump jackson-dataformat-yaml to 2.10.1
- [GROOVY-9314] - Bump picocli to 4.1.0
- [GROOVY-9325] - Bump picocli to 4.1.1
- [GROOVY-9326] - Bump CodeNarc to 1.5
- [GROOVY-9330] - Bump javaparser to 3.15.6
- [GROOVY-9334] - Bump picocli to 4.1.2
- [GROOVY-9350] - Bump javaparser to 3.15.7
- [GROOVY-9354] - Bump picocli to 4.1.4
- [GROOVY-9356] - Bump javaparser to 3.15.8
- [GROOVY-9357] - Bump junit to 4.13
- [GROOVY-9358] - Bump jmh gradle plugin to 0.5.0
- [GROOVY-9359] - Bump javaparser to 3.15.9
- [GROOVY-9361] - Bump jackson-dataformat-yaml to 2.10.2
- [GROOVY-9362] - Bump asm to 7.3.1
- [GROOVY-9371] - Bump gradle to 6.1.1
- [GROOVY-9372] - Bump junit to 5.6.0
- [GROOVY-9383] - Bump javaparser to 3.15.11
Documentation
- [GROOVY-8618] - Update docs for GroovyConsole
- [GROOVY-8619] - Update docs for Groovy Shell
- [GROOVY-8620] - Update docs for Grape dependency manager
- [GROOVY-8848] - Named parameters documentation missing explanation for mixing multiple parameters use case
- [GROOVY-8870] - Spread-dot operator on list of lists
- [GROOVY-9019] - triple-single and triple-double quotes handle backslash escapes equally
- [GROOVY-9085] - Add INOUT stored procedure example to asciidoc doc for groovy-sql
- [GROOVY-9207] - Links in AST transforms section broken
Epic
- [GROOVY-9124] - Implement the parrot parser
Improvement
- [GROOVY-3360] - Better error message for assert a = 1
- [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-4585] - backslash can not be escaped by `SimpleTemplateEngine`
- [GROOVY-4816] - Visiting Empty expressions
- [GROOVY-4875] - Add a safe index operator
- [GROOVY-7233] - Configurable @Log AST logger field access modifiers
- [GROOVY-7632] - Groovy named parameters static check
- [GROOVY-7772] - Class.&instanceMethod had better to have same meaning of Class::instanceMethod of Java8
- [GROOVY-8180] - GroovyConsole improvement: log to file option
- [GROOVY-8185] - Change Groovydoc processing to support antlr4 grammar including getting comments from AST
- [GROOVY-8312] - [PARROT] Deprecate useless features on unicode sequences
- [GROOVY-8339] - Fix warning "An illegal reflective access operation has occurred"
- [GROOVY-8410] - Provide a common cache
- [GROOVY-8428] - Add DGM startsWithAny(String...) and endsWithAny(String...)
- [GROOVY-8437] - Implement an atomic `getAndPut` method for `LRUCache`
- [GROOVY-8444] - Support unqualified enum constants in switch cases (like Java)
- [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-8517] - Add ASTNode.getNodeMetaData overload that supports computation of missing value (like Map.computeIfAbsent)
- [GROOVY-8524] - Triple quoted string with quotes on end of line
- [GROOVY-8535] - FieldNode constructor appears to call setType incorrectly
- [GROOVY-8547] - Factory pattern side-stepped by CompilerConfiguration/ParserVersion
- [GROOVY-8586] - [PARROT] Support Java 9 ARM blocks
- [GROOVY-8604] - Cache the parameterized type for better performance
- [GROOVY-8621] - Grape command line tool synopsis improvement
- [GROOVY-8623] - Groovy Object Browser within Groovy Console could show Groovy version in about help
- [GROOVY-8630] - Refine the parameterized type cache
- [GROOVY-8635] - Make some groovy classes of groovy console compile static
- [GROOVY-8679] - BigDecimalMath.MAX_DIVISION_SCALE is hard-coded
- [GROOVY-8681] - Make non-static inner class creator span rows
- [GROOVY-8704] - IntRange should be Serializable
- [GROOVY-8719] - Add DelegatesTo annotation to CompilerCustomizationBuilder.withConfig
- [GROOVY-8748] - CompileUnit could implement NodeMetaDataHandler to act as a "global" node for metadata
- [GROOVY-8755] - Forbidden using command chain expression in array initializer to avoid ambiguities
- [GROOVY-8765] - Annotate generated methods with @Generated
- [GROOVY-8780] - Add `sha256` DGM
- [GROOVY-8783] - Support Java 9/10/11 bytecode
- [GROOVY-8784] - Prepare for supporting JDK 12 bytecode
- [GROOVY-8793] - Add a switch to clear lexer cache
- [GROOVY-8812] - Make `Sql` and `BatchingStatementWrapper` implement `AutoCloseable`
- [GROOVY-8827] - Close a small gap in the EMC DSL for constructors
- [GROOVY-8851] - [PARROT] Refine safe indexing for maps/named parameters
- [GROOVY-8858] - Refine GCL to avoid occupying Permanent Area/Metaspace repeatedly for same source code
- [GROOVY-8861] - Simplify the switch for runtime groovydoc
- [GROOVY-8872] - Decompiled parameter names don't reflect the names in the bytecode
- [GROOVY-8880] - Traits - static/instance init blocks
- [GROOVY-8887] - Support multi-assignment of tuples in STC
- [GROOVY-8890] - Make "Inspect Tokens" of groovy console support Parrot's tokens
- [GROOVY-8894] - Improve performance of DGM `leftShift(OutputStream, InputStream)`
- [GROOVY-8900] - Make class `Tuple0`, `Tuple1`...`Tuple16` final
- [GROOVY-8903] - Retrofit NamedParams to groovy.sql.Sql
- [GROOVY-8910] - Improve the performance of the new Parrot parser
- [GROOVY-8915] - [PARROT] Make groovydoc configuration flexible
- [GROOVY-8927] - String variants for take and drop
- [GROOVY-8939] - Additional Methods in StringGroovyMethods
- [GROOVY-8942] - Highlight matched parentheses, brackets and curly braces in Groovy Console when caret touching them
- [GROOVY-8943] - @CompileStatic with getAt(int) and getAt(String)
- [GROOVY-8945] - Improve performance of DGM `groupBy` and `countBy`
- [GROOVY-8949] - Run dependency management call as privileged action
- [GROOVY-8962] - Provide an option to generate Java stubs in memory for better compilation performance
- [GROOVY-8971] - The VMPlugin configureClassNode method should retain parameter name information when available
- [GROOVY-8972] - CompilationUnit#createClassVisitor should use the class node resolver rather than the class loader directly
- [GROOVY-8986] - Change the order of default imported packages to reduce the times of resolving
- [GROOVY-8987] - Support profiling parser
- [GROOVY-8995] - Improve the performance of creating list
- [GROOVY-9008] - Support native method reference and constructor reference (basic cases)
- [GROOVY-9022] - In Groovy console, enable option for output to be on the right side. (horizontal split)
- [GROOVY-9029] - [Console] Save output log file preferences to OS preferences
- [GROOVY-9034] - adjust Java grammar for underscore in numeric literals (fixes some Groovydoc parse errors of Java files)
- [GROOVY-9037] - allow java grammar to partially understand "default" in interfaces (just enough to keep groovydoc processing of java files happy)
- [GROOVY-9038] - allow antlr2 java grammar to partially understand try-with-resources (just enough to keep groovydoc processing of java files happy)
- [GROOVY-9060] - Make the initial capacity of LinkedHashMap be power of 2 for better performance
- [GROOVY-9065] - Add support for @Testable annotation in JUnit5Runner
- [GROOVY-9067] - Compile Java stubs with standard API
- [GROOVY-9073] - Support preview features in compiled classes
- [GROOVY-9081] - CLONE - Fix warning "An illegal reflective access operation has occurred"
- [GROOVY-9083] - groovyConsole should be updated to understand method references and lambda expressions
- [GROOVY-9084] - Add the missing delegate methods to `InnerLoader`
- [GROOVY-9099] - Throw a better exception when validating native method reference fails
- [GROOVY-9100] - CompilerConfiguration.DEFAULT should be immutable
- [GROOVY-9101] - GroovyConsole should have a right-click context menu
- [GROOVY-9103] - CLONE - CLONE - Fix warning "An illegal reflective access operation has occurred"
- [GROOVY-9108] - Make Interpreter changeable in Groovysh
- [GROOVY-9109] - Groovysh: Do not force override classloader if user supplied is already GroovyClassLoader
- [GROOVY-9112] - Clean bad smell in `GroovyClassLoader` *
- [GROOVY-9122] - code smell in ProcessingUnit *
- [GROOVY-9131] - Extension method support for native method references
- [GROOVY-9133] - Groovy Console could support an AutoRun feature
- [GROOVY-9135] - Additional support for @Testable annotation in JUnit5Runner
- [GROOVY-9140] - Class.&instanceMethod with incorrect first param
- [GROOVY-9165] - Grape cannot pull in picocli *
- [GROOVY-9169] - Groovy could support andThen/compose aliases for rightShift/leftShift
- [GROOVY-9175] - Open SecureASTCustomizer for extension
- [GROOVY-9177] - Support JDK14
- [GROOVY-9199] - Code in finally block is ignored in IntelliJ IDEA debugger
- [GROOVY-9210] - Missing TextfierSupport from asm-util
- [GROOVY-9217] - Fix warning "An illegal reflective access operation has occurred" when setting property
- [GROOVY-9218] - Reduce the memory usage of `MethodIndex` instances
- [GROOVY-9223] - Avoid generating common methods for each groovy class
- [GROOVY-9228] - CLI options for static compilation
- [GROOVY-9229] - Add @ClosureParams to closure input parameter of Sql.withInstance(...)
- [GROOVY-9233] - Add @ClosureParams to closure input parameter of Sql.withBatch(...)
- [GROOVY-9236] - Avoid unnecessary resolving
- [GROOVY-9240] - Better signature for ResourceGroovyMethods.traverse(File, Map<String, Object>, Closure) (and overloadings)
- [GROOVY-9261] - Refine type checking for ARM
- [GROOVY-9266] - Extension method metaClass lacks closure metadata for IDE/STC
- [GROOVY-9274] - Add DGM `minus` to `LocalDate`
- [GROOVY-9276] - Improve the performance of parsing
- [GROOVY-9289] - @Delegate should check property/method names for annotation attributes like includes/excludes
- [GROOVY-9298] - Eliminate some illegal access warnings when indy is enabled
- [GROOVY-9312] - Recent grape changes break certain usage on Windows
- [GROOVY-9316] - Improved toString for AnnotationNode
- [GROOVY-9320] - Support serializable lambda expression
- [GROOVY-9324] - Implement `AstStringCompiler` in Java
- [GROOVY-9331] - shuffled() DGM method shuffles wrong list
- [GROOVY-9351] - Make `NumberRange` serializable to align with `IntRange`
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-8223] - Multiple Return Values @CompileStatic Tuple#<> working
- [GROOVY-8334] - Java 8 Date/Time type support in Groovy JDK (JSR 310)
- [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
- [GROOVY-8794] - Add optional groovy-yaml subproject to support parsing and building yaml
- [GROOVY-8808] - Add DGM `Throwable.asString`
- [GROOVY-8842] - Implement a smart highlighter for groovy console editor
- [GROOVY-8935] - Provide a @NullCheck AST transformation similar to Lombok's NonNull
- [GROOVY-9128] - [PARROT] Provide proper support for the identical (===) and not identical (!==) operators
- [GROOVY-9129] - [PARROT] Support safe index operations for lists/arrays including multi-dimensional array/nested list access
- [GROOVY-9145] - Add DGSM `dumpAll` to `Thread`
- [GROOVY-9196] - We should provide a shuffle(d) DGM method similar to Kotlin
- [GROOVY-9198] - We should provide an average/mean DGM method similar to Kotlin
- [GROOVY-9384] - Groovy should provide a Maven BOM
Sub-task
- [GROOVY-2773] - Strange behaviour when passing chained methods (methodA().methodB().etc()) as parameters
- [GROOVY-3446] - Method call resolves to statically imported method instead of equally named local method
- [GROOVY-4287] - CLONE - import of static nested classes in external groovy files is broken
- [GROOVY-5852] - Static import on demand resolves capitalised reference
- [GROOVY-5961] - Variable scope not checked properly for AIC in static method
- [GROOVY-8594] - DocGenerator could be moved to avoid split packages - part (2)
- [GROOVY-8597] - SqlGroovyMethods could be moved to avoid split packages - part (2)
- [GROOVY-8647] - Split package renaming first stage
- [GROOVY-8802] - GroovyObject method implementations when supplied by Groovy compiler are now marked with @Internal
- [GROOVY-8843] - Fix illegal reflective access within o.c.g.vmplugin.v7.Java7
- [GROOVY-9254] - Split package renaming second stage
Task
- [GROOVY-5299] - [PARROT] antlr 4 grammar creation task
- [GROOVY-8279] - Adapt groovysh to compile using the new parser Parrot
- [GROOVY-8664] - switch from findbugs to spotbugs
- [GROOVY-8691] - Remove deprecated Jaxb methods in old location
- [GROOVY-8692] - Remove DirectFastStringServiceFactory for Groovy 3
- [GROOVY-8864] - Backwards compatibility of traits
- [GROOVY-9208] - Adapt the groovysh completers to use the new parser Parrot
- [GROOVY-9380] - VMPlugin refactor: Coalesce Java5 through Java7 into Java8 *
- [GROOVY-9423] - Manage String#stripIndent() conflict with jdk13 *
Test
- [GROOVY-9164] - Add tests for @Generated annotation
* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)