Changelog for Groovy 3.0.0-unreleased

Bug

  • [GROOVY-3278] - Using referenced String constant as value of Annotation causes compile error
  • [GROOVY-5912] - Static compilation: Groovy doesn't fail compilation when accessing package scope methods, but fails at runtime
  • [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-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-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-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-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-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-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-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-8317] - Smart type inference doesn't work on explicit closure params
  • [GROOVY-8319] - Improve smart type on list expresions
  • [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-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-8405] - Inherited methods with default parameters cause cause static compilation to fail
  • [GROOVY-8408] - invokeMethod cannot be set through category
  • [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-8445] - Static analysis does not work properly when coercing Closure to FunctionInterface
  • [GROOVY-8447] - It is allowed to define local variable of void type
  • [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-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-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-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-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-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-8833] - @Canonical creates invalid hashCode
  • [GROOVY-8835] - AstNodeToScriptVisitor - no token needed for EmptyStatement initialization
  • [GROOVY-8853] - string literal can span rows
  • [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-8913] - Parrot Parser: partially-parenthesized binary expression parsed as cast and unary plus
  • [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-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-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-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
  • [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-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-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-9176] - Syntactic sugar for set method calls in conflict with class member declarations
  • [GROOVY-9184] - CLONE - Use of an inner enum causes compilation to go into infinite loop - antlr2 fix
  • [GROOVY-9191] - Cannot compile generic method without public keyword
  • [GROOVY-9200] - StringIndexOutOfBoundsException in AstBrowser
  • [GROOVY-9203] - Anonymous inner class count is not local to enclosing type
  • [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-9243] - Fail to resolve nested type defined in base type written in Groovy
  • [GROOVY-9244] - Anonymous subclasses should cast their super-parameters
  • [GROOVY-9246] - Version 3.0.0-beta-3 does not conform to OSGi version standard.
  • [GROOVY-9265] - ScriptMain.groovy: -1: Access to bugs.ClassWithInnerClass$InnerClass#obj is forbidden @ line -1, column -1.
  • [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

Dependency upgrade

Documentation

  • [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

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-5306] - [PARROT] Add "a ?= 2" support (Elvis assignment): should be expanded to "a = a == null ? 2 : a"
  • [GROOVY-7233] - Configurable @Log AST logger field access modifiers
  • [GROOVY-7632] - Groovy named parameters static check
  • [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-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] - Support Java 9 ARM blocks
  • [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-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-8664] - switch from findbugs to spotbugs
  • [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-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] - Refine safe indexing for named properties
  • [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-9085] - Add INOUT stored procedure example to asciidoc doc for groovy-sql
  • [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-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

New Feature

  • [GROOVY-2840] - [PARROT] Support "not" for in and instanceof
  • [GROOVY-3791] - [PARROT] Support Java Array initializer syntax when not ambiguous
  • [GROOVY-5348] - [PARROT] Implement do/while loop
  • [GROOVY-6336] - [PARROT] Support Java 7 ARM blocks
  • [GROOVY-8138] - Compile static to support streams
  • [GROOVY-8334] - Java 8 Date/Time type support in Groovy JDK
  • [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-8765] - Annotate generated methods with @Generated
  • [GROOVY-8794] - Add 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-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

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-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

Task

  • [GROOVY-5299] - [PARROT] antlr 4 grammar creation task
  • [GROOVY-8279] - Adapt groovysh to compile using the new parser Parrot
  • [GROOVY-8290] - Bump Ant version to 1.10.1
  • [GROOVY-8618] - Update docs for GroovyConsole
  • [GROOVY-8619] - Update docs for Groovy Shell
  • [GROOVY-8620] - Update docs for Grape dependency manager
  • [GROOVY-8647] - Split package renaming first stage
  • [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-9254] - Split package renaming second stage