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

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

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

* potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)