Groovy Changelog

What's new in Groovy 4.0.21

Apr 9, 2024
  • Bug:
  • Access to a private property of a parent object is not caught
  • Dependency upgrade:
  • Bump asm to 9.7
  • Bump jackson/Jackson-databind to 2.17.0
  • Bump jqwik to 1.8.4 (test dependency)
  • Bump log4j2 version to 2.23.1 (test dependency)
  • Bump javaparser to 3.25.10
  • Improvement:
  • SQL enhancement to allow metadata access for execute
  • Support JDK 23

New in Groovy 4.0.18 (Jan 19, 2024)

  • Bug:
  • Not reporting cyclic dependency in function's type parameters
  • Compiler crash: ClassNode#getTypeClass for TemporalAccessor called before the type class is set
  • [STC] Cannot detect the type of Optional in some cases
  • STC loses generic information on method references
  • Runtime rehydrate error for closure in interface default method
  • Trait static methods are not resolved when called from closure
  • GroovyClassDoc has empty 'enumConstants' when call method GroovyDocParser.getClassDocsFromSingleSource(...)
  • ConcurrentCommonCache causes memory leaks.
  • Generics error in method resolution
  • Dependency upgrade:
  • Bump slf4j to 2.0.11 (test and standard install dependency)
  • Bump log4j2 version to 2.22.1 (test dependency)
  • Bump javaparser to 3.25.8
  • Bump jackson/jackson-databind to 2.16.1
  • Bump Gradle to 7.6.3
  • Improvement:
  • Avoid processing duplicated entries within META-INF
  • GroovyDoc: List inherited properties

New in Groovy 4.0.17 (Dec 22, 2023)

  • Bug:
  • [GROOVY-10936] - Patterns conditionally created using pattern operator ~ are cast to String/GString
  • [GROOVY-11200] - JsonSlurper parses badly format JSON without throwing exception
  • [GROOVY-11241] - Regression in STC generics solution
  • Dependency upgrade:
  • [GROOVY-11233] - Bump log4j2 version to 2.22.0 (test dependency)
  • [GROOVY-11243] - Bump antlr to 4.13.1.3
  • [GROOVY-11245] - Bump javaparser to 3.25.7
  • [GROOVY-11246] - Bump Spotbugs/Spotbugs annotations to 4.8.3 (build dependency)
  • [GROOVY-11248] - Bump logback-classic to 1.3.14 (test dependency

New in Groovy 3.0.20 (Dec 22, 2023)

  • Bug:
  • [GROOVY-10055] - STC does not support self bounded types
  • [GROOVY-10080] - Closure with type argument inference does not work as expected
  • [GROOVY-10094] - STC misses type checks on default arguments
  • [GROOVY-10153] - STC: cannot combine use-variance with bounded polymorphism
  • [GROOVY-10228] - STC fails to substitute type variable in the presence of the diamond operator and a function call
  • [GROOVY-10271] - Wrong inference when using ternary operator with closure and variable
  • [GROOVY-10272] - Wrong inference when using ternary operator with lambdas
  • [GROOVY-10308] - SC incorrectly reports "access to Object#field" is forbidden
  • [GROOVY-10310] - STC is unable to call parameterized function
  • [GROOVY-10325] - STC: error for map*.value assignment
  • [GROOVY-10326] - STC: missing error for map*.key assignment
  • [GROOVY-10328] - STC: incorrect type inference for list, map, etc. with lower bound generics
  • [GROOVY-10356] - STC changes the inferred type of variable in the presence of flow typing
  • [GROOVY-10380] - SC: IncompatibleClassChangeError when calling interface default method from non-public interface
  • [GROOVY-10494] - Groovy 4 can not compile super.foo with generic interface (or trait) method
  • [GROOVY-10619] - STC: fix support for unbounded wildcard references to self-bounded type parameters
  • [GROOVY-10623] - Type mismatch when encountering unconditional flow typing and null
  • [GROOVY-10651] - STC: closure parameter type inference for raw type that is iterable over type parameter
  • [GROOVY-10671] - STC fails to compile AssertJ fluent API expression
  • [GROOVY-10674] - STC crashes when combining use-site variance with bounded polymorphism
  • [GROOVY-10688] - LUB does not work properly when mixing type parameter names and using wildcards
  • [GROOVY-10698] - Fail to infer the type argument when using nested diamond operator
  • [GROOVY-10897] - Static Type Checking selects wrong method for abstract method call check
  • [GROOVY-10936] - Patterns conditionally created using pattern operator ~ are cast to String/GString
  • [GROOVY-10975] - STC rejects program when passing method reference in parameterized function
  • [GROOVY-11006] - CompileStatic: cannot implicitly call double setter with BigDecimal literal
  • [GROOVY-11024] - STC NPE when using Collectors.toMap() with a generic result
  • [GROOVY-11028] - STC: empty map (or list) literal does not type check like emptyMap()
  • [GROOVY-11163] - Class parsing does not set erasure of type param with bounds
  • [GROOVY-11170] - Fix edge cases for SecureASTCustomizer
  • [GROOVY-11192] - Code that causes Groovy Compiler Crash
  • [GROOVY-11195] - STC: false positive for Class method called from static context
  • [GROOVY-11196] - ambiguous method error for tap on null receiver
  • [GROOVY-11209] - XmlUtil escapeControlCharacters escapes control characters 0-30 instead of 0-31
  • [GROOVY-11241] - Regression in STC generics solution
  • [GROOVY-11242] - Stackoverflow error when calling super from overridden method
  • [GROOVY-11250] - Compilation fails when accessing getter with shortcut notation on Java class
  • [GROOVY-7506] - Cannot assign value of type java.util.List<java.lang.String> to variable of type java.lang.String[]
  • [GROOVY-7992] - Sort methods that accept a comparator should accept Comparator<? super T> (fix type checker ability to cope with super in DGM methods)
  • [GROOVY-8488] - STC: floating-point literals no longer accepted as args to method with double parameter
  • [GROOVY-8909] - List literal type inference does not take its context into account
  • [GROOVY-8946] - @CompileStatic ignores declared type and forces a cast when inside a closure
  • [GROOVY-8948] - BigDecimal to primitive conversion not working
  • [GROOVY-9844] - STC infers too-narrow bounds for inline map
  • [GROOVY-9909] - Cannot call super when overriding an interface default method
  • [GROOVY-9998] - Wildcards with a lower bound fail static type checking
  • Dependency upgrade:
  • [GROOVY-11160] - Bump ivy to 2.5.2 (includes CVE-2022-46751)
  • [GROOVY-11162] - Bump ant version to 1.10.14
  • [GROOVY-11214] - Bump jansi to 2.4.1
  • [GROOVY-11219] - Bump javaparser to 3.25.6
  • [GROOVY-11233] - Bump log4j2 version to 2.22.0 (test dependency)
  • [GROOVY-11235] - Bump jackson/jackson-databind to 2.16.0
  • [GROOVY-11248] - Bump logback-classic to 1.3.14 (test dependency)
  • Improvement:
  • [GROOVY-10295] - STC: cannot infer list or map type for method return
  • [GROOVY-10341] - "super" invocations of abstract methods should be caught at compile time with static compilation enabled
  • [GROOVY-10660] - STC: infer closure/lambda parameter types for return expression
  • [GROOVY-11201] - STC: assign method pointer to SAM-type
  • [GROOVY-7106] - Improve coercion / implicit cast of map literals for @CompileStatic
  • [GROOVY-7274] - Improve type inference for hash map -> Map<?, ?>

New in Groovy 4.0.15 (Sep 14, 2023)

  • Bug:
  • [GROOVY-10974] - Fail to perform SAM conversion using method references
  • [GROOVY-10975] - STC rejects program when passing method reference in parameterized function
  • [GROOVY-11163] - Class parsing does not set erasure of type param with bounds
  • [GROOVY-11170] - Fix edge cases for SecureASTCustomizer
  • Dependency upgrade:
  • [GROOVY-11160] - Bump ivy to 2.5.2 (includes CVE-2022-46751)
  • [GROOVY-11162] - Bump ant version to 1.10.14
  • [GROOVY-11171] - Bump slf4j to 2.0.9 (test and standard install dependency)
  • [GROOVY-11172] - Bump jqwik to 1.8.0 (test dependency)
  • [GROOVY-11173] - Bump picocli to 4.7.5
  • [GROOVY-11175] - Bump javaparser to 3.24.5
  • [GROOVY-11177] - Bump logback-classic to 1.3.11 (test dependency)
  • Improvement:
  • [GROOVY-11167] - JsonOutput should handle Records like POGOs

New in Groovy 2.5.23 (Aug 22, 2023)

  • Bug:
  • [GROOVY-11056] - modified behavior of variable resolution within Closure
  • [GROOVY-11136] - NoSuchMethodError thrown when executing Groovy script

New in Groovy 4.0.13 (Jun 29, 2023)

  • Bug:
  • SC: class that provides isCase but not isNotCase
  • AIOOBE with Java lambda syntax
  • Fail to substitute type when having SAM type with generics
  • Method ambiguity error when having methods with primitive arrays and varargs
  • Modified behavior of variable resolution within Closure
  • STC Generic type matching failure
  • Annotation collection isn't properly handling enum annotation attribute values
  • NPE in ListHashMap
  • VerifyError when using generic container in closure
  • Unable to compile: Expected type for closure parameter
  • The method pointer operator suppresses checked exceptions and results in a MethodMissingException
  • @ClosureParams for StringGroovyMethods.replaceFirst and StringGroovyMethods.replaceAll wrong
  • GroovyCastException on closure implementing Consumer
  • Static type checking regression with implicit generics of inline maps
  • STC: closure param's default not type-checked (method target)
  • Missing symbol for package-private member under joint compilation
  • STC: closure param type inference for array and list
  • Static import of property accessor for type in same unit
  • NullObject leak
  • Dependency upgrade:
  • Bump asciidoctorj dependencies (build dependency)
  • Bump json-unit to 2.38.0 (test dependency)
  • Bump jackson/jackson-databind to 2.15.2
  • Bump picocli to 4.7.4
  • Bump logback-classic to 1.3.8 (test dependency)
  • Improvement:
  • Optimisations for bytecode for record generated methods (missing case)

New in Groovy 4.0.12 (May 8, 2023)

  • Bug:
  • [GROOVY-10920] - Compiler exception with void expression as while condition with CompileStatic
  • [GROOVY-10972] - Issue in resolving overloaded method reference
  • [GROOVY-10994] - Fail to resolve method reference with generics
  • [GROOVY-10996] - Compilation issue in Groovy 4
  • [GROOVY-11001] - AIOOBE when using method reference in nested lambda
  • [GROOVY-11003] - Cannot find method with variable arguments when using fully qualified class names
  • [GROOVY-11007] - STC: instanceof guard for property loses type information
  • [GROOVY-11009] - STC resolves wrong method reference
  • [GROOVY-11011] - SC: array instanceof guard and length or subscript
  • [GROOVY-11012] - Wrong type is inferred when calling method defined in the parent class
  • [GROOVY-11019] - joint compilation: public static final string does not compile
  • [GROOVY-11020] - NullPointerException in instruction selection when calling parameterized function whose type parameter has an upper bound corresponding to a SAM type
  • [GROOVY-11023] - SC: IncompatibleClassChangeError when closure direct-targets extension method
  • [GROOVY-11024] - STC NPE when using Collectors.toMap() with a generic result
  • [GROOVY-11028] - STC: empty map (or list) literal does not type check like emptyMap()
  • [GROOVY-11029] - SC: super property is not accessible by a subclass that defines a getter and setter
  • [GROOVY-11030] - CompileStatic: string concatenation in method parameter default value results in NoSuchMethodError
  • [GROOVY-11036] - StackOverflowError in cyclic interface inheritance
  • [GROOVY-11041] - Incorrect property handling for records
  • [GROOVY-11044] - SC: property access within closure produces cast exception
  • Dependency upgrade:
  • [GROOVY-11016] - Bump javaparser to 3.25.2
  • [GROOVY-11018] - Bump picocli to 4.7.2
  • [GROOVY-11031] - Bump jackson/jackson-databind to 2.15.0
  • [GROOVY-11032] - Bump picocli to 4.7.3
  • [GROOVY-11033] - Bump JUnit Jupiter/JUnit Platform to 5.9.3/1.9.3
  • [GROOVY-11037] - Bump logback-classic to 1.3.7 (test dependency)
  • [GROOVY-11043] - Bump javaparser to 3.25.3
  • [GROOVY-11045] - Bump testng to 7.5.1
  • Improvement:
  • [GROOVY-10758] - Improve error message when using generic ClassNodes in ASTT
  • [GROOVY-11015] - [GINQ]Leverage the power of Virtual Thread
  • [GROOVY-11040] - Optimisations for bytecode for record generated methods

New in Groovy 4.0.11 (Mar 31, 2023)

  • Access:
  • [GROOVY-10976] - Broken link in documentation
  • Bug:
  • [GROOVY-10270] - Cannot initialize parameterized class with lambda without cast
  • [GROOVY-10978] - LUB of Type<T extends Something> and Type<? extends Something>
  • [GROOVY-10981] - STC: type inference of variable expression with superclass field and access method
  • Dependency upgrade:
  • [GROOVY-10983] - Bump asm to 9.5
  • [GROOVY-10987] - Bump slf4j to 2.0.7 (test and standard install dependency)
  • [GROOVY-10988] - Bump htmlunit to 2.70.0 (test dependency)
  • [GROOVY-10989] - Bump json-unit to 2.37.0 (test dependency)
  • [GROOVY-10990] - Bump logback-classic to 1.3.6 (test dependency)
  • Improvement:
  • [GROOVY-10973] - Groovy should provide 'asReversed' and 'reverseEach' methods for NavigableSet
  • [GROOVY-10986] - Add JDK21 constant

New in Groovy 4.0.10 (Mar 12, 2023)

  • Bug:
  • [GROOVY-10918] - Memory leak: local variable values are not discarded
  • [GROOVY-10928] - Invalid stub code for interface field
  • [GROOVY-10929] - Method closure somehow doesn't match argument
  • [GROOVY-10933] - Bootstrap Method Error on non-void lambda for Consumer
  • [GROOVY-10935] - MissingPropertyException truncates nested class name
  • [GROOVY-10937] - record + lombok + groovy == Cannot specify duplicate annotation on the same member : lombok.NonNull
  • [GROOVY-10939] - Non-static method java.lang.Object#hashCode cannot be called from static context
  • [GROOVY-10955] - @Builder doesn't work on records
  • [GROOVY-10962] - Instance "isser" prevents resolving of static "getter"
  • Dependency upgrade:
  • [GROOVY-10945] - Bump org.jfrog.buildinfo:build-info-extractor-gradle from 4.31.3 to 4.31.4 (build dependency)
  • [GROOVY-10946] - Bump com.github.ben-manes.versions to 0.46.0 (build dependency)
  • [GROOVY-10947] - Bump gradle/wrapper-validation-action from 1.0.5 to 1.0.6 (build dependency)
  • [GROOVY-10965] - Bump javaparser to 3.25.1
  • [GROOVY-10966] - Bump picocli to 4.7.1
  • [GROOVY-10967] - Bump json-unit to 2.36.1 (test dependency)
  • [GROOVY-10968] - Bump gson to 2.10.1 (test dependency)
  • [GROOVY-10970] - Bump log4j2 version to 2.20.0 (test dependency)
  • Improvement:
  • [GROOVY-10958] - Confusing error message from GroovyScriptEngine

New in Groovy 4.0.9 (Feb 9, 2023)

  • Bug:
  • [GROOVY-10881] - FastStringUtils does not work in an OSGi environment
  • [GROOVY-10911] - General error during instruction selection: AIOOBE
  • [GROOVY-10919] - @MapConstructor Breaks in Groovy4 when combined with @TupleConstructor, fine in Groovy3
  • [GROOVY-10922] - stack overflow calling implicit getter/setter from override
  • Dependency upgrade:
  • [GROOVY-10923] - Bump com.github.ben-manes.versions from 0.44.0 to 0.45.0 (build dependency)
  • [GROOVY-10924] - Bump com.gradle.enterprise from 3.12.2 to 3.12.3 (build dependency)
  • [GROOVY-10926] - Bump javaparser to 3.25.0
  • [GROOVY-10927] - Bump jackson to 2.14.2
  • Improvement:
  • [GROOVY-10891] - We should have variants of findResult/s with no Closure which use Closure.IDENTITY in that case

New in Groovy 4.0.8 (Jan 22, 2023)

  • Bug:
  • [GROOVY-10722] - AIC via array-based (variadic) constructor null and array arguments
  • [GROOVY-10840] - GroovyCastException on Groovy 3 try-with-resources example after upgrade to Groovy 4
  • [GROOVY-10889] - Casting of arguments in @NamedVariant method has no effect
  • [GROOVY-10890] - Generics regression in method call
  • [GROOVY-10897] - Static Type Checking selects wrong method for abstract method call check
  • [GROOVY-10902] - Dynamic constants for primitive types get default value in Java
  • Dependency upgrade:
  • [GROOVY-10884] - Bump xstream to 1.4.20
  • [GROOVY-10892] - Bump javaparser to 3.24.10
  • [GROOVY-10906] - Bump JUnit Jupiter/JUnit Platform to 5.9.2/1.9.2
  • [GROOVY-10907] - Bump jqwik to 1.7.2 (test dependency)
  • [GROOVY-10908] - Bump Ant version to 1.10.13
  • Improvement:
  • [GROOVY-10882] - Improve JaCoCo's line code coverage of a Groovy assert statement
  • [GROOVY-10891] - We should have variants of findResult/s with no Closure which use Closure.IDENTITY in that case

New in Groovy 4.0.6 (Oct 16, 2022)

  • Bug:
  • [GROOVY-10717] - Map to type coercion not working on abstract classes
  • [GROOVY-10756] - STC: parameterized and bounded return value for java class property
  • [GROOVY-10757] - Regression from 2.5.16+: ClassCastException at runtime
  • [GROOVY-10765] - STC: Closure implementation of Java @FunctionalInterface loses type information
  • [GROOVY-10783] - propertyMissing of category does not work when indy enabled
  • [GROOVY-10787] - STC: parameterized property check during map-style construction
  • Dependency upgrade:
  • [GROOVY-10776] - Bump jackson-databind to 2.13.4
  • [GROOVY-10777] - Bump junit5 to 5.9.1
  • [GROOVY-10778] - Bump junit-platform to 1.9.1
  • [GROOVY-10779] - Bump japicmp plugin to 0.4.1
  • [GROOVY-10780] - Bump spock to 2.3-groovy-4.0
  • [GROOVY-10785] - Bump asm to 9.4
  • Improvement:
  • [GROOVY-10759] - groovy-datetime should support collections of fields when accessing a temporal accessor
  • [GROOVY-10771] - Type-checking extension scripts should import AST classes

New in Groovy 4.0.5 (Sep 9, 2022)

  • Bug:
  • [GROOVY-10096] - STC: accepts incorrect program with flow typing
  • [GROOVY-10120] - STC: Guava Multimap#asMap bridge method
  • [GROOVY-10271] - Wrong inference when using ternary operator with closure and variable
  • [GROOVY-10272] - Wrong inference when using ternary operator with lambdas
  • [GROOVY-10356] - STC changes the inferred type of variable in the presence of flow typing
  • [GROOVY-10521] - Compiler complains about abstract method not implemented when implementing trait
  • [GROOVY-10623] - Type mismatch when encountering unconditional flow typing and null
  • [GROOVY-10646] - STC: outer class type parameter inference
  • [GROOVY-10674] - STC crashes when combining use-site variance with bounded polymorphism
  • [GROOVY-10688] - LUB does not work properly when mixing type parameter names and using wildcards
  • [GROOVY-10697] - @ToString throws an NPE for POJO with null field
  • [GROOVY-10698] - Fail to infer the type argument when using nested diamond operator
  • [GROOVY-10699] - Unable to infer type argument from the parameter type of a lambda
  • [GROOVY-10700] - STC cannot locate method specified by interface but supplied by AST transform
  • [GROOVY-10701] - NullPointerException in instruction selection phase when having conditionals with lambdas and function references
  • [GROOVY-10704] - Random order of TraitBridge methods breaks cachability
  • [GROOVY-10705] - ToString order bug for super properties
  • [GROOVY-10709] - Performance regression in Gradle with Groovy 4
  • [GROOVY-10710] - operator == is slow when comparing primitive arrays and lists
  • [GROOVY-10711] - CompileStatic doesn't call asBoolean
  • [GROOVY-10712] - STC: for-each over Iterator fails to infer element type
  • [GROOVY-10714] - STC can't distinguish overloads
  • [GROOVY-10720] - Resolving wrong overloaded method?
  • [GROOVY-10725] - Regression in STC related to generics, unknown cause
  • [GROOVY-10731] - Exceptions thrown from MarkupTemplateEngine when map accessors and GString interpolation are used
  • [GROOVY-10733] - Fix illegal access for array clone on JDK16+
  • [GROOVY-10734] - STC doesn't resolve zero-argument method references in nested generics
  • [GROOVY-10737] - Groovydoc deprecation list page is always empty even if @deprecated is used in groovydoc comments on some elements
  • [GROOVY-10741] - STC method pointer or reference to generated property method
  • [GROOVY-10742] - STC permits incorrect void method reference
  • [GROOVY-10744] - STC support assignment of primitives to interface types like Comparable and Serializable
  • [GROOVY-10747] - Fix illegal access for object clone on JDK16+
  • [GROOVY-10748] - logback-classic 1.3.0 and 1.4.0 breaks on Groovy
  • [GROOVY-10749] - STC: closure/lambda/reference parameter as type witness for SAM type generics
  • [GROOVY-7247] - spreadMap type inference is incorrect and STC reports on valid code
  • [GROOVY-7370] - Varargs in constructor are not treated correctly when creating instances of anonymous class
  • [GROOVY-7506] - Cannot assign value of type java.util.List<java.lang.String> to variable of type java.lang.String[]
  • [GROOVY-8487] - @CompileStatic calls DefaultGroovyMethods.iterator with Iterator value in for loop
  • [GROOVY-8737] - STC Method resolution fails if other methods with more parameters exist
  • [GROOVY-8828] - Union types incorrectly resolved
  • [GROOVY-8965] - instanceof with || inserts wrong cast
  • [GROOVY-9415] - failure in static compilation with getAt
  • Dependency upgrade:
  • [GROOVY-10719] - Bump javaparser to 3.24.4
  • [GROOVY-10729] - Bump JUnit Jupiter/JUnit Platform to 5.9.0/1.9.0
  • [GROOVY-10730] - Bump Gradle to 7.5.1 (build dependency)
  • [GROOVY-10736] - Bump gson (test dependency) to 2.9.1
  • [GROOVY-10738] - Bump Spock to 2.2 (test dependency)
  • [GROOVY-10751] - Bump slf4j to 2.0.0 (test and standard install dependency)
  • [GROOVY-10752] - Bump logback to 1.3.0 (test dependency)
  • [GROOVY-10753] - Bump jackson databind version to 2.13.4
  • Improvement:
  • [GROOVY-10696] - The DGM removeAll variants which take a closure can be refactored to use removeIf for better efficiency
  • [GROOVY-10715] - Make StreamingTemplateEngine support reusing ClassLoader
  • [GROOVY-10732] - @Immutable handling of cloneable types should have the same behavior for non-cloneables on JDK16+
  • [GROOVY-10739] - Improve error message for malformed grab coordinate
  • [GROOVY-10743] - The use method for Category classes can't take an interface with static methods due to a NPE
  • New Feature:
  • [GROOVY-10728] - Slight enhancement to groovy-dateutil extensions

New in Groovy 4.0.2 (Jun 5, 2022)

  • Bug:
  • [GROOVY-10100] - groovyc infers the wrong type when using a method reference of a function with varargs
  • [GROOVY-10114] - Wrong type argument inference when using the result of ternary operator directly.
  • [GROOVY-10115] - STC: compiler error when using type parameter with extends
  • [GROOVY-10116] - STC: error when passing a type parameter in type constructor
  • [GROOVY-10130] - Flow typing does not work when && is combinded with instanceof
  • [GROOVY-10158] - Unexpected type mismatch when combining conditional and bounded type parameter
  • [GROOVY-10221] - Unexpected compile-time error when combining closures and bounded type parameters
  • [GROOVY-10226] - LUB is computed incorrectly when involving bounded type variables
  • [GROOVY-10266] - The diamond operator does not work when passing a value whose type is a type variable
  • [GROOVY-10267] - STC reports wrong message when encoutering wildcard types
  • [GROOVY-10350] - groovysh doesn't work on Arm64 architecture (Apple M1)
  • [GROOVY-10357] - STC crashes on compiling an abstract method with default arguments and lambda
  • [GROOVY-10358] - Unable to resolve method after LUB operator
  • [GROOVY-10367] - STC fails to infer the correct type for type variable in the presence of the diamond operator and bounded polymorphism
  • [GROOVY-10368] - STC fails to instantiate type variable when using diamond operator
  • [GROOVY-10466] - Compilation error on Spock expectation
  • [GROOVY-10482] - Incorrect inference of type argument of parameterized method call
  • [GROOVY-10494] - Groovy 4 can not compile super.foo with generic interface (or trait) method
  • [GROOVY-10495] - Invalid newlines generated by XmlTemplateEngine
  • [GROOVY-10499] - Incomplete type variable substitution when using wildcard type and diamond operator
  • [GROOVY-10520] - Incorrect line numbers for Closure classes in AstNode
  • [GROOVY-10528] - STC: NPE for raw type instanceof followed by parameterized extension method
  • [GROOVY-10540] - Inconsistent application of and checking for GroovyObject in classgen
  • [GROOVY-10541] - groovysh can not launch when running on Oracle Linux 8.5(ARM)
  • [GROOVY-10543] - Problem with groovy-all Gradle module metadata
  • [GROOVY-10544] - Static compiler chooses superinterface return type
  • [GROOVY-10548] - Static compiler allows property access on records but uses wrong method names
  • [GROOVY-10552] - @AutoImplement for method with type parameter(s)
  • [GROOVY-10553] - Regression: Annotation on trait field is illegally duplicated
  • [GROOVY-10556] - TypeChecked/CompileStatic index out of bounds
  • [GROOVY-10558] - Wrong argument type when using static method from nested class
  • [GROOVY-10561] - @NamedVariant self referential default values are not correctly resolved
  • [GROOVY-10565] - JDK 17: Sealed classes inside a package cause Exception in thread "main" java.lang.ClassFormatError: Illegal class name
  • [GROOVY-10570] - AnnotationCollector produces unspecified errors when used in Java
  • [GROOVY-10576] - STC: map putAll fails to match "?" to "Object"
  • [GROOVY-10579] - Type '[I' is not assignable to reference type when using Groovy 3.0.10
  • [GROOVY-10580] - Conditionally initialized `final` variables considered maybe uninitialized
  • [GROOVY-10583] - Stub generator handles method type parameter bounds incorrectly
  • [GROOVY-10585] - `@AutoFinal` does not use annotation parameters when used with `ASTTransformationCustomizer`
  • [GROOVY-10589] - TypeChecked/CompileStatic Incompatible generic argument types regression for List.sort(boolean, Comparator)
  • [GROOVY-7288] - @Delegate to object by Class which implementing trait with fields complains 'abstract method in a non-abstract class'
  • [GROOVY-8243] - SAM trait coercion via middle interface
  • [GROOVY-8244] - SAM trait coercion with default parameters
  • [GROOVY-9866] - Inner class of superinterface cannot be found
  • Dependency upgrade:
  • [GROOVY-10532] - Bump Codenarc to 3.0.0 (build dependency)
  • [GROOVY-10533] - Bump jackson to 2.13.2
  • [GROOVY-10534] - Bump gradle to 7.4.1 (build dependency)
  • [GROOVY-10536] - Bump jqwik to 1.6.5 (test dependency)
  • [GROOVY-10537] - Bump logback to 1.2.11 (test dependency)
  • [GROOVY-10538] - Bump log4j2 version to 2.17.2 (test dependency)
  • [GROOVY-10539] - Bump Spotbugs/Spotbugs annotations to 4.6.0 (build dependency)
  • [GROOVY-10554] - Bump javaparser to 3.24.2
  • [GROOVY-10562] - Bump japicmp plugin to 0.4.0 (build dependency)
  • [GROOVY-10563] - Bump gradle to 7.4.2 (build dependency)
  • [GROOVY-10564] - Bump jackson databind version to 2.13.2.2
  • [GROOVY-10569] - Bump asm to 9.3
  • [GROOVY-10572] - Bump json-unit (test dependency) to 2.33.0
  • Improvement:
  • [GROOVY-10573] - Support ASM JDK19 constants
  • Sub-task:
  • [GROOVY-10586] - Revert: Funnel doPrivileged through VMPlugin (JEP-411)
  • Task:
  • [GROOVY-10560] - Provide additional XmlUtil variants for more options when disabling doctypes *
  • potentially breaking change (read issue for details - even minor differences are sometimes flagged as potentially breaking changes)

New in Groovy 2.5.17 (Jun 1, 2022)

  • Bug:
  • [GROOVY-10234] - Groovyc throws Stackoverflow error on generic class with lower bound
  • [GROOVY-10267] - STC reports wrong message when encoutering wildcard types
  • [GROOVY-10280] - Type variable substitution does not work well when running into chain of field accesses
  • [GROOVY-10482] - Incorrect inference of type argument of parameterized method call
  • [GROOVY-10522] - stubgen: Extra method created for Boolean property
  • [GROOVY-10525] - Regression in 2.5.16: Class<?>[] cannot be assigned to Class<?>...
  • [GROOVY-10552] - @AutoImplement for method with type parameter(s)
  • [GROOVY-10558] - Wrong argument type when using static method from nested class
  • [GROOVY-10570] - AnnotationCollector produces unspecified errors when used in Java
  • [GROOVY-10576] - STC: map putAll fails to match "?" to "Object"
  • [GROOVY-10579] - Type '[I' is not assignable to reference type when using Groovy 3.0.10
  • [GROOVY-10583] - Stub generator handles method type parameter bounds incorrectly
  • [GROOVY-10585] - `@AutoFinal` does not use annotation parameters when used with `ASTTransformationCustomizer`
  • [GROOVY-10598] - BUG! exception in phase 'instruction selection' unexpected NullPointerException
  • [GROOVY-5103] - groovy compiler ignores import * for static nested classes in java sources
  • [GROOVY-6919] - Static compilation fails with multiple bounds generics
  • [GROOVY-8409] - Static compilation with generic function wrapping BiFunction causes GroovyCastException
  • [GROOVY-9006] - Static type checking fails on java.sql.Timestamp when compared to null
  • [GROOVY-9413] - Groovy 3.0 seem to have a problem with <?>, can't handle it in Java interface method when called from Groovy.
  • [GROOVY-9968] - @TypeChecked Error: Members of Iterable<T extends Foo> are Foo, not Object
  • Dependency upgrade:
  • [GROOVY-10569] - Bump asm to 9.3
  • [GROOVY-9944] - Bump junit to 4.13.2
  • Improvement:
  • [GROOVY-10503] - Embed ASM 9.2 in Groovy 2.5.x

New in Groovy 3.0.11 (Jun 1, 2022)

  • Bug:
  • [GROOVY-10089] - SC: GroovyCastException for map value as constructor for Collection
  • [GROOVY-10143] - NullPointerException while compiling a trait
  • [GROOVY-10180] - STC: instanceof and DGM each(Map,Closure)
  • [GROOVY-10201] - JDK 17: class String1_groovyProxy cannot implement sealed interface java.lang.constant.ConstantDesc
  • [GROOVY-10227] - STC computes an imprecise LUB when involving two parameterized types implementing the same interface
  • [GROOVY-10230] - Unexpected generics parameter arity mismatch in the "instruction selection" phase
  • [GROOVY-10235] - STC: Generic type of Set not correctly resolved when calling ConcurrentHashMap.newKeySet()
  • [GROOVY-10267] - STC reports wrong message when encoutering wildcard types
  • [GROOVY-10280] - Type variable substitution does not work well when running into chain of field accesses
  • [GROOVY-10282] - STC: false positive for BiFunction and BinaryOperator with same type parameter
  • [GROOVY-10324] - STC is unable to infer type variable when combining parameterized types and the diamond operator
  • [GROOVY-10330] - STC instantiates type variable with a wrong type when calling an instance method of the same class
  • [GROOVY-10343] - STC fails to infer dependent type variable
  • [GROOVY-10357] - STC crashes on compiling an abstract method with default arguments and lambda
  • [GROOVY-10363] - STC produces compile-time error on encoutering bounded type parameter with conditional
  • [GROOVY-10364] - STC does not type check method call when using bounded type parameter as a type argument
  • [GROOVY-10367] - STC fails to infer the correct type for type variable in the presence of the diamond operator and bounded polymorphism
  • [GROOVY-10405] - @AutoClone breaks in Java17 for File properties
  • [GROOVY-10481] - Groovy 3.x - @AutoClone breaks in Java17 for File properties
  • [GROOVY-10482] - Incorrect inference of type argument of parameterized method call
  • [GROOVY-10495] - Invalid newlines generated by XmlTemplateEngine
  • [GROOVY-10519] - v9 ClassFinder closes existing FileSystems that it doesn't own
  • [GROOVY-10520] - Incorrect line numbers for Closure classes in AstNode
  • [GROOVY-10522] - stubgen: Extra method created for Boolean property
  • [GROOVY-10535] - IF condition on empty Collection has different behavior than null Collection
  • [GROOVY-10552] - @AutoImplement for method with type parameter(s)
  • [GROOVY-10556] - TypeChecked/CompileStatic index out of bounds
  • [GROOVY-10557] - TypeChecked/CompileStatic tries to cast to wrong type in nested closure
  • [GROOVY-10558] - Wrong argument type when using static method from nested class
  • [GROOVY-10570] - AnnotationCollector produces unspecified errors when used in Java
  • [GROOVY-10576] - STC: map putAll fails to match "?" to "Object"
  • [GROOVY-10579] - Type '[I' is not assignable to reference type when using Groovy 3.0.10
  • [GROOVY-10583] - Stub generator handles method type parameter bounds incorrectly
  • [GROOVY-10585] - `@AutoFinal` does not use annotation parameters when used with `ASTTransformationCustomizer`
  • [GROOVY-10593] - Groovydoc links to wrong type
  • [GROOVY-10596] - IF-condition evaluation on the non-null object sometimes doesn't return true
  • [GROOVY-10598] - BUG! exception in phase 'instruction selection' unexpected NullPointerException
  • [GROOVY-10601] - Incompatible generic argument type when combining conditionals and bounded type parameters
  • [GROOVY-10603] - LUB operation returns incorrect result
  • [GROOVY-10611] - Static fields not initialized when accessed from another class
  • [GROOVY-10624] - Nested diamond operators do not work correctly although the expected type argument is known
  • [GROOVY-10626] - --enable-preview doesn't show in CLI/help for groovysh
  • [GROOVY-10628] - Elvis assignment operator loses type information
  • [GROOVY-10634] - Regular expressions cause groovysh 3.0.10, JDK 17 to crash
  • [GROOVY-6919] - Static compilation fails with multiple bounds generics
  • [GROOVY-7288] - @Delegate to object by Class which implementing trait with fields complains 'abstract method in a non-abstract class'
  • [GROOVY-7419] - Static Compilation with Diamond of local EnumMap<>
  • [GROOVY-8243] - SAM trait coercion via middle interface
  • [GROOVY-8244] - SAM trait coercion with default parameters
  • [GROOVY-8409] - Static compilation with generic function wrapping BiFunction causes GroovyCastException
  • [GROOVY-9033] - Bad code green: empty list literal with each method
  • [GROOVY-9853] - ClassFormatError using method reference on interface target
  • [GROOVY-9948] - Cannot infer the correct type in the presence of diamond operator
  • [GROOVY-9956] - Cannot infer correct type argument when passing a subtype of the declared type argument
  • [GROOVY-9963] - Generic type of field is not instantiated
  • [GROOVY-9972] - LUB does not work correctly in case of ternary operator
  • [GROOVY-9983] - Type argument inference does not work in ternary operator
  • [GROOVY-9995] - Wrong inference inside closure when having a bounded type parameter
  • Dependency upgrade:
  • [GROOVY-10532] - Bump Codenarc to 3.0.0 (build dependency)
  • [GROOVY-10537] - Bump logback to 1.2.11 (test dependency)
  • [GROOVY-10538] - Bump log4j2 version to 2.17.2 (test dependency)
  • [GROOVY-10554] - Bump javaparser to 3.24.2
  • [GROOVY-10569] - Bump asm to 9.3
  • [GROOVY-10627] - Bump jackson to 2.13.3
  • [GROOVY-10642] - Bump creadur-rat-gradle plugin to 0.7.1 (build dependency)

New in Groovy 3.0.10 (Mar 7, 2022)

  • Bug:
  • [GROOVY-10051] - STC: return type for unresolved placeholder with bound resolved to Object
  • [GROOVY-10071] - SC: closure with variadic parameter
  • [GROOVY-10072] - SC: closure with default argument(s)
  • [GROOVY-10125] - FP Cycle detected in type parameter that extends another type parameter
  • [GROOVY-10176] - @NamedVariant with primitives can't find method
  • [GROOVY-10178] - @CompileStatic and @NullCheck make compiler fail
  • [GROOVY-10184] - NPE in SecureASTCustomizer with indirectImportCheckEnabled
  • [GROOVY-10218] - BUG! exception in phase 'instruction selection' when non-existent method called
  • [GROOVY-10232] - Massive increase in memory usage due to CacheableCallSite
  • [GROOVY-10234] - Groovyc throws Stackoverflow error on generic class with lower bound
  • [GROOVY-10239] - GroovyCastException when @CompileStatic and !in keyword are used together
  • [GROOVY-10249] - Generated stubs missing method from traits with array parameter
  • [GROOVY-10261] - @NamedVariant: Default parameters on ctor/method are ignored when passing some named parameters
  • [GROOVY-10262] - MethodNode#getText can output incorrect modifiers
  • [GROOVY-10269] - STC: Stackoverflow Error when passing function reference to closure
  • [GROOVY-10288] - Regression with generics
  • [GROOVY-10289] - Regression with static and non static class mixing
  • [GROOVY-10299] - Groovy compiler generates invalid Java stubs
  • [GROOVY-10303] - Compiler NPE within CompileStack#clear
  • [GROOVY-10312] - MissingMethodException in method with default parameter in trait - regression in 3.0.9
  • [GROOVY-10318] - Weird behavior of !in operator
  • [GROOVY-10319] - Groovy3 CompileStatic bug: Method clone is protected in java.lang.Object
  • [GROOVY-10320] - Generics failed to compile with Groovy 3.0.9 when overriding plus operator
  • [GROOVY-10336] - STC crashes when passing method reference to an inner closure
  • [GROOVY-10375] - SC: cast exception for private property access from lambda
  • [GROOVY-10379] - Error for super class and super interface methods of same name
  • [GROOVY-10396] - Static import is not applied for custom println method since 2.5.1
  • [GROOVY-10398] - LazyFieldNode never equals itself
  • [GROOVY-10407] - unchecked method invocation warning in generated stubs
  • [GROOVY-10414] - STC: cannot set non-static outer class property via setter method
  • [GROOVY-10419] - STC: stack overflow for elvis assignment with explicit setter
  • [GROOVY-10424] - SC: stack overflow for optimized boolean on private inner class with inner class(es)
  • [GROOVY-10456] - Inconsistent exception upon accessing empty property
  • [GROOVY-10457] - Compilation of constructor calls inside CompileDynamic constructors fails with ArrayIndexOutOfBoundsException
  • [GROOVY-10458] - Path to a problematic file isn't shown in the error message sometimes if compilation fails with IndexOutOfBoundsException
  • [GROOVY-10461] - Gradle multimodule project fails with NoClassDefFoundError in groovyjarjarasm.asm.signature.SignatureReader.parseType
  • [GROOVY-10464] - Wrong cast for type parameter in generated stubs
  • [GROOVY-10472] - @AutoImplement is failing when covariant returns are involved
  • [GROOVY-10478] - Groovy4: java.lang.VerifyError: Bad invokespecial instruction: interface method reference is in an indirect superinterface.
  • [GROOVY-10483] - Source encoding incorrectly set in v4.0.0
  • [GROOVY-10484] - NamedVariant: NamedParam not checked when added by transform
  • [GROOVY-10497] - NamedVariant: default value overrides supplied value if it's falsy
  • [GROOVY-10500] - NamedVariant: non-trivial default value of NamedDelegate property
  • [GROOVY-10502] - NamedVariant: improve consistency of default value treatment
  • [GROOVY-10516] - Script @groovy.transform.Field AST transformation generics handling with fully qualified types
  • [GROOVY-4320] - Joint compiler + @Delegate fail to recognize method signature with default value
  • [GROOVY-5204] - @Delegate to a method with optional params
  • [GROOVY-5239] - Statically imported method vs other methods with the same name
  • [GROOVY-5364] - Static property reference from static context in script does not compile
  • [GROOVY-5367] - Closure property in Binding used as Closure delegate cannot be called
  • [GROOVY-5726] - Source locations of command chain expressions
  • [GROOVY-5736] - Log4j, Commons, Slf4j ast transforms are broken in Groovy-Eclipse
  • [GROOVY-6510] - Problems with implicit closures inside of @Category-annotated classes
  • [GROOVY-6802] - CompileStatic: ListAssignment takes precedence over Coercion when statically compiling
  • [GROOVY-6803] - CompileStatic: ListAssignment for String takes precendence over Coercion when statically compiling
  • [GROOVY-7033] - Bug with annotation with closure on method of anonymous class
  • [GROOVY-8050] - Reference outer class property via inner class
  • [GROOVY-8433] - Anonymous inner class results in cast exception with @Category applied
  • [GROOVY-8448] - Local variable is accessible via explicit this
  • [GROOVY-8974] - STC ignores declaration type
  • [GROOVY-9006] - Static type checking fails on java.sql.Timestamp when compared to null
  • [GROOVY-9158] - @NamedParam arguments don't get their default value when only named parameters are used in the method call
  • [GROOVY-9259] - Implementing Groovy interface with default methods can cause compile issues.
  • [GROOVY-9784] - GroovyRowResult not assignable to Map<String, Object> with static type checker
  • [GROOVY-9807] - Static compile of dynamically generated code produces different output in a top-level class and a nested class
  • [GROOVY-9927] - Stub not using fully qualified class for inner java class when importing outer class
  • Dependency upgrade:
  • [GROOVY-10255] - Bump JUnit5 to 5.8.1
  • [GROOVY-10313] - Bump jansi to 2.4.0
  • [GROOVY-10334] - Bump Ant version to 1.10.12
  • [GROOVY-10397] - Bump junit to 5.8.2
  • [GROOVY-10399] - Bump bridger to 1.6.Final (build dependency)
  • [GROOVY-10408] - Bump log4j2 version to 2.15.0 (test dependency)
  • [GROOVY-10410] - Bump log4j2 version to 2.16.0 (test dependency)
  • [GROOVY-10416] - Bump logback to 1.2.8 (test dependency)
  • [GROOVY-10425] - Bump log4j2 version to 2.17.0 (test dependency)
  • [GROOVY-10427] - Bump jackson version to 2.13.1
  • [GROOVY-10432] - Bump hsqldb to 2.6.1 (test dependency)
  • [GROOVY-10435] - Bump log4j2 version to 2.17.1 (test dependency)
  • [GROOVY-10441] - Bump testng to 7.5
  • [GROOVY-10444] - Bump javaparser to 3.24.0
  • [GROOVY-10446] - Bump logback to 1.2.10 (test dependency)
  • [GROOVY-10486] - Bump gradle versions plugin to 0.42.0 (build dependency)
  • [GROOVY-10490] - Bump xstream to 1.4.19
  • [GROOVY-10493] - Bump slf4j to 1.7.36 (test dependency)
  • [GROOVY-10506] - Bump gradle to 6.9.2 (build dependency)
  • [GROOVY-10507] - Bump Spock to 2.1-groovy-3.0 (test dependency)
  • Documentation:
  • [GROOVY-10468] - Ability to define system properties for groovyc using CompilerConfiguration
  • Improvement:
  • [GROOVY-10352] - Java8 does not load enum values into annotation attributes
  • [GROOVY-10477] - SC: optimize for-in loop on array with dynamic variable
  • [GROOVY-10505] - TraitComposer should mark generated methods as @Generated
  • [GROOVY-5441] - Type argument checking

New in Groovy 4.0.0 (Jan 30, 2022)

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

New in Groovy 3.0.9 (Dec 27, 2021)

  • Bug:
  • [GROOVY-10009] - TracingInterceptor throws NullPointerException if arguments contains a null argument
  • [GROOVY-10010] - STC: method call with GString elements in list/array has different error from assignment
  • [GROOVY-10027] - STC: NamedParams error for method call argument
  • [GROOVY-10033] - Compiler crash when encountering function reference on nested class
  • [GROOVY-10046] - NPE in static compiler
  • [GROOVY-10047] - STC infers Closure instead of SAM for method references
  • [GROOVY-10056] - Inferred parameter type of lambda expression for multi-dimensions array is not correct
  • [GROOVY-10075] - Static compiler incorrectly typechecks extension modules
  • [GROOVY-10079] - groovyc does not perform unboxing on Character type
  • [GROOVY-10085] - Class.isCase() documentation does not clarify that Class.isCase(SomeClass) is false, or why
  • [GROOVY-10087] - STC does not perform boxing on chars when encountering assignment and function call
  • [GROOVY-10097] - CLONE - Better propagation of InterruptedException (additional cases)
  • [GROOVY-10098] - Unexpected behaviour when the return type of a closure is a type parameter
  • [GROOVY-10102] - Type checking fails when calling trait method using indirect SelfType relation
  • [GROOVY-10104] - SC: runtime error for default argument call expression
  • [GROOVY-10106] - STC error for call to static trait method from closure
  • [GROOVY-10107] - Cannot assign null to a variable with a bounded generic type
  • [GROOVY-10111] - compiler crash during canonicalization
  • [GROOVY-10113] - StackOverflowError in STC
  • [GROOVY-10121] - @AnnotationCollector does not work with JUnit 5
  • [GROOVY-10122] - Wrong cast in stubs generated
  • [GROOVY-10132] - XmlUtil.serialize() Emoji bug
  • [GROOVY-10141] - NPE in InnerClassVisitor for non-static inner class CCE within two AICs
  • [GROOVY-10159] - Compilation failure: ClassCastException
  • [GROOVY-10164] - RootLoader cannot be set as system class loader in Java 12+
  • [GROOVY-10179] - STC: instanceof and for-in variable type
  • [GROOVY-10181] - Groovy 3 AST for annotated fields reports wrong lastLineNumber if field not initialized
  • [GROOVY-10188] - Different treatment of property expressions in closures from 2.4 to 2.5
  • [GROOVY-10189] - File.withWriter and Path.withWriter are inconsistent
  • [GROOVY-10191] - NoSuchMethodError during static field inlining is not caught, unlike NoSuchFieldException
  • [GROOVY-10194] - "PermittedSubclasses requires ASM9" when importing enum on Java 17
  • [GROOVY-10196] - "Cannot find matching method" with specific class hierarchy and static compilation
  • [GROOVY-10197] - java.lang.VerifyError using property inside enum's constant
  • [GROOVY-10199] - ASTTest cannot reference types from transform classpath
  • [GROOVY-10200] - Static scope error for variable in non-static method of static inner class
  • [GROOVY-3015] - Seems like ClosureMetaClass#invokeMethod does not respect the interceptable nature of the owner/delegate
  • [GROOVY-3421] - Expression underlying a spread map expression is evaluated twice
  • [GROOVY-4610] - GroovyInterceptable (AOP) not working with closures
  • [GROOVY-5453] - Incorrect resolve of category property for String
  • [GROOVY-6282] - groovyc ant task generates invalid stub (picks wrong constructor) and fails in Java 1.7 compilation
  • [GROOVY-7867] - asType(Collection col, Class clazz) ingnores exceptions in clazz constructor
  • [GROOVY-8111] - Stack overflow between WideningCategories lowestUpperBound and parameterizeLowestUpperBound
  • [GROOVY-8179] - Map-style constructor call, inner class and static compilation
  • [GROOVY-8202] - void tail calls in closures break @CompileStatic type inference
  • [GROOVY-8452] - @CompileStatic, generic with 'extends' bug: Expected parameter of type ? but got A
  • [GROOVY-8638] - CompileStatic fails with Guava Multimap#asMap
  • [GROOVY-8652] - Putting key on generic Map fails when using CompileStatic
  • [GROOVY-9064] - STC: explicit declared variable type ignored in favor of assigned value type(s)
  • [GROOVY-9915] - STC: call to static method fails with incompatible generics error
  • [GROOVY-9945] - STC: Cannot find matching method when using Generics
  • [GROOVY-9971] - @TypeChecked: Closure<String> no longer compatible with Closure<GString> argument
  • [GROOVY-9984] - Wrong type inference when passing null
  • [GROOVY-9997] - STC: cast or coerce to functional interface fails to infer param types of closure/lambda
  • Dependency upgrade:
  • [GROOVY-10019] - Bump picocli to 4.6.1
  • [GROOVY-10042] - Bump Ant version to 1.10.10
  • [GROOVY-10043] - Bump spotbugs to 4.2.3
  • [GROOVY-10044] - Bump versions plugin to 0.38.0
  • [GROOVY-10048] - Bump Gradle to 6.8.3
  • [GROOVY-10058] - Bump junit to 5.7.1
  • [GROOVY-10093] - Bump Spock version to 2.0 final
  • [GROOVY-10167] - Bump jackson version to 2.12.4
  • [GROOVY-10169] - Bump Ant version to 1.10.11 (incorporates CVE-2021-36373 and CVE-2021-36374)
  • [GROOVY-10170] - Bump JUnit Jupiter/JUnit Platform to 5.7.2/1.7.2
  • [GROOVY-10171] - Bump slf4j to 1.7.31
  • [GROOVY-10172] - Bump Spotbugs version to 4.3.0
  • [GROOVY-10173] - Bump checkstyle to 8.44
  • [GROOVY-10174] - Bump gson to 2.8.7
  • [GROOVY-10175] - Bump Codenarc to 2.1.0
  • [GROOVY-10202] - Bump Gradle to 6.9.1
  • [GROOVY-10203] - Bump xstream to 1.4.18
  • [GROOVY-10204] - Bump javaparser to 3.23.0
  • [GROOVY-10205] - Bump jackson version to 2.12.5
  • [GROOVY-10206] - Bump Spotbugs version to 4.4.0
  • [GROOVY-10211] - Bump Codenarc to 2.2.0
  • Improvement:
  • [GROOVY-10036] - STC: unresolved generics for return type of extension method call with full type arguments
  • [GROOVY-10052] - STC sometimes requires explicit closure to SAM cast inside of another closure
  • [GROOVY-10077] - Groovy Console: Support JDKs without macOS Runtime Support for Java
  • [GROOVY-10112] - IndexedProperty AST transform should only provide the getter for immutable fields
  • [GROOVY-10146] - Groovy 3 compilation errors are less accurate than Groovy 2
  • [GROOVY-10150] - Eliminate ambiguities while parsing non-static class creator
  • [GROOVY-10212] - Provide a mechanism for users to enable Antlr4's SLL (fast but only simple) mode
  • New Feature:
  • [GROOVY-10210] - Provide a helper factory class to assist with porting
  • Task:
  • [GROOVY-9958] - Prepare for bintray/jcenter sunset

New in Groovy 3.0.7 (Dec 3, 2020)

  • Bug:
  • Groovysh in Windows 7/8/10 doesn't support arrow keys and Del
  • STC: AIC cannot resolve overridden method of outer class
  • ArrayStoreException assigning GStringImpl to String[] when using Indy
  • Bug in @AutoImplement
  • SC: subclass access to package-private or private field is not indicated as an error
  • Groovsh import of non existing class throws null pointer instead of syntax error
  • NPE when trait with type parameter is implemented as raw type
  • Wrong type resolved if method reference used with typed method
  • Regression in groovyc 3.0 and 4.0 and Compile static with generic static method in trait
  • STC: UnionTypeClassNode created for simple instanceof scenarios
  • Groovy 3 generated lambda classes are marked as synthetic
  • STC: "putAt" shortcut notation to outer class private field from Closure leads to GroovyCastException
  • AnnotationCollectorTransform generates code not marked with @Generated
  • Inconsistency with callable properties in static context
  • Avoid potential NPE in antlr2 groovysh
  • SC: cast exception for variable assigned within conditional blocks
  • Bootstrap method initialization exception raised when lambda parameter type is wrong
  • SC: cross-package protected field access uses dynamic property methods
  • Using a method reference causes a compiler error
  • Method reference doesn't accept subtypes of argument
  • Object not bound with Groovy (but works fine in Java)
  • @AutoImplement does not consider declared properties
  • JSP-API license seems to be missing
  • STC: spread-safe and list property access error for CollType<? extends ItemType>
  • StackOverflowError in STC
  • Replace some old api usage with newer available variants
  • Interface constants from super interfaces lost in some contexts
  • Better propagation of InterruptedException
  • Static inner class of a static inner class is missing inner class table attribute
  • Dependency upgrade:
  • Bump gradle to 6.7
  • Bump javaparser to 3.16.2
  • Bump Ant version to 1.10.9 (fixes Apache Ant CVE 2020-11979)
  • Bump Spotbugs/Spotbugs annotations versions
  • Bump JUnit4 version to 4.13.1 (includes security fix)
  • Bump picocli version to 4.5.2
  • Bump jackson to 2.11.3
  • Bump javaparser to 3.16.3
  • Bump Spock version to 2.0-M4-groovy-3.0
  • bump jsp-api/servlet-api versions to 2.3.3/4.0.1
  • Bump gradle to 6.7.1
  • Bump xstream to 1.4.14
  • Bump javaparser to 3.17.0
  • Bump slf4j to 1.7.30
  • Bump logback to 1.2.3
  • Bump versions gradle plugin to 0.36.0
  • Bump checkstyle to 8.37
  • Bump japicmp gradle plugin to 0.2.9
  • Bump log4j2 version to 2.14.0
  • Bump Codenarc version to 2.0.0
  • Bump findsecbugs plugin to 1.11.0
  • Improvement:
  • Groovy-jmx: JmxMetaMapBuilder should support GString object names
  • New Feature:
  • Enhance Closure annotation value (as Closure class) to Arrays

New in Groovy 3.0.6 (Sep 29, 2020)

  • Bug:
  • [GROOVY-7304] - Cannot mutate private field from within an AIC or a closure
  • [GROOVY-7373] - Interact Closures withing Groovy Trait methods are not recognized by the implementing class
  • [GROOVY-7399] - Method "with()" fails to call on the object reference in Trait
  • [GROOVY-7759] - @Lazy does not work when used in a Trait
  • [GROOVY-7843] - Trait method calling closure cannot be inherited while using CompileStatic
  • [GROOVY-8000] - Problem With Trait Generics
  • [GROOVY-8049] - Trait properties with 'with'
  • [GROOVY-8284] - getMetaClass should be annotated as (JavaBeans) transient
  • [GROOVY-8820] - Closure inside trait cannot use Closure's delegate variables
  • [GROOVY-8961] - Cannot pass generic list into explicit setter
  • [GROOVY-9146] - Seems to be a gap in method reference support
  • [GROOVY-9255] - trait property throws MissingPropertyException when read using qualified super expression
  • [GROOVY-9256] - trait qualified-super expressions fail when inside closure
  • [GROOVY-9386] - Field initialized in a trait using tap doesn't work correctly
  • [GROOVY-9460] - Groovy 3 Compilation Failure with method with argument Class<?> called with Class<D>
  • [GROOVY-9463] - STC: no type check error for invalid method pointer or reference
  • [GROOVY-9570] - Class-Level Closure Definition With Generics Fails TypeChecked
  • [GROOVY-9635] - Generic types get mixed up
  • [GROOVY-9648] - Bad error message when attempting to call a missing constructor
  • [GROOVY-9650] - MissingPropertyException when accessing @Log-generated log field from a CGLib-proxied outer class
  • [GROOVY-9652] - SC: ClassCastException for comparison to single-character string literal in closure
  • [GROOVY-9653] - SC: ClassCastException on delegate object property set
  • [GROOVY-9654] - should not consider bridge methods when determining whether an overridden method annotated with @Override is valid
  • [GROOVY-9655] - Groovy 3.0.5 regression with the "with" keyword
  • [GROOVY-9657] - JmxMetaMapBuilder.buildOperationMapFrom throw StringIndexOutOfBoundsException
  • [GROOVY-9658] - Infinite recursion exists in HashCodeHelper#updateHash(int, java.lang.Character)
  • [GROOVY-9661] - Since Groovy 3 ArrayExpression#sizeExpression can suddenly return null
  • [GROOVY-9664] - Groovy 3.0 does not work with Groovy 2 code using groovy.xml.XmlUtil
  • [GROOVY-9665] - Regression in 3.0.5 for accessing static constants in closures
  • [GROOVY-9666] - ConcurrentModificationException with ASTTransformation
  • [GROOVY-9672] - trait conflict resolution not available for static methods
  • [GROOVY-9673] - GroovyCastException when using Trait.super.name = ... with multiple setters
  • [GROOVY-9683] - Changed behavior of delegates in 2.5.13
  • [GROOVY-9688] - Groovy 3.0.5 references groovyjarjaropenbeans.BeanInfo (doesn't seem to be included in the distribution) and 3.0.0.rc1 uses java.beans.BeanInfo
  • [GROOVY-9691] - Method call "main" is replaced with StaticMethodCallExpression in script
  • [GROOVY-9692] - Adding extension method 'call' on ArrayList with Closure as a parameter stopped working in 3.0.x
  • [GROOVY-9695] - Regression for accessing private static constants in closures from Parent Classes
  • [GROOVY-9699] - @CompileStatic does not use bridge methods for keyed map access
  • [GROOVY-9700] - SC: set groovy property written for variable expression assignment that should be direct setter call
  • [GROOVY-9703] - DefaultGroovyMethods.reverse(T[], true) performs extra copy
  • [GROOVY-9704] - The '~' negate operator causes an ASM processing error when static compiled
  • [GROOVY-9706] - Groovy 3.0.5 varargs [Static type checking] - Cannot find matching method
  • [GROOVY-9711] - @Sortable annotation always sorts by the parent properties
  • [GROOVY-9712] - groovyc fails when compiling class starting with unicode character
  • [GROOVY-9717] - 3.0 stubs include packages annotations on classes other than package-info.groovy
  • [GROOVY-9732] - CompareToNullExpression has empty implementation of transformExpression
  • [GROOVY-9735] - STC: incorrect error for actual vs inferred closure parameter type
  • [GROOVY-9739] - NPE in ClassNode.isDerivedFrom while compiling trait with Groovy 3.0.5
  • [GROOVY-9751] - STC: error for addAll with collect argument
  • Dependency upgrade:
  • [GROOVY-9670] - Bump TestNG to 7.3.0
  • [GROOVY-9685] - Bump gradle to 6.6
  • [GROOVY-9686] - Bump spotbugs library/plugin to 4.1.1/4.5.0
  • [GROOVY-9687] - Bump versions plugin to 0.29.0
  • [GROOVY-9689] - Bump codenarc to 1.6.1
  • [GROOVY-9690] - Bump checkstyle to 8.35
  • [GROOVY-9693] - bump picocli to 4.5.0
  • [GROOVY-9694] - bump jackson version to 2.11.2
  • [GROOVY-9738] - Bump xstream to 1.4.13
  • [GROOVY-9740] - Bump JUnit5/platform to 5.7.0/1.7.0
  • [GROOVY-9741] - Bump gradle to 6.6.1
  • [GROOVY-9743] - Bump hsqldb to 2.5.1
  • [GROOVY-9746] - Bump picocli to 4.5.1
  • [GROOVY-9747] - Bump versions plugin to 0.33.0
  • [GROOVY-9748] - Bump spotbugs to 4.1.2
  • [GROOVY-9749] - Bump sonarqube plugin to 3.0
  • [GROOVY-9750] - Bump checkstyle to 8.36.1
  • [GROOVY-9752] - Bump ASM version to 9.0 and JDK 16 support
  • Improvement:
  • [GROOVY-9669] - Enhance immutability check
  • [GROOVY-9682] - Support coerce for @NamedVariant
  • [GROOVY-9726] - Compile error needed for illegal field modifier combination
  • [GROOVY-9745] - Provide a way to filter illegal/discouraged characters when using MarkupBuilder
  • Task:
  • [GROOVY-6843] - Remove GroovyDoc JANSI dependency

New in Groovy 3.0.4 (Sep 28, 2020)

  • Bug:
  • [GROOVY-4554] - JavaStubGenerator doesn't play nicely with package-info.groovy files
  • [GROOVY-8774] - Stub generator doesn't handle package-info
  • [GROOVY-9398] - GroovyScriptEngine cannot recompile a class that uses generic parameters
  • [GROOVY-9405] - Junit 5 IncompatibleClassChangeError
  • [GROOVY-9432] - ClassNotFoundException when attempting to use Picocli via Grapes
  • [GROOVY-9465] - GroovyDoc: class-header is not always displayed
  • [GROOVY-9501] - MissingPropertyException for access to private static field from inner class when subclassing
  • [GROOVY-9505] - java.lang.UnsupportedOperationException: This feature requires ASM8 on JDK 14 in Spock tests
  • [GROOVY-9506] - Joint compilation is broken
  • [GROOVY-9507] - JSP style loop in StreamingTemplateEngine template results in TemplateParseException
  • [GROOVY-9508] - groovyConsole CLI plumbing for --enable-preview command-line switch is missing one part
  • [GROOVY-9511] - Annotation spanning lines is not supported by Parrot
  • [GROOVY-9515] - MethodHandle with spread args should not be cached
  • [GROOVY-9517] - CompileStatic typeCasting runtime error from Class Array to Class List
  • [GROOVY-9518] - Closure argument types not inferred when calling a constructor
  • [GROOVY-9519] - CLIBuilder: Option with "type: Integer, defaultValue '0'" results in Boolean if default value is applied
  • [GROOVY-9522] - Throwing NPE when I use ternary operator with something special
  • [GROOVY-9526] - Failed to reload classes with generic parameters
  • [GROOVY-9527] - Bump javaparser to 3.15.21
  • [GROOVY-9528] - CLIBuilder: "error: Missing required options" when unknown options are provided
  • [GROOVY-9529] - Static type checking сannot choose between Map#getAt(Object) and Object#getAt(String) methods
  • [GROOVY-9543] - groovydoc multiple issues with generics
  • [GROOVY-9546] - Annotations on class signature are rendered incorrectly
  • [GROOVY-9547] - @see tags are not working properly
  • [GROOVY-9556] - Stub generated without the effect of AST transformation makes joint compilation fail
  • Dependency upgrade:
  • [GROOVY-9502] - Bump junit to 5.6.2
  • [GROOVY-9503] - Bump javaparser to 3.15.18
  • [GROOVY-9520] - Update Spotbugs/Spotbugs plugin to 4.0.2/4.0.5
  • [GROOVY-9536] - Bump testng to 7.2.0
  • [GROOVY-9537] - Bump xstream version to 1.4.12
  • [GROOVY-9538] - Bump checkstyle version to 8.3.2
  • [GROOVY-9539] - Bump jackson version to 2.11.0
  • [GROOVY-9540] - Bump spotbugs plugin to 4.0.8
  • [GROOVY-9544] - Bump gradle to 6.4
  • [GROOVY-9551] - Bump JavaParser to 3.15.22
  • [GROOVY-9552] - Bump Ant versions to address: [CVE-2020-1945] Apache Ant insecure temporary file vulnerability
  • [GROOVY-9553] - Bump picocli to 4.3.2
  • [GROOVY-9557] - Bump gradle to 6.4.1
  • [GROOVY-9559] - Bump log4j2 version to 2.13.3
  • [GROOVY-9560] - Update Spotbugs/Spotbugs plugin to 4.0.3/4.2.0
  • Documentation:
  • [GROOVY-9531] - Improve CliBuilder docs for Groovy 3.0
  • Improvement:
  • [GROOVY-9504] - Add support for Path to slurper classes
  • [GROOVY-9512] - Control the fallback threshold of indy with different switch
  • [GROOVY-9545] - DGM: add toArray(Class) extension method for java.util.stream.Stream
  • [GROOVY-9549] - groovydoc: implemented interfaces not shown in class description

New in Groovy 3.0.3 (Sep 28, 2020)

  • Bug:
  • [GROOVY-9194] - Groovy fails when a script starts with a #
  • [GROOVY-9310] - Groovy does not ignore second bash directive
  • [GROOVY-9439] - GroovyDocs HTML page for groovy.json.JsonGenerator mostly empty
  • [GROOVY-9441] - Fix binary incompatibility between 2.5/3
  • [GROOVY-9448] - Missing throws clause of constructor declaration in java stubs
  • [GROOVY-9449] - Mutliple methods with the same name now fail before AST transformations can fix it
  • [GROOVY-9450] - DefaultGroovyMethods findIndexOf method can't use startIndex
  • [GROOVY-9451] - Unable to access static getter method as field
  • [GROOVY-9452] - Multiple Repeatable Annotations Container generated if an explicit container is present and an implicit one required
  • [GROOVY-9454] - STC: regression for instanceof on generic field/property
  • [GROOVY-9455] - STC: no error for if (!(x instanceof T)) x.methodFromT()
  • [GROOVY-9459] - Line number information for automatically inserted return statements quirky
  • [GROOVY-9462] - Groovy 3 BUG! exception in phase 'conversion' in source unit Caused by NullPointerException
  • [GROOVY-9469] - Original exception during global AST transformation no longer preserved in error message
  • [GROOVY-9480] - New v9 ClassFinder throws NoSuchFileException/UnsupportedOperationException and writes it to stderr
  • [GROOVY-9483] - Console exits when Cancel is clicked on the "Save changes" dialog
  • [GROOVY-9485] - metaclass is not initialized
  • [GROOVY-9489] - package.html files being ignored during javadoc generation when building on JDK9+
  • Dependency upgrade:
  • [GROOVY-9444] - update versions plugin to 0.28.0
  • [GROOVY-9445] - Update jackson version to 2.10.3
  • [GROOVY-9446] - Bump japicmp-gradle-plugin to 0.2.9
  • [GROOVY-9453] - Upgrade picocli to 4.2.0
  • [GROOVY-9457] - Upgrade checkstyle to 8.30
  • [GROOVY-9466] - Bump javaparser to 3.15.15
  • [GROOVY-9467] - Bump Gradle Spotbugs plugin to 4.0.2
  • [GROOVY-9474] - Bump Spock version to 2.0-M2-groovy-3.0
  • [GROOVY-9476] - Bump spotbugs to 4.0.1
  • [GROOVY-9479] - Bump Gradle to 6.3
  • [GROOVY-9488] - Bump javaparser to 3.15.17
  • [GROOVY-9490] - Bump ASM to 8.0
  • [GROOVY-9497] - Bump asm to 8.0.1
  • Documentation:
  • [GROOVY-9495] - groovy.transform.NullCheck not mentioned in release notes or language documentation
  • Improvement:
  • [GROOVY-9377] - Support JDK15
  • [GROOVY-9447] - Add a parse tree viewer to groovy console
  • [GROOVY-9475] - Groovy Ant task has an option to specify the output file but not the file encoding
  • [GROOVY-9478] - Groovy Ant task could support Ant resources
  • [GROOVY-9486] - Remove redundant code `Sentinel`
  • [GROOVY-9487] - Update and check if initialized via same field of metaclass
  • [GROOVY-9492] - Relax groovy.test.NotYetImplemented dependency on JUnit 4's AssertionFailedError *
  • New Feature:
  • [GROOVY-9442] - GEP: Support for the new JDK14 string escape sequence (s for single space)

New in Groovy 2.5.13 (Jul 22, 2020)

  • Bug:
  • [GROOVY-4945] - Incorrect "Possible solutions" when calling a method on super in a non-derived class
  • [GROOVY-6809] - VerifyError With Inner Class
  • [GROOVY-7094] - Semantic of access super fields is not consistent: super.@field == super.field
  • [GROOVY-7549] - java.lang.IllegalAccessError occurs when attempting to run code built with CompileStatic
  • [GROOVY-7701] - org.codehaus.groovy.runtime.typehandling.GroovyCastException in Groovy ".with { ... }" - Block
  • [GROOVY-7848] - Closure generic parameters ignored and return types missing from collections methods
  • [GROOVY-8441] - IllegalAccessError when calling a public method on a field whose type is declared to be a package-private implementation one
  • [GROOVY-8999] - Access to private fields and methods from subclass exhibits strange behavior
  • [GROOVY-9031] - Traits using generics generate incorrect stub for Properties
  • [GROOVY-9106] - @CompileStatic and @PackageScope support for inner classes and package peers
  • [GROOVY-9168] - Default Arguments: non-static inner class constructor call in default value not supported
  • [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-9422] - @CompileStatic non-static inner class instantiation in closure
  • [GROOVY-9477] - FastStringServiceFactory SPI loading in OSGi
  • [GROOVY-9499] - VerifyError when AIC used as argument to special constructor call
  • [GROOVY-9554] - @Field variable access within closures broken
  • [GROOVY-9558] - Wrong code for putAt on Map that is member of closure delegate
  • [GROOVY-9562] - Base class property causes CCE
  • [GROOVY-9569] - SC: new compiler error for access of static, non-final, outer-class field
  • [GROOVY-9580] - STC: return type checking for generic, covariant property gives false error
  • [GROOVY-9581] - コンパイラで、クロージャから静的クラス変数を参照できない.
  • [GROOVY-9584] - CLONE - Error when creation a variable named "context"
  • [GROOVY-9587] - Scope of method call changed from non-static to static 2.4->2.5
  • [GROOVY-9597] - CompileStatic: @ClosureParams in @DelegatesTo doesn't work
  • [GROOVY-9599] - CliBuilder: Option with "type: String, defaultValue ''" (empty String) results in NullObject if default value is applied
  • [GROOVY-9600] - Picocli-related VersionProvider helper classes should be public to avoid access warnings
  • [GROOVY-9603] - Assignment of Map literal to Map element fails to compile (static)
  • [GROOVY-9605] - leftShift operator does not work on BigInteger (throws UnsupportedOperationException)
  • [GROOVY-9606] - Traits using generics generate incorrect stub for Methods
  • [GROOVY-9608] - MetaClassImpl.getAttribute(Class,Object,String,boolean) drops super
  • [GROOVY-9615] - super.method() can trigger method on outer class in case of missing method
  • [GROOVY-9620] - MetaClassImpl uses findPropertyInClassHierarchy inefficiently
  • [GROOVY-9642] - Inner interface of parent class unresolved in anon. inner class expression
  • Improvement:
  • [GROOVY-9274] - Add DGM `minus` to `LocalDate`
  • [GROOVY-9578] - Also output aborted tests in JUnit 5 GroovyJUnitRunnerHelper
  • [GROOVY-9594] - Rename whitelist/blacklist in SecureASTCustomizer to more meaningful names *
  • [GROOVY-9602] - return more specific type for ifS/ifElseS helper methods in GeneralUtils
  • [GROOVY-9619] - Adjust pom for groovy-test-junit5 so that junit-jupiter-api is compile time not runtime

New in Groovy 2.5.12 (May 21, 2020)

  • Bug:
  • [GROOVY-8966] - Exclusive NumberRange is converted to inclusive when used by List.getAt(range).
  • [GROOVY-9501] - MissingPropertyException for access to private static field from inner class when subclassing
  • [GROOVY-9506] - Joint compilation is broken
  • [GROOVY-9517] - CompileStatic typeCasting runtime error from Class Array to Class List
  • [GROOVY-9518] - Closure argument types not inferred when calling a constructor
  • [GROOVY-9519] - CLIBuilder: Option with "type: Integer, defaultValue '0'" results in Boolean if default value is applied
  • [GROOVY-9528] - CLIBuilder: "error: Missing required options" when unknown options are provided
  • Dependency upgrade:
  • [GROOVY-9552] - Bump Ant versions to address: [CVE-2020-1945] Apache Ant insecure temporary file vulnerability
  • [GROOVY-9553] - Bump picocli to 4.3.2
  • Documentation:
  • [GROOVY-9531] - Improve CliBuilder docs for Groovy 3.0

New in Groovy 2.5.11 (Apr 10, 2020)

  • Bug:
  • [GROOVY-9438] - Incorrect handling of particular case statements within switch
  • [GROOVY-9450] - DefaultGroovyMethods findIndexOf method can't use startIndex
  • [GROOVY-9469] - Original exception during global AST transformation no longer preserved in error message
  • [GROOVY-9483] - Console exits when Cancel is clicked on the "Save changes" dialog
  • [GROOVY-9485] - metaclass is not initialized
  • [GROOVY-9489] - package.html files being ignored during javadoc generation when building on JDK9+

New in Groovy 2.4.19 (Mar 6, 2020)

  • Bug:
  • [GROOVY-9185] - groovyc doesn't keep RetentionPolicy in generated bytecode
  • [GROOVY-9271] - Fails to compile method with parenthesis in function name
  • Dependency upgrade:
  • [GROOVY-9262] - Bump asm to 7.2
  • New Feature:
  • [GROOVY-9384] - Groovy should provide a Maven BOM

New in Groovy 2.5.10 (Mar 6, 2020)

  • Bug:
  • GROOVY-9185] - groovyc doesn't keep RetentionPolicy in generated bytecode
  • GROOVY-9204] - Compiler loses type info of superclass field
  • GROOVY-9211] - BUG! UNCAUGHT EXCEPTION on OpenJDK14-ea+8
  • GROOVY-9387] - Using this.method() in closures inside BuilderSupport subclasses doesn't dispatch properly
  • GROOVY-9396] - Captured arguments in closures are not annotated with @Generated
  • GROOVY-9409] - org.codehaus.groovy.runtime.callsite.GroovySunClassLoader is unusable
  • GROOVY-9412] - enum added to List fails TypeChecked
  • GROOVY-9424] - Incorrect handling of final variables within switch
  • Improvement:
  • GROOVY-9394] - Groovy could provide some minimal methods to assist with migrating between Groovy versions
  • GROOVY-9434] - groovyConsole UI tweak
  • New Feature
  • GROOVY-9384] - Groovy should provide a Maven BOM
  • Task:
  • GROOVY-9431] - CompilationUnit has some long unused fields/methods which should be deprecated

New in Groovy 3.0.0 RC 2 (Dec 9, 2019)

  • Bug:
  • [GROOVY-7722] - StackOverflowError when use anonymous class with generics.
  • [GROOVY-7864] - Stack overflow correcting generics when using @CompileStatic
  • [GROOVY-7996] - Using with method with a closure that references a protected property produces ClassCastException
  • [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-8315] - Looping in GroovyRecognizer.enumConstants during compilation
  • [GROOVY-8372] - GrapeIvy downloads wrong artifact for non-default conf when artifact name is not the same as the module
  • [GROOVY-8399] - ImportCustomizer is applied once per class (should be once per module)
  • [GROOVY-8423] - Private and protected inner classes have incorrect access modifier values
  • [GROOVY-8441] - IllegalAccessError when calling a public method on a field whose type is declared to be a package-private implementation one
  • [GROOVY-8446] - void[] return type causes compiler to fail
  • [GROOVY-8457] - Compiler error for @CompileStatic and @NotYetImplemented combination
  • [GROOVY-8686] - STC: type inferencing for (a instanceof C && a...) bleeds into enclosing scope
  • [GROOVY-8775] - Bug joint compilation in ant task groovyc: classpath not set
  • [GROOVY-8825] - CLONE - Conflict between @Generated and @Delegate
  • [GROOVY-8855] - Calling Matcher.asBoolean() twice returns different results
  • [GROOVY-8930] - JVM verification fails when using static interface method from inside CompileStatic groovy
  • [GROOVY-9126] - Unreachable line numbers after ARETURN in bytecode
  • [GROOVY-9173] - IllegalAccessError for class extending Java class that provides protected getProperty/setProperty
  • [GROOVY-9183] - Issue using @MapConstructor and @NamedVariant
  • [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-9238] - Groovy 2.5 AnnotationCollector not generating expected bytecode
  • [GROOVY-9245] - synthetic constructors should be ignored
  • [GROOVY-9257] - Could not create Groovysh with JDK 11 and Spring-Boot
  • [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-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
  • Dependency upgrade:
  • [GROOVY-8304] - Upgrade Apache Ivy from 2.4.0 to a newer version
  • [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
  • Documentation:
  • [GROOVY-9207] - Links in AST transforms section broken
  • Improvement:
  • [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

New in Groovy 3.0.0 RC 1 (Oct 25, 2019)

  • Bug:
  • [GROOVY-6996] - Anonymous class field initialized with an enclosing argument results in MissingPropertyException
  • [GROOVY-8815] - Inconsistent class file - undefined type parameter for trait implementer
  • [GROOVY-9031] - Traits using generics generate incorrect stub
  • [GROOVY-9059] - Failed to parse/compile generic methods with "extends"
  • [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:
  • [GROOVY-9116] - Bump ant to 1.10.7
  • [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] - Bump spotbugs gradle plugin to 2.0.0
  • [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
  • Improvement:
  • [GROOVY-8185] - Change Groovydoc processing to support antlr4 grammar including getting comments from AST
  • [GROOVY-8444] - Support unqualified enum constants in switch cases (like Java)
  • [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
  • Task:
  • [GROOVY-9254] - Split package renaming second stage

New in Groovy 2.5.5 (Dec 24, 2018)

  • Bug:
  • [GROOVY-7647] - Incorrect line information for debug
  • [GROOVY-8742] - Line number information for method is confusing debugger
  • [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-8868] - Static factory method does not compile anymore with 2.5.3 (was ok with 2.4.x)
  • [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-8914] - Error compiling static inner class that extends some other (static) inner class
  • [GROOVY-8931] - AstNodeToScriptVisitor - wrong "extends/implements" order
  • Dependency upgrade:
  • [GROOVY-8904] - Bump junit to 5.3.2 and bump junit platform to 1.3.2
  • Improvement:
  • [GROOVY-7632] - Groovy named parameters static check
  • [GROOVY-8872] - Decompiled parameter names don't reflect the names in the bytecode
  • [GROOVY-8880] - Traits - static/instance init blocks
  • [GROOVY-8894] - Improve performance of DGM `leftShift(OutputStream, InputStream)`
  • [GROOVY-8927] - String variants for take and drop

New in Groovy 2.4.16 (Dec 13, 2018)

  • Bug:
  • [GROOVY-7202] - Unable to resolve nested enum of parent class when compiling against binary parent
  • [GROOVY-7536] - Problem with Java Stubs Related to a Trait with Property
  • [GROOVY-7647] - Incorrect line information for debug
  • [GROOVY-8008] - @CompileStatic causes failure to compile Groovy class that calls overloaded Java method
  • [GROOVY-8224] - Stubs for classes implementing traits with fields don't include getters/setters
  • [GROOVY-8505] - ArrayIndexOutOfBoundsException with @Nullable change
  • [GROOVY-8531] - Fail to resolve type defined in super class written in Java
  • [GROOVY-8537] - GroovyCollections.combinations(Iterable) exhibits incorrect (asymmetric) behavior
  • [GROOVY-8539] - Groovy fails to compile assignment operators on boolean array
  • [GROOVY-8600] - BUG! exception in phase 'instruction selection'
  • [GROOVY-8614] - Invalid reference generated in InnerClasses attribute for nested interface
  • [GROOVY-8742] - Line number information for method is confusing debugger
  • [GROOVY-8757] - Incorrect bytecode produced after compiling class implementing trait with generic method
  • [GROOVY-8876] - groovydoc fails with "java.lang.StringIndexOutOfBoundsException: String index out of range: -1" on file with no extension
  • Improvement:
  • [GROOVY-4585] - backslash can not be escaped by `SimpleTemplateEngine`
  • [GROOVY-8576] - Remove Java2GroovyMain dependency on commons-cli
  • Task:
  • [GROOVY-8528] - Bump ASM to 6.1.1 in 2_4_X
  • [GROOVY-8529] - InvocationWriter also needs fix for calling static interface methods

New in Groovy 2.5.4 (Nov 12, 2018)

  • Bug:
  • [GROOVY-3278] - Using referenced String constant as value of Annotation causes compile error
  • [GROOVY-7854] - Annotation value cannot be concatenated constant
  • [GROOVY-7975] - Use of static final field in an annotation element causes compile errors
  • [GROOVY-8766] - Groovy packages not compatible with OSGi (ServiceLoader Capability)
  • [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
  • Dependency upgrade:
  • [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-8867] - Bump picocli to 3.7.0 from 3.6.0
  • Documentation:
  • [GROOVY-8848] - Named parameters documentation missing explanation for mixing multiple parameters use case
  • [GROOVY-8870] - Spread-dot operator on list of lists
  • Improvement:
  • [GROOVY-8858] - Refine GCL to avoid occupying Permanent Area/Metaspace repeatedly for same source code
  • Task:
  • [GROOVY-8864] - Backwards compatibility of traits

New in Groovy 2.5.3 (Oct 15, 2018)

  • Bug:
  • [GROOVY-7330] - Incorrect dynamic proxy creation from map when there are default methods
  • [GROOVY-8084] - Captured types doesn't work in @CompileStatic
  • [GROOVY-8090] - Incorrectly processing method-level type generics information
  • [GROOVY-8327] - Can't access static instance method before class is constructed
  • [GROOVY-8337] - STC: instanceof in ternary expression not propagating type info to true expression
  • [GROOVY-8342] - Static compilation error with a method returning an array in a type parameter
  • [GROOVY-8405] - Inherited methods with default parameters cause cause static compilation to fail
  • [GROOVY-8497] - Can't call getProperty() from Java
  • [GROOVY-8549] - Compile Static causes getAt to fail
  • [GROOVY-8669] - Groovy class does not compile if the ValueType of an annotation is not on the classpath
  • [GROOVY-8703] - Unexpected behavior with @NamedVariant on constructor
  • [GROOVY-8727] - JDK 11 Compilation Failure: ClassVisitor.visitNestMemberExperimental throws UnsupportedOperationException
  • [GROOVY-8747] - jar/zip file and input stream are not closed in grape
  • [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-8761] - Exception in phase 'instruction selection'
  • [GROOVY-8764] - Closure inside an anonymous class uses wrong outside class instance with @CS
  • [GROOVY-8768] - Unable to add Groovy indy JARs as dependency in Gradle
  • [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-8806] - Immutable classes break in groovy 2.5.2
  • [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
  • Dependency upgrade:
  • [GROOVY-8744] - bump ASM to 6.2.1
  • [GROOVY-8745] - bump ant versions
  • [GROOVY-8746] - bump bridger to 1.5.Final
  • [GROOVY-8759] - groovy.cli.picocli.CliBuilder should behave like cli.commons.CliBuilder on invalid options
  • [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-8786] - Bump picocli to 3.6.0 from 3.5.0
  • [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-8809] - Bump Spock version to 1.2-Final
  • [GROOVY-8818] - Bump asm to 7.0-beta
  • [GROOVY-8823] - Bump slf4j to 1.7.25
  • Improvement:
  • [GROOVY-8748] - CompileUnit could implement NodeMetaDataHandler to act as a "global" node for metadata
  • [GROOVY-8780] - Add `sha256` DGM
  • [GROOVY-8783] - Support Java 9/10/11 bytecode
  • [GROOVY-8784] - Prepare for supporting JDK 12 bytecode
  • [GROOVY-8812] - Make `Sql` and `BatchingStatementWrapper` implement `AutoCloseable`
  • [GROOVY-8827] - Close a small gap in the EMC DSL for constructors
  • New Feature:
  • [GROOVY-8765] - Annotate generated methods with @Generated
  • [GROOVY-8808] - Add DGM `Throwable.asString`
  • Sub-task:
  • [GROOVY-8802] - GroovyObject method implementations when supplied by Groovy compiler are now marked with @Internal

New in Groovy 2.5.2 (Aug 14, 2018)

  • Bug:
  • [GROOVY-8282] - Error while popping argument from operand stack tracker in class ...$Trait$Helper
  • [GROOVY-8403] - Trait FieldHelper is not marked synthetic
  • [GROOVY-8631] - Groovy 2.5.0 broken with Java 10.0.1 on MacOS
  • [GROOVY-8696] - TypeWrapper leaks out of DecompiledClassNode
  • [GROOVY-8711] - Some doco/comments were still referring to the groovy-all jar
  • [GROOVY-8712] - groovy ant task was still looking for jar(s) in embeddable directory
  • [GROOVY-8713] - Make groovy osgi plugin extensible to be able to use it in eclipse target platform
  • [GROOVY-8722] - final modifier for non-abstract methods in traits is ignored
  • [GROOVY-8723] - Groovy script output for 2nd and subsequent intput files
  • [GROOVY-8728] - Verifier.addDefaultParameters erases metadata if run more than once
  • [GROOVY-8730] - trait helper contains unused abstract methods
  • [GROOVY-8731] - improve error message for the case of static and instance methods with same signature when using traits
  • [GROOVY-8732] - @CompileStatic refers to private field in parent class
  • [GROOVY-8740] - groovy.util.CliBuilder doesn't handle parse errors correctly
  • Dependency upgradeL
  • [GROOVY-8700] - Bump picocli version to 3.3.0 from 3.2.0
  • [GROOVY-8738] - Bump picocli version to 3.5.0 from 3.3.0
  • Improvement:
  • [GROOVY-6716] - Cannot implement a trait via anonymous class
  • [GROOVY-8639] - @Sortable annotation is not able to use accessible parent properties
  • [GROOVY-8710] - JAXB JDK9-11 compatibility for install/dist
  • [GROOVY-8733] - Groovy could provide a chop DGM method

New in Groovy 3.0.0 Alpha 3 (Jun 26, 2018)

  • Bugs:
  • [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-7031] - @CompileStatic breaks assign in combination with dereferencing
  • [GROOVY-7204] - Static type checking and compilation fail when multiple generics in use
  • [GROOVY-7691] - Type checking error on generic property with covariant type in subclass
  • [GROOVY-7753] - regression of return type from ternary operator
  • [GROOVY-7883] - Static compiler prefers private constructor over public if private matches better
  • [GROOVY-7985] - Wrong "incompatible generic type" error
  • [GROOVY-8055] - @CompileStatic improperly orders parameter types
  • [GROOVY-8059] - STC overloaded generic method selection not using resolved types
  • [GROOVY-8171] - Escaped dollar slashy difference between old and parrot parsers
  • [GROOVY-8408] - invokeMethod cannot be set through category
  • [GROOVY-8509] - SC: error for call to protected method from same package
  • [GROOVY-8546] - Parrot Parser: multiple Reader instances opened from SourceUnit; many left open
  • [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
  • Dependency upgrade:
  • [GROOVY-8599] - Bump ivy to 2.5.0-rc1
  • [GROOVY-8636] - Bump asm to 6.2
  • [GROOVY-8661] - bump gradle to 4.8.1
  • Improvement:
  • [GROOVY-3867] - Allow methodMissing/propertyMissing to be defined through category
  • [GROOVY-8490] - Extend @Newify to support a class name pattern parameter
  • [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-8630] - Refine the parameterized type cache
  • New Feature:
  • [GROOVY-8558] - Add DGM `getLocation` to get the url of the jar containing the specified class
  • Task:
  • [GROOVY-8618] - Update docs for GroovyConsole
  • [GROOVY-8619] - Update docs for Groovy Shell
  • [GROOVY-8620] - Update docs for Grape dependency manager

New in Groovy 2.5.0 (Jun 23, 2018)

  • Bugs:
  • [GROOVY-2972] - groovy.lang.ObjectRange.size() disobeys its contract for large ranges of Long values.
  • [GROOVY-3233] - The main(args) entry point cannot be found when a class file has multiple classes and the first class extends another class.
  • [GROOVY-3395] - calling binding variable as function fails to try object's call() method
  • [GROOVY-4255] - BUG! exception in phase 'class generation' ... SpreadExpression should not be visited here
  • [GROOVY-4356] - Static members should not be able to access class-level generic types
  • [GROOVY-4787] - BUG! exception in phase 'class generation' generating class from map in closure
  • [GROOVY-4811] - exception while compiling annotation type
  • [GROOVY-4851] - NullPointerException on iterator() call
  • [GROOVY-5318] - generic types in fully-qualified class names parsing error
  • [GROOVY-5471] - Add "indy" option to Groovy Console
  • [GROOVY-5912] - Static compilation: Groovy doesn't fail compilation when accessing package scope methods, but fails at runtime
  • [GROOVY-5936] - java.lang.OutOfMemoryError through Iterator.collectEntries and others (part 2: handle others)
  • [GROOVY-6052] - ++ or -- doesn't respect final modifier
  • [GROOVY-6167] - Generics: within a single declaration, generic type definition order matters
  • [GROOVY-6212] - SpreadExpression BUG! when slicing a List
  • [GROOVY-6263] - Accessing private methods from public ones using categories and inheritance causes MissingMethodException
  • [GROOVY-6396] - same linkedlist code different behavior between groovy and java
  • [GROOVY-6454] - Can't delegate (with the @Delegate annotation) to a method whose name contains a dollar ($) character
  • [GROOVY-6523] - Improve Documentation for in DefaultGroovyMethods.intersect(..)
  • [GROOVY-6617] - joint compiler fails to compile groovy class implemented java interface
  • [GROOVY-6619] - Groovy command-line parser breaks when parsing '-n'
  • [GROOVY-6632] - CompileStatic selects wrong constructor when GString is a parameter
  • [GROOVY-6634] - Annotated enum constants breaks enum
  • [GROOVY-6659] - generic bounds ignored by type checking
  • [GROOVY-6660] - invalid generics symbol arity does not lead to compilation error
  • [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-6991] - CliBuilder.usage() fails with SIOBE if header/footer longer than 74 chars
  • [GROOVY-7013] - GroovyDoc cannot parse several .java files from java 1.7 source code
  • [GROOVY-7014] - A Java compile time error results in a runtime exception in Groovy
  • [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-7087] - @TupleConstructor and @Builder should be able to use defined setters rather than the field directly
  • [GROOVY-7151] - groovyc should accept meta annotation with ElementType.TYPE
  • [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-7259] - groovydoc only considers package level fields as properties even if you have a get and set methods declared
  • [GROOVY-7283] - DefaultGroovyMethods methods should include type information
  • [GROOVY-7325] - Verify error cloning a HashSet under CompileStatic conditions
  • [GROOVY-7385] - Invalid Integer & Long literals compile when they shouldn't
  • [GROOVY-7390] - @EqualsAndHashCode incorrect when using non-field properties
  • [GROOVY-7394] - @ToString could support non-field properties
  • [GROOVY-7417] - @EqualsAndHashCode inconsistent when using boolean properties for classes with explicit getters
  • [GROOVY-7433] - API inconsistency between takeWhile, dropWhile and collectReplacements for CharSequences
  • [GROOVY-7434] - Groovy should support resolving ambiguous signatures when using ClosureParams
  • [GROOVY-7440] - Improve ClosureParam type hints for various splitEachLine GroovyMethod methods
  • [GROOVY-7443] - instantiating a class withTraits does not use the classloader of the trait
  • [GROOVY-7465] - ResourceGroovyMethods/NioGroovyMethods BOM behavior is inconsistent
  • [GROOVY-7522] - TupleConstructor overwrites empty default constructors
  • [GROOVY-7523] - TupleConstructor with empty includes includes all
  • [GROOVY-7529] - Fix up transforms (apart from TupleConstructor) which are affected by empty includes default
  • [GROOVY-7562] - imports and custom class defs not working in Groovysh Interpreter Mode
  • [GROOVY-7566] - Groovysh command arguments parser does not handle escaped blanks
  • [GROOVY-7567] - Groovysh File completion with hyphens broken
  • [GROOVY-7573] - Groovyc ant task does not release file handles
  • [GROOVY-7585] - ObjectRange strange semantics for mismatched arguments
  • [GROOVY-7608] - Comparison of decimal subclasses of Number with == fails
  • [GROOVY-7624] - Collection asImmutable() methods aren't immutable
  • [GROOVY-7636] - NumberMath.getMath suboptimal choice for custom Numbers
  • [GROOVY-7637] - DefaultTypeTransformation.compareTo not symmetrical
  • [GROOVY-7655] - Wrong method is chosen when using super with generics
  • [GROOVY-7673] - Remove synchronized methods of groovy.sql.Sql and document it as not thread-safe
  • [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-7750] - @Lazy allows instantiation of abstract class
  • [GROOVY-7753] - regression of return type from ternary operator
  • [GROOVY-7803] - Java annotation with @Target(TYPE) on an annotation
  • [GROOVY-7827] - Allow groovyc ant task to select all available target bytecode versions
  • [GROOVY-7828] - Created a class loader that override loadClass can calls protected methods results in VerifyError
  • [GROOVY-7837] - TupleConstructor should provide pre and post annotation attributes like MapConstructor
  • [GROOVY-7840] - Verifier#makeDescriptorWithoutReturnType uses ClassNode#toString with generics
  • [GROOVY-7852] - Inconsistent checking of final for multi-assignments
  • [GROOVY-7853] - o.c.g.r.t.DefaultTypeTransformation does not apply the right toString on primitve arrays when transforming to String
  • [GROOVY-7862] - Statically compiled calls to protected methods of an outerclass' superclass result in IllegalAccessErrors
  • [GROOVY-7865] - Better error message in the presence of Generics arity errors
  • [GROOVY-7883] - Static compiler prefers private constructor over public if private matches better
  • [GROOVY-7892] - CLONE - ClassCastException when calling DefaultTypeTransformation#compareEqual
  • [GROOVY-7902] - collate() infinite loop with zeroed step
  • [GROOVY-7920] - Simple getAt example produces a BUG exception
  • [GROOVY-7931] - javadoc generation fails for non-indy build
  • [GROOVY-7937] - CLONE - same linkedlist code different behavior between groovy and java (fix priority of DGM methods vs actual methods on an object)
  • [GROOVY-7960] - IntRange iterator returns null instead of NoSuchElementException
  • [GROOVY-7961] - ObjectRange iterator returns null instead of NoSuchElementException
  • [GROOVY-7967] - AstNodeToScriptAdapter should output source using the recommended modifier order
  • [GROOVY-7970] - Can't call private method from outer class when using anonymous inner classes and @CS
  • [GROOVY-7985] - Wrong "incompatible generic type" error
  • [GROOVY-8013] - The checking of property names during AST transform attribute processing doesn't take into account includeSuperProperties
  • [GROOVY-8016] - @TupleConstructor could use the order of properties listed in 'includes' when that option is used
  • [GROOVY-8033] - STC: spread property references fails in static method
  • [GROOVY-8043] - NPE compiling Memoized method
  • [GROOVY-8046] - ClassFormatError void field
  • [GROOVY-8055] - @CompileStatic improperly orders parameter types
  • [GROOVY-8059] - STC overloaded generic method selection not using resolved types
  • [GROOVY-8072] - AstBrowser source view does not generate labels for statements
  • [GROOVY-8086] - Bump gradle version to 3.3 on master
  • [GROOVY-8087] - bump log4j2 version
  • [GROOVY-8093] - Final variable analysis broken within closure fields
  • [GROOVY-8094] - Final variable analysis giving incorrect message within nested if
  • [GROOVY-8120] - Bump commons cli version to 1.4
  • [GROOVY-8144] - Invoking a public method declared in a non-public class result in a IllegalAccessError
  • [GROOVY-8163] - Groovy scripts can disable java security manager and escape sandbox
  • [GROOVY-8176] - tap - exception in phase 'instruction selection'
  • [GROOVY-8186] - Builder ExternalStrategy constructors have trouble with private fields
  • [GROOVY-8200] - Shorthand |= results in NPE
  • [GROOVY-8205] - Static type checking failure for enums
  • [GROOVY-8211] - ArrayIndexOutOfBoundsException at compilation when accessing a generic type with the wrong number of type parameters
  • [GROOVY-8230] - Deadlock in GroovyClassLoader
  • [GROOVY-8241] - SAM parameter type inference for explicit parameter
  • [GROOVY-8251] - Implement withCloseable on AutoCloseable
  • [GROOVY-8252] - AIOOBE in combination of ncurry and rcurry
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8303] - VerifyError for nested class this call to static method
  • [GROOVY-8316] - Project sourceSet for antlr seems wrong
  • [GROOVY-8317] - Smart type inference doesn't work on explicit closure params
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • [GROOVY-8338] - Calling Stream.of from groovy class in JDK 9 fails
  • [GROOVY-8343] - Issue implementing Java interface
  • [GROOVY-8347] - Extend AutoFinal to closures and inner class within a class
  • [GROOVY-8356] - Use javax.validation 2.0 API results in GroovyBugError
  • [GROOVY-8360] - Enums that are nested classes do not have the static modifier set
  • [GROOVY-8367] - @Memoized not working for inner classes
  • [GROOVY-8386] - Final variable analysis broken with try/catch/finally
  • [GROOVY-8387] - Invalid module-info.class in jar artifacts
  • [GROOVY-8408] - invokeMethod cannot be set through category
  • [GROOVY-8416] - Map-based constructor generated by @Immutable works only with HashMap
  • [GROOVY-8429] - Jar files under indy directory of distribution miss the file extension(i.e. jar)
  • [GROOVY-8430] - @Field doesn't support final fields
  • [GROOVY-8432] - Weird behavior parsing dates
  • [GROOVY-8435] - @Immutable should use the cache setting of @ToString
  • [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-8453] - @TupleConstructor ignoring inherited standard Java Beans properties
  • [GROOVY-8455] - @TupleConstructor gives wrong ordering when includeSuperFields is set
  • [GROOVY-8456] - @MapConstructor could provide a noArg flag
  • [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-8482] - Build refactor impacts on release process
  • [GROOVY-8483] - groovy-all v2.5.0-beta-3 is missing from bintray
  • [GROOVY-8484] - Duplicate zip file entries in Groovy 2.5.0-beta-3 source jars on Maven Central
  • [GROOVY-8486] - Closure executed multiple times even if memoized
  • [GROOVY-8509] - SC: error for call to protected method from same package
  • [GROOVY-8515] - groovy.g no longer included in sources jars
  • [GROOVY-8523] - Static type checking instanceof
  • [GROOVY-8531] - Fail to resolve type defined in super class written in Java
  • [GROOVY-8537] - GroovyCollections.combinations(Iterable) exhibits incorrect (asymmetric) behavior
  • [GROOVY-8538] - <T> static type checking, generics, and collect
  • [GROOVY-8541] - Incorrect packaging in groovy-all pom
  • [GROOVY-8545] - DGM#intersect(Set, Iterable) throws ClassCastException if Iterable larger than Set
  • [GROOVY-8562] - Wrong Closure delegation for property access when using @CompileStatic and DELEGATE_FIRST / DELEGATE_ONLY
  • [GROOVY-8579] - No bytecode level check is done before producing JDK8+ bytecodes
  • [GROOVY-8589] - GrapeMain bugfix: should not show error about missing mandatory args when --help or --version is specified
  • [GROOVY-8590] - STC incorrectly infers type of nested method call used in a return stmt
  • [GROOVY-8600] - BUG! exception in phase 'instruction selection'
  • Dependency upgrade:
  • [GROOVY-5282] - upgrade Apache Commons CLI to version 1.3
  • [GROOVY-7334] - update spock to 1.0
  • [GROOVY-7335] - Update SLF4J to 1.7.10
  • [GROOVY-7418] - upgrade xstream to 1.4.8 and also exclude optional xmlpull dependency
  • [GROOVY-7421] - upgrade gradle to 2.4
  • [GROOVY-7430] - upgrade testng dependency for groovy-testng to 6.9.4
  • [GROOVY-7455] - Upgrade Ant to 1.9.5
  • [GROOVY-7458] - Upgrade XmlUnit to 1.6
  • [GROOVY-7471] - Upgrade commons cli to 1.3.1
  • [GROOVY-7491] - Upgrade Ant to 1.9.6
  • [GROOVY-7516] - upgrade gradle to 2.5
  • [GROOVY-7606] - Upgrade gradle to 2.7
  • [GROOVY-7607] - Upgrade Log4J2 to 2.3
  • [GROOVY-7634] - Update Logback version to 1.1.6
  • [GROOVY-7642] - Bump gradle to 2.8
  • [GROOVY-7653] - Update SLF4J version to 1.7.19
  • [GROOVY-7680] - Bump gradle to version 2.9
  • [GROOVY-7724] - Upgrade gradle to 2.10
  • [GROOVY-7752] - Bump Gradle version to 2.11
  • [GROOVY-7791] - Update JLine to 2.14.2
  • [GROOVY-7792] - Update ASM to 5.1
  • [GROOVY-7795] - Upgrade xstream to 1.4.9
  • [GROOVY-7823] - Bump Ant version to 1.9.7
  • [GROOVY-7830] - Bump Gradle version to 2.13
  • [GROOVY-7831] - bump logging dependency versions
  • [GROOVY-7899] - Bump servlet-api version to 3.0.1
  • [GROOVY-7901] - bump jansi version to 1.13
  • [GROOVY-7943] - bump to Gradle 3.1
  • [GROOVY-8009] - Bump gradle version to 3.2.1
  • [GROOVY-8010] - Bump jarjar version to 1.4.1
  • [GROOVY-8075] - Bump Ant version to 1.9.9
  • [GROOVY-8291] - Bump XStream version to 1.4.10
  • [GROOVY-8504] - Bump ASM version to 6.1
  • [GROOVY-8533] - Bump jansi to 1.17
  • [GROOVY-8534] - Bump jline to 2.14.6
  • [GROOVY-8608] - Bump picocli version to 3.0.2 from 3.0.1
  • Epic:
  • [GROOVY-8556] - Migrate classes depending on commons-cli to picocli
  • Improvements:
  • [GROOVY-3270] - GroovyConsole: Configurable output area size
  • [GROOVY-3867] - Allow methodMissing/propertyMissing to be defined through category
  • [GROOVY-3976] - Alternative to "with" called "tap" that has an implicate "return delegate"
  • [GROOVY-4024] - Don't use classloader for analyzing compiled classes in groovyc
  • [GROOVY-4585] - backslash can not be escaped by `SimpleTemplateEngine`
  • [GROOVY-4847] - Missing GDK rounding methods for BigDecimal
  • [GROOVY-5380] - Add Ctrl+B for word/line/block selection
  • [GROOVY-5426] - ObjectRange.iterator() is reliant on size()
  • [GROOVY-6027] - groovy -h could be more clear
  • [GROOVY-6319] - Canonical annotation should become a meta annotation
  • [GROOVY-6514] - groovysh should offer easier access to grapes
  • [GROOVY-6537] - Support getParsedOptionValue() in OptionAccessor.getProperty()
  • [GROOVY-6538] - Support default value for OptionAccessor.getProperty()
  • [GROOVY-6555] - Allow @Immutable classes to validate their properties upon construction
  • [GROOVY-6854] - JsonOutput should be configurable with ISO 8601 UTC time zone instead of GMT
  • [GROOVY-6928] - Support all the Java 6 classes at createSimilarCollection() and createSimilarMap()
  • [GROOVY-6975] - Provide an option to deactivate escaping in JSON serialization
  • [GROOVY-7078] - make @Immutable play nice with constructor injection
  • [GROOVY-7162] - Handle @Immutable in class hierarchy?
  • [GROOVY-7227] - AST transformations relating to properties/fields should validate their includes/excludes lists
  • [GROOVY-7239] - Allow optimized array access in static compiled code with indy
  • [GROOVY-7360] - @EqualsAndHashCode generated hashcode values can be made more collision proof
  • [GROOVY-7383] - Make CompilerConfiguration.ALLOWED_JDKS public
  • [GROOVY-7422] - @AnnotationCollector could provide more control over how annotations are added in the presence of existing explicit annotations
  • [GROOVY-7423] - Access to Method parameter names at runtime
  • [GROOVY-7426] - Add "Clear Output" Toolbar button to Groovy Console
  • [GROOVY-7427] - TupleConstructor should allow a mechanism to switch off automatic parameter defaults
  • [GROOVY-7486] - groovy.util.Node.depthFirst should provide a way to specify pre-order, post-order ordering
  • [GROOVY-7488] - Depth 1st and Breath 1st taking a closure
  • [GROOVY-7540] - Add a method to StringGroovyMethods for replacing String pairs supplied as a Map
  • [GROOVY-7552] - add org.codehaus.groovy.runtime.DefaultGroovyMethods.isEmpty(Iterable)
  • [GROOVY-7563] - InvokerHelper formatting methods have inconsistent API
  • [GROOVY-7565] - Groovysh tab completion should provide trailing spaces only when expecting more arguments
  • [GROOVY-7569] - PowerAsserts should print results more verbosely and safer
  • [GROOVY-7572] - Add withAutoClosable method
  • [GROOVY-7574] - Range members should be final
  • [GROOVY-7599] - @Immutable should recognize JSR-310 classes
  • [GROOVY-7600] - @Immutable support for Optional?
  • [GROOVY-7611] - java.util.Optional should evaluate to false if empty
  • [GROOVY-7616] - collectEntries throws cryptic error when used with split(delimiter, limit)
  • [GROOVY-7629] - ObjectRange methods duplicate functionality and should not rely on size()
  • [GROOVY-7640] - @Builder should have an option to include superclass properties
  • [GROOVY-7643] - Update GrapeIvy.groovy: set ivyInstance to IvyContext, for speed up
  • [GROOVY-7672] - TupleConstructor should have only SOURCE retention policy
  • [GROOVY-7769] - Allow @Delegate Annotation on a getter
  • [GROOVY-7825] - Enhance Groovy's CliBuilder to support annotation style definitions
  • [GROOVY-7877] - The Range abstraction could support numeric ranges where the items in the range differ by some step size different to 1
  • [GROOVY-7893] - LexerFrame could be made more general purpose and made accessible from GroovyConsole
  • [GROOVY-7905] - ListWithDefault DGM methods aren't type inference friendly
  • [GROOVY-7911] - Chained multiple assignment parsing fail
  • [GROOVY-7941] - MissingMethodException should limit argument types in getMessage()
  • [GROOVY-7981] - Not public constructors for groovy.transform.Immutable anotated class
  • [GROOVY-8011] - @ToString if used with includes='prop1,prop2' could allow the pseudo prop name 'super' as an alternative to using the includeSuper flag
  • [GROOVY-8014] - @ToString could output properties in a predefined order when 'includes' is used
  • [GROOVY-8088] - For @MapConstructor and @TupleConstructor we should provide a default undefined value for better Java compatibility
  • [GROOVY-8114] - Include correct time unit in timeout error message
  • [GROOVY-8197] - Make JUnit3/4 GroovyRunners
  • [GROOVY-8218] - Allow to specify reverse order for @Sortable
  • [GROOVY-8259] - add suppressed exceptions for with[Auto]Closeable methods
  • [GROOVY-8351] - groovy-starter.conf could be extended to support configscript
  • [GROOVY-8353] - groovyConsole should support -Dname=value setting of system properties
  • [GROOVY-8406] - DefaultGroovyMethods missing Array support
  • [GROOVY-8410] - Provide a common cache
  • [GROOVY-8428] - Add DGM startsWithAny(String...) and endsWithAny(String...)
  • [GROOVY-8440] - @Immutable annotation should be re-vamped to be a meta-annotation
  • [GROOVY-8464] - Allow rendering inline json
  • [GROOVY-8465] - @ToString should support the includeSuperFields annotation attribute
  • [GROOVY-8472] - Final variable analysis doesn't account for early exit for try/catch/finally
  • [GROOVY-8477] - @Immutable-related transformations should be more configurable
  • [GROOVY-8480] - org.codehaus.groovy.runtime.ExtensionModule should move to META-INF/groovy
  • [GROOVY-8490] - Extend @Newify to support a class name pattern parameter
  • [GROOVY-8510] - Safe number parsing methods for more convenient XML parsing
  • [GROOVY-8520] - Replace commons-cli with picocli in CliBuilder
  • [GROOVY-8521] - Create new groovy-cli-commons module
  • [GROOVY-8548] - DGM#intersect should provide a variant with a comparator
  • [GROOVY-8567] - Migrate Groovyc to picocli
  • [GROOVY-8569] - Migrate groovy.ui.GroovyMain to picocli
  • [GROOVY-8576] - Remove Java2GroovyMain dependency on commons-cli
  • [GROOVY-8577] - Migrate org.codehaus.groovy.tools.GrapeMain.groovy to picocli
  • [GROOVY-8592] - Migrate command line tools to picocli version of CliBuilder
  • [GROOVY-8593] - DocGenerator could be moved to avoid split packages - part (1)
  • [GROOVY-8596] - SqlGroovyMethods could be moved to avoid split packages - part (1)
  • [GROOVY-8601] - Groovy should have a runner for JUnit5 tests
  • [GROOVY-8604] - Cache the parameterized type for better performance
  • [GROOVY-8605] - Autocompletion for Groovy command line tools
  • [GROOVY-8607] - CliBuilder should ignore 'opt' property if provided within a Map of arguments
  • New features:
  • [GROOVY-6744] - Have the elvis operator (?:) support the Optional type in Java 8
  • [GROOVY-7089] - Base64 URL Safe encoder
  • [GROOVY-7313] - "relativePath" extension method
  • [GROOVY-7353] - Groovy should provide a MapConstructor AST transform
  • [GROOVY-7479] - Groovy should provide "inits" and "tails" DGM methods for lists
  • [GROOVY-7657] - add groovy macro module
  • [GROOVY-7745] - Add Map#removeAll(Closure) and Map#retainAll(Closure)
  • [GROOVY-7746] - Add BufferedIterator and Groovy JDK methods for it
  • [GROOVY-7755] - Add Extension Methods for JAXB Marshalling and Unmarshalling Support
  • [GROOVY-7860] - Groovy could implement an @AutoImplement transform
  • [GROOVY-7956] - Provide an AST transformation which improves named parameter support
  • [GROOVY-8091] - Add a ASMifier tab to AstBrowser
  • [GROOVY-8095] - Provide logging for bytecode generation
  • [GROOVY-8138] - Compile static to support streams
  • [GROOVY-8234] - Add @Repeatable java8 annotation support
  • [GROOVY-8300] - Groovy should have an @AutoFinal annotation
  • [GROOVY-8334] - Java 8 Date/Time type support in Groovy JDK
  • [GROOVY-8352] - Add a @Generated annotation to mark generated members
  • [GROOVY-8500] - Support logging the stacktrace of bytecode generation
  • [GROOVY-8516] - Add DGM `md5`
  • [GROOVY-8518] - Add DGM `digest`
  • [GROOVY-8558] - Add DGM `getLocation` to get the url of the jar containing the specified class
  • [GROOVY-8559] - CLONE - Add @Repeatable java8 annotation support
  • Sub-tasks:
  • [GROOVY-1628] - Inconsistent checking of final
  • [GROOVY-4636] - GroovyConsole AST Browser does not show object initializer statements
  • [GROOVY-5501] - When inspecting the AST, it would be nice to have the node metadata properties listed too
  • [GROOVY-8226] - JSR308 initial plumbing tweaks
  • Tasks:
  • [GROOVY-6780] - Provide an improved FileNameCompleter inheriting functionality from the latest class where possible
  • [GROOVY-7429] - CLONE - upgrade Apache Commons CLI to version 1.3 - migrate OptionBuilder to Option.builder()
  • [GROOVY-8379] - Rework groovy-json FastStringUtils
  • [GROOVY-8501] - Switch internal details of @ImmutableBase existing constructor validation
  • [GROOVY-8525] - Binary compatibility issue for GroovyClassLoader between 2.4 vs later branches
  • [GROOVY-8557] - Verify that CliBuilder-based applications work correctly with picocli version of CliBuilder
  • [GROOVY-8588] - Tweak new groovyc implementation for consistent use of -v and -V switches
  • Wish:
  • [GROOVY-6090] - Reimplement CliBuilder over another CLI API

New in Groovy 2.5.0 RC 3 (May 23, 2018)

  • Bug:
  • [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-7031] - @CompileStatic breaks assign in combination with dereferencing
  • [GROOVY-7204] - Static type checking and compilation fail when multiple generics in use
  • [GROOVY-7691] - Type checking error on generic property with covariant type in subclass
  • [GROOVY-7753] - regression of return type from ternary operator
  • [GROOVY-7883] - Static compiler prefers private constructor over public if private matches better
  • [GROOVY-7985] - Wrong "incompatible generic type" error
  • [GROOVY-8055] - @CompileStatic improperly orders parameter types
  • [GROOVY-8059] - STC overloaded generic method selection not using resolved types
  • [GROOVY-8408] - invokeMethod cannot be set through category
  • [GROOVY-8509] - SC: error for call to protected method from same package
  • [GROOVY-8579] - No bytecode level check is done before producing JDK8+ bytecodes
  • [GROOVY-8589] - GrapeMain bugfix: should not show error about missing mandatory args when --help or --version is specified
  • Epic:
  • [GROOVY-8556] - Migrate classes depending on commons-cli to picocli
  • Improvement:
  • [GROOVY-3867] - Allow methodMissing/propertyMissing to be defined through category
  • [GROOVY-8520] - Replace commons-cli with picocli in CliBuilder
  • [GROOVY-8567] - Migrate Groovyc to picocli
  • [GROOVY-8569] - Migrate groovy.ui.GroovyMain to picocli
  • [GROOVY-8576] - Remove Java2GroovyMain dependency on commons-cli
  • [GROOVY-8577] - Migrate org.codehaus.groovy.tools.GrapeMain.groovy to picocli
  • Task:
  • [GROOVY-8379] - Rework groovy-json FastStringUtils
  • [GROOVY-8557] - Verify that CliBuilder-based applications work correctly with picocli version of CliBuilder
  • [GROOVY-8588] - Tweak new groovyc implementation for consistent use of -v and -V switches

New in Groovy 2.4.15 (Mar 27, 2018)

  • Bug:
  • [GROOVY-8422] - Incorrect properties copy in Sql.newInstance
  • [GROOVY-8439] - @CompileStatic cannot compile generic class's static method
  • [GROOVY-8475] - CLONE - I am unable to instantiate objects using the "new" keyword
  • [GROOVY-8489] - CLONE - Invalid module-info.class in jar artifacts
  • [GROOVY-8494] - CLONE - Calling Stream.of from groovy class in JDK 9 fails
  • [GROOVY-8514] - NullPointerException in class MissingMethodException

New in Groovy 2.6.0 Alpha 3 (Mar 6, 2018)

  • Bug:
  • [GROOVY-7061] - Type inference not working for Collections.sort()
  • [GROOVY-8241] - SAM parameter type inference for explicit parameter
  • [GROOVY-8317] - Smart type inference doesn't work on explicit closure params
  • [GROOVY-8377] - hashCode() generated by @EqualsAndHashCode is inefficient for instances with null fields or properties
  • [GROOVY-8387] - Invalid module-info.class in jar artifacts
  • [GROOVY-8407] - antlr4 jar file has not been repackaged into groovy-all-2.6.0-XXX-indy.jar
  • [GROOVY-8432] - Weird behavior parsing dates
  • [GROOVY-8436] - IOException "Stream closed" occurred when rebuilding Apache Groovy in IntelliJ IDEA
  • [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-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
  • Improvement:
  • [GROOVY-8410] - Provide a common cache
  • [GROOVY-8428] - Add DGM startsWithAny(String...) and endsWithAny(String...)
  • [GROOVY-8464] - Allow rendering inline json
  • [GROOVY-8466] - Support native lambda in static compilation mode
  • [GROOVY-8473] - Bump asm version to 6.1-beta2

New in Groovy 2.4.14 (Mar 2, 2018)

  • Bug:
  • [GROOVY-6888] - Static type checking fails if I change the closure input parameter name
  • [GROOVY-7061] - Type inference not working for Collections.sort()
  • [GROOVY-7929] - @SelfType compilation fail
  • [GROOVY-8241] - SAM parameter type inference for explicit parameter
  • [GROOVY-8295] - Groovyc ant task can overflow Windows command line if classpath is large
  • [GROOVY-8317] - Smart type inference doesn't work on explicit closure params
  • [GROOVY-8362] - Nested class is resolved via another nested class with package name
  • [GROOVY-8402] - GroovyScriptEngine.ScriptClassLoader applies compilation customizers twice
  • [GROOVY-8432] - Weird behavior parsing dates
  • [GROOVY-8438] - Running grape causes an exception
  • [GROOVY-8445] - Static analysis does not work properly when coercing Closure to FunctionInterface
  • [GROOVY-8474] - 'Unexpected super property set for:' when accessing super class property via super.propertyName
  • Improvement:
  • [GROOVY-8428] - Add DGM startsWithAny(String...) and endsWithAny(String...)

New in Groovy 2.4.13 (Dec 7, 2017)

  • Bug:
  • [GROOVY-7315] - CompileStatic/TypeChecked cannot create non-static nested inner class using named-arg short-hand syntax
  • [GROOVY-7721] - Static type checking fails when compiling against a Java8 interface with inherited methods
  • [GROOVY-7995] - Short syntax of closure call invokes wrong closure if wrapped in another closure and @CompileStatic is applied
  • [GROOVY-8042] - groovyConsole gets confused with a slashy string with an escaped forward slash
  • [GROOVY-8112] - NPE in Groovy compiler when referencing @Field in aic
  • [GROOVY-8208] - VariableExpressionTransformer does not set source position on property expressions
  • [GROOVY-8213] - Closures are maybe not Threadsafe
  • [GROOVY-8220] - GroovyCastException with CompileStatic
  • [GROOVY-8222] - AsmClassGenerator does not set source positions on property expressions
  • [GROOVY-8240] - Compilation error in @CompileStatic
  • [GROOVY-8242] - Javadoc for Newify is missing some attribute values
  • [GROOVY-8245] - @Newify(auto=false) causing error (in Groovy Web Console)
  • [GROOVY-8246] - AIOOBE in StaticTypeCheckingVisitor with SAM
  • [GROOVY-8247] - AIOOBE in StaticTypeCheckingVisitor with SAM and explicit closure parameter
  • [GROOVY-8249] - @Newify on local variable declaration fails to resolve class expression
  • [GROOVY-8252] - AIOOBE in combination of ncurry and rcurry
  • [GROOVY-8255] - Odd problems with flow typing and generics in Groovy 2.4.12+
  • [GROOVY-8260] - Static compilation requires casting inside instanceof check
  • [GROOVY-8261] - Faulty getText implementations for ExpressionStatement & ThrowStatement
  • [GROOVY-8262] - GrabAnnotationTransformation.visit has unreachable code
  • [GROOVY-8268] - ReturnStatement.toString() doesn't include its expression
  • [GROOVY-8271] - Take/TakeRight methods on iterator needlessly calls hasNext for one too many elements
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8289] - STC and default value in ctor is causing debugging error
  • [GROOVY-8294] - Return 404 for non-existing paths in `TemplateServlet` when running from .war
  • [GROOVY-8295] - Groovyc ant task can overflow Windows command line if classpath is large
  • [GROOVY-8313] - NullPointerException in TypeResolver when using generic array return type
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8324] - Enabling groovy.indy.logging can lead to stack overflows
  • [GROOVY-8325] - @CompileStatic calls wrong newInstance method.
  • [GROOVY-8326] - @Override should not copied onto methods generated by applying @Memoize
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • [GROOVY-8336] - Static compilation requires casting inside instanceof check (additional cases)
  • [GROOVY-8341] - GDK: eachDirRecurse and eachFileRecurse are NOT depth-first
  • [GROOVY-8357] - EncodingGroovyMethods.decodeBase64() throws "bad character in base64 value" when meets t r
  • [GROOVY-8369] - Enum property access not working with @CompileStatic
  • [GROOVY-8380] - Regression in 2.4.13-SNAPSHOT: x & y, x | y, x ^ y lose typing information
  • [GROOVY-8382] - Target Typing for empty collections should work for field/property initialisers
  • [GROOVY-8383] - OptimizerVisitor#setConstField not @CS friendly
  • [GROOVY-8384] - Regression in 2.4.13 (snapshot) with STC and intdiv
  • Documentation:
  • [GROOVY-8257] - Incorrect package for Mixin AST transform in online docs
  • [GROOVY-8269] - Unclear/incorrect definition of default behavior for trait multiple inheritence conflicts
  • [GROOVY-8374] - Incorrect modifier listed in Properties description
  • Improvement:
  • [GROOVY-8376] - Add @DelegatesTo to SwingBuilder methods that call setDelegate
  • New Feature:
  • [GROOVY-8236] - Report more meaningful error for versions of Groovy not supporting @Repeatable
  • Task:
  • [GROOVY-8291] - Bump XStream version to 1.4.10

New in Groovy 3.0.0 Alpha 1 (Nov 29, 2017)

  • Bug:
  • [GROOVY-7573] - Groovyc ant task does not release file handles
  • [GROOVY-7721] - Static type checking fails when compiling against a Java8 interface with inherited methods
  • [GROOVY-8277] - [Parrot]Fix gls.syntax.MethodCallValidationTest#testDeclarationInMethodCall
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • [GROOVY-8377] - hashCode() generated by @EqualsAndHashCode is inefficient for instances with null fields or properties
  • Task:
  • [GROOVY-8290] - Bump Ant version to 1.10.1
  • [GROOVY-8291] - Bump XStream version to 1.4.10

New in Groovy 2.6.0 Alpha 2 (Nov 15, 2017)

  • Bug:
  • [GROOVY-7573] - Groovyc ant task does not release file handles
  • [GROOVY-7721] - Static type checking fails when compiling against a Java8 interface with inherited methods
  • [GROOVY-8277] - [Parrot]Fix gls.syntax.MethodCallValidationTest#testDeclarationInMethodCall
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8311] - [Parrot]Failed to check duplicated parameters properly
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • [GROOVY-8332] - Packaging issue for Antlr4-related jars
  • Improvement:
  • [GROOVY-4018] - Make the Groovy truth value of NaN be false
  • [GROOVY-8312] - [Parrot]Deprecate useless features on unicode sequences

New in Groovy 2.5.0 Beta 2 (Oct 6, 2017)

  • Brainstorming:
  • [GROOVY-8197] - Make JUnit3/4 GroovyRunners
  • Bug:
  • [GROOVY-7573] - Groovyc ant task does not release file handles
  • [GROOVY-7721] - Static type checking fails when compiling against a Java8 interface with inherited methods
  • [GROOVY-8163] - Groovy scripts can disable java security manager and escape sandbox
  • [GROOVY-8186] - Builder ExternalStrategy constructors have trouble with private fields
  • [GROOVY-8200] - Shorthand |= results in NPE
  • [GROOVY-8205] - Static type checking failure for enums
  • [GROOVY-8230] - Deadlock in GroovyClassLoader
  • [GROOVY-8251] - Implement withCloseable on AutoCloseable
  • [GROOVY-8288] - [Sql] withBatch fails when batchSize == number of addBatch call
  • [GROOVY-8303] - VerifyError for nested class this call to static method
  • [GROOVY-8316] - Project sourceSet for antlr seems wrong
  • [GROOVY-8319] - Improve smart type on list expresions
  • [GROOVY-8330] - Wrong 'Inconvertible types' error on casting interface
  • Improvement:
  • [GROOVY-7569] - PowerAsserts should print results more verbosely and safer
  • [GROOVY-8218] - Allow to specify reverse order for @Sortable
  • [GROOVY-8259] - add suppressed exceptions for with[Auto]Closeable methods
  • New Feature:
  • [GROOVY-8095] - Provide logging for bytecode generation
  • [GROOVY-8234] - Add @Repeatable java8 annotation support
  • [GROOVY-8300] - Groovy should have an @AutoFinal annotation
  • Sub-task:
  • [GROOVY-8226] - JSR308 initial plumbing tweaks
  • Task:
  • [GROOVY-6780] - Provide an improved FileNameCompleter inheriting functionality from the latest class where possible

New in Groovy 2.6.0 Alpha 1 (Sep 14, 2017)

  • Bug:
  • [GROOVY-3472] - Wrong line/column numbers for method and closure blocks
  • [GROOVY-4095] - Labeled statements have wrong source position
  • [GROOVY-4438] - Use of an inner enum causes compilation to go into infinite loop
  • [GROOVY-4757] - Can't compile method with generic signatures and default visibiliy access
  • [GROOVY-4761] - Incorrect source location for method call expression
  • [GROOVY-4762] - Numbers as properties in command expressions
  • [GROOVY-5309] - Wrong line/col info for binary expressions
  • [GROOVY-5310] - Wrong line/col info for statements with whitespace before EOL
  • [GROOVY-5311] - Wrong line/col info for GStrings
  • [GROOVY-5312] - Wrong line/col info for MapEntryExpressions
  • [GROOVY-5313] - Wrong line/col info for SpreadMapExpressions
  • [GROOVY-5652] - Semicolon required after coercing to a parameterized (generic) type containing a parameterized (generic) type as its only or last type argument when there is no space between the ending ">>"
  • [GROOVY-6038] - Ability to declare inner annotation types
  • [GROOVY-7218] - && operator is not handled correctly in some cases when it starts a new line
  • [GROOVY-8131] - Statement continued onto next line is flagged when first character is "="
  • [GROOVY-8150] - Inconsistency in multiple assignment with single variable
  • [GROOVY-8161] - Empty statement before semicolon with parrot parser
  • [GROOVY-8216] - invalid octal split into two arguments
  • [GROOVY-8253] - Groovy console fails to launch
  • Improvement:
  • [GROOVY-3898] - Allow the specification of types when initializing multiple iteration variables in a "for" construct
  • [GROOVY-5306] - Add "a ?= 2" support: should be expanded to "a = a == null ? 2 : a"
  • [GROOVY-7772] - Class.&instanceMethod had better to have same meaning of Class::instanceMethod of Java8
  • [GROOVY-7977] - Refine the implementation of LRUCache
  • [GROOVY-8165] - Parrot parser could be made to work on jdk7
  • New Feature:
  • [GROOVY-2840] - Support "not" for in and instanceof
  • [GROOVY-3791] - Array initializer fails
  • [GROOVY-5348] - Implement do/while loop
  • [GROOVY-6336] - Support Java 7 ARM blocks
  • Question:
  • [GROOVY-8102] - Does/could Groovy support multiple variable definitions in for loop?
  • Sub-task:
  • [GROOVY-1588] - Better error messages when using Java's array init syntax
  • [GROOVY-2324] - grammar forces usage of lowercase names for commands
  • [GROOVY-8228] - JSR308 grammar changes
  • Task:
  • [GROOVY-5299] - antlr 4 grammar creation task

New in Groovy 2.4.12 (Jun 26, 2017)

  • Bug:
  • [GROOVY-7535] - Groovy category throwing MissingMethodException and MissingPropertyException when using multiple threads
  • [GROOVY-7654] - Iterable as List and Iterable.asList() have different semantics
  • [GROOVY-7979] - JsonSlurper parses a single minus character as a number
  • [GROOVY-8056] - GroovyCodeSource(URL) can leak a file handler
  • [GROOVY-8074] - @CompileStatic class property accessed instead of map property
  • [GROOVY-8135] - SecureASTCustomizer whitelist does not work
  • [GROOVY-8157] - Flow typing doesn't work with assignment to a parameter
  • [GROOVY-8166] - Repeated operations in AnnotationCollectorTransform and Traits
  • [GROOVY-8174] - Groovy.Sql+Oracle parameter substitution problem
  • [GROOVY-8178] - Codenarc broken in quality build
  • [GROOVY-8193] - TraitReceiverTransformer does not set source position on property expressions
  • [GROOVY-8203] - Add @Newify will cause ?. operator NPE
  • [GROOVY-8204] - @Delegate on arrays causes NPE during compilation
  • [GROOVY-8229] - nested try-catch-finally handling inside Closures generates wrong bytecode
  • Documentation
  • [GROOVY-8170] - Error in note 1 for pseudo-properties: should be "writing" not "reading"
  • Sub-task
  • [GROOVY-8235] - JSR308 avoid compiler errors for legacy versions

New in Groovy 2.5.0 Beta 1 (Jun 6, 2017)

  • Bug:
  • [GROOVY-4851] - NullPointerException on iterator() call
  • [GROOVY-7840] - Verifier#makeDescriptorWithoutReturnType uses ClassNode#toString with generics
  • [GROOVY-8144] - Invoking a public method declared in a non-public class result in a IllegalAccessError
  • [GROOVY-8176] - tap - exception in phase 'instruction selection'
  • Improvement:
  • [GROOVY-3270] - GroovyConsole: Configurable output area size
  • [GROOVY-7611] - java.util.Optional should evaluate to false if empty
  • [GROOVY-8114] - Include correct time unit in timeout error message
  • New Feature:
  • [GROOVY-6744] - Have the elvis operator (?:) support the Optional type in Java 8

New in Groovy 2.4.11 (Apr 28, 2017)

  • Bug:
  • [GROOVY-7879] - Groovy calls wrong method if there is a static method on an interface
  • [GROOVY-8117] - groovydoc links to a wrong type
  • [GROOVY-8123] - Wrong invokation target of static method
  • [GROOVY-8127] - Access to Trait$Trait$Helper#$self is forbidden
  • [GROOVY-8128] - Breaking change in 2.4.9 with Sql query with GString
  • [GROOVY-8132] - Properties of @Delegate fields are preferred to those in the owning class
  • [GROOVY-8140] - Invoke method not returning MOP super method if isCallToSuper
  • [GROOVY-8142] - Static compiler produces different bytecode for same sources
  • [GROOVY-8143] - Performance subproject included in release artifacts
  • [GROOVY-8148] - Closure-shared variables may produce different closure classes for same sources
  • [GROOVY-8155] - No types when executing PostgreSQL stored procedure
  • [GROOVY-8156] - Compile error when ListenerList annotation exists
  • [GROOVY-8160] - Exception when evaluating two Groovy scripts containing an enum in parallel
  • Documentation:
  • [GROOVY-7579] - Improve docs for invokeMethod
  • Improvement:
  • [GROOVY-6184] - Make ClassHelper consistent in how it creates ClassNodes

New in Groovy 2.5.0 Alpha 1 (Apr 4, 2017)

  • Bug:
  • [GROOVY-2972] - groovy.lang.ObjectRange.size() disobeys its contract for large ranges of Long values.
  • [GROOVY-3233] - The main(args) entry point cannot be found when a class file has multiple classes and the first class extends another class.
  • [GROOVY-3395] - calling binding variable as function fails to try object's call() method
  • [GROOVY-4255] - BUG! exception in phase 'class generation' ... SpreadExpression should not be visited here
  • [GROOVY-4356] - Static members should not be able to access class-level generic types
  • [GROOVY-4787] - BUG! exception in phase 'class generation' generating class from map in closure
  • [GROOVY-4811] - exception while compiling annotation type
  • [GROOVY-5318] - generic types in fully-qualified class names parsing error
  • [GROOVY-5471] - Add "indy" option to Groovy Console
  • [GROOVY-5936] - java.lang.OutOfMemoryError through Iterator.collectEntries and others (part 2: handle others)
  • [GROOVY-6052] - ++ or -- doesn't respect final modifier
  • [GROOVY-6212] - SpreadExpression BUG! when slicing a List
  • [GROOVY-6263] - Accessing private methods from public ones using categories and inheritance causes MissingMethodException
  • [GROOVY-6396] - same linkedlist code different behavior between groovy and java
  • [GROOVY-6454] - Can't delegate (with the @Delegate annotation) to a method whose name contains a dollar ($) character
  • [GROOVY-6619] - Groovy command-line parser breaks when parsing '-n'
  • [GROOVY-6634] - Annotated enum constants breaks enum
  • [GROOVY-6659] - generic bounds ignored by type checking
  • [GROOVY-6991] - CliBuilder.usage() fails with SIOBE if header/footer longer than 74 chars
  • [GROOVY-7013] - GroovyDoc cannot parse several .java files from java 1.7 source code
  • [GROOVY-7014] - A Java compile time error results in a runtime exception in Groovy
  • [GROOVY-7087] - @TupleConstructor and @Builder should be able to use defined setters rather than the field directly
  • [GROOVY-7151] - groovyc should accept meta annotation with ElementType.TYPE
  • [GROOVY-7259] - groovydoc only considers package level fields as properties even if you have a get and set methods declared
  • [GROOVY-7283] - DefaultGroovyMethods methods should include type information
  • [GROOVY-7325] - Verify error cloning a HashSet under CompileStatic conditions
  • [GROOVY-7394] - @ToString could support non-field properties
  • [GROOVY-7417] - @EqualsAndHashCode inconsistent when using boolean properties for classes with explicit getters
  • [GROOVY-7433] - API inconsistency between takeWhile, dropWhile and collectReplacements for CharSequences
  • [GROOVY-7434] - Groovy should support resolving ambiguous signatures when using ClosureParams
  • [GROOVY-7440] - Improve ClosureParam type hints for various splitEachLine GroovyMethod methods
  • [GROOVY-7443] - instantiating a class withTraits does not use the classloader of the trait
  • [GROOVY-7465] - ResourceGroovyMethods/NioGroovyMethods BOM behavior is inconsistent
  • [GROOVY-7522] - TupleConstructor overwrites empty default constructors
  • [GROOVY-7523] - TupleConstructor with empty includes includes all
  • [GROOVY-7529] - Fix up transforms (apart from TupleConstructor) which are affected by empty includes default
  • [GROOVY-7562] - imports and custom class defs not working in Groovysh Interpreter Mode
  • [GROOVY-7566] - Groovysh command arguments parser does not handle escaped blanks
  • [GROOVY-7567] - Groovysh File completion with hyphens broken
  • [GROOVY-7585] - ObjectRange strange semantics for mismatched arguments
  • [GROOVY-7608] - Comparison of decimal subclasses of Number with == fails
  • [GROOVY-7636] - NumberMath.getMath suboptimal choice for custom Numbers
  • [GROOVY-7637] - DefaultTypeTransformation.compareTo not symmetrical
  • [GROOVY-7655] - Wrong method is chosen when using super with generics
  • [GROOVY-7673] - Remove synchronized methods of groovy.sql.Sql and document it as not thread-safe
  • [GROOVY-7750] - @Lazy allows instantiation of abstract class
  • [GROOVY-7803] - Java annotation with @Target(TYPE) on an annotation
  • [GROOVY-7827] - Allow groovyc ant task to select all available target bytecode versions
  • [GROOVY-7828] - Created a class loader that override loadClass can calls protected methods results in VerifyError
  • [GROOVY-7837] - TupleConstructor should provide pre and post annotation attributes like MapConstructor
  • [GROOVY-7852] - Inconsistent checking of final for multi-assignments
  • [GROOVY-7853] - o.c.g.r.t.DefaultTypeTransformation does not apply the right toString on primitve arrays when transforming to String
  • [GROOVY-7862] - Statically compiled calls to protected methods of an outerclass' superclass result in IllegalAccessErrors
  • [GROOVY-7865] - Better error message in the presence of Generics arity errors
  • [GROOVY-7892] - CLONE - ClassCastException when calling DefaultTypeTransformation#compareEqual
  • [GROOVY-7902] - collate() infinite loop with zeroed step
  • [GROOVY-7920] - Simple getAt example produces a BUG exception
  • [GROOVY-7931] - javadoc generation fails for non-indy build
  • [GROOVY-7937] - CLONE - same linkedlist code different behavior between groovy and java (fix priority of DGM methods vs actual methods on an object)
  • [GROOVY-7960] - IntRange iterator returns null instead of NoSuchElementException
  • [GROOVY-7961] - ObjectRange iterator returns null instead of NoSuchElementException
  • [GROOVY-7967] - AstNodeToScriptAdapter should output source using the recommended modifier order
  • [GROOVY-7970] - Can't call private method from outer class when using anonymous inner classes and @CS
  • [GROOVY-8013] - The checking of property names during AST transform attribute processing doesn't take into account includeSuperProperties
  • [GROOVY-8016] - @TupleConstructor could use the order of properties listed in 'includes' when that option is used
  • [GROOVY-8033] - STC: spread property references fails in static method
  • [GROOVY-8043] - NPE compiling Memoized method
  • [GROOVY-8046] - ClassFormatError void field
  • [GROOVY-8072] - AstBrowser source view does not generate labels for statements
  • [GROOVY-8086] - Bump gradle version to 3.3 on master
  • [GROOVY-8087] - bump log4j2 version
  • [GROOVY-8120] - Bump commons cli version to 1.4
  • Improvement:
  • [GROOVY-3976] - Alternative to "with" called "tap" that has an implicate "return delegate"
  • [GROOVY-4024] - Don't use classloader for analyzing compiled classes in groovyc
  • [GROOVY-4847] - Missing GDK rounding methods for BigDecimal
  • [GROOVY-5380] - Add Ctrl+B for word/line/block selection
  • [GROOVY-5426] - ObjectRange.iterator() is reliant on size()
  • [GROOVY-6027] - groovy -h could be more clear
  • [GROOVY-6184] - Make ClassHelper consistent in how it creates ClassNodes
  • [GROOVY-6319] - Canonical annotation should allow property names in toString
  • [GROOVY-6514] - groovysh should offer easier access to grapes
  • [GROOVY-6537] - Support getParsedOptionValue() in OptionAccessor.getProperty()
  • [GROOVY-6538] - Support default value for OptionAccessor.getProperty()
  • [GROOVY-6854] - JsonOutput should be configurable with ISO 8601 UTC time zone instead of GMT
  • [GROOVY-6928] - Support all the Java 6 classes at createSimilarCollection() and createSimilarMap()
  • [GROOVY-6975] - Provide an option to deactivate escaping in JSON serialization
  • [GROOVY-7162] - Handle @Immutable in class hierarchy?
  • [GROOVY-7227] - AST transformations relating to properties/fields should validate their includes/excludes lists
  • [GROOVY-7239] - Allow optimized array access in static compiled code with indy
  • [GROOVY-7360] - @EqualsAndHashCode generated hashcode values can be made more collision proof
  • [GROOVY-7383] - Make CompilerConfiguration.ALLOWED_JDKS public
  • [GROOVY-7422] - @AnnotationCollector could provide more control over how annotations are added in the presence of existing explicit annotations
  • [GROOVY-7423] - Access to Method parameter names at runtime
  • [GROOVY-7426] - Add "Clear Output" Toolbar button to Groovy Console
  • [GROOVY-7427] - TupleConstructor should allow a mechanism to switch off automatic parameter defaults
  • [GROOVY-7486] - groovy.util.Node.depthFirst should provide a way to specify pre-order, post-order ordering
  • [GROOVY-7488] - Depth 1st and Breath 1st taking a closure
  • [GROOVY-7540] - Add a method to StringGroovyMethods for replacing String pairs supplied as a Map
  • [GROOVY-7552] - add org.codehaus.groovy.runtime.DefaultGroovyMethods.isEmpty(Iterable)
  • [GROOVY-7563] - InvokerHelper formatting methods have inconsistent API
  • [GROOVY-7565] - Groovysh tab completion should provide trailing spaces only when expecting more arguments
  • [GROOVY-7572] - Add withAutoClosable method
  • [GROOVY-7574] - Range members should be final
  • [GROOVY-7600] - @Immutable support for Optional?
  • [GROOVY-7616] - collectEntries throws cryptic error when used with split(delimiter, limit)
  • [GROOVY-7629] - ObjectRange methods duplicate functionality and should not rely on size()
  • [GROOVY-7640] - @Builder should have an option to include superclass properties
  • [GROOVY-7643] - Update GrapeIvy.groovy: set ivyInstance to IvyContext, for speed up
  • [GROOVY-7672] - TupleConstructor should have only SOURCE retention policy
  • [GROOVY-7769] - Allow @Delegate Annotation on a getter
  • [GROOVY-7825] - Enhance Groovy's CliBuilder to support annotation style definitions
  • [GROOVY-7877] - The Range abstraction could support numeric ranges where the items in the range differ by some step size different to 1
  • [GROOVY-7893] - LexerFrame could be made more general purpose and made accessible from GroovyConsole
  • [GROOVY-7905] - ListWithDefault DGM methods aren't type inference friendly
  • [GROOVY-7911] - Chained multiple assignment parsing fail
  • [GROOVY-7941] - MissingMethodException should limit argument types in getMessage()
  • [GROOVY-8011] - @ToString if used with includes='prop1,prop2' could allow the pseudo prop name 'super' as an alternative to using the includeSuper flag
  • [GROOVY-8014] - @ToString could output properties in a predefined order when 'includes' is used
  • [GROOVY-8088] - For @MapConstructor and @TupleConstructor we should provide a default undefined value for better Java compatibility
  • New Feature:
  • [GROOVY-7089] - Base64 URL Safe encoder
  • [GROOVY-7313] - "relativePath" extension method
  • [GROOVY-7353] - Groovy should provide a MapConstructor AST transform
  • [GROOVY-7479] - Groovy should provide "inits" and "tails" DGM methods for lists
  • [GROOVY-7657] - add groovy macro module
  • [GROOVY-7745] - Add Map#removeAll(Closure) and Map#retainAll(Closure)
  • [GROOVY-7746] - Add BufferedIterator and Groovy JDK methods for it
  • [GROOVY-7755] - Add Extension Methods for JAXB Marshalling and Unmarshalling Support
  • [GROOVY-7860] - Groovy could implement an @AutoImplement transform
  • [GROOVY-8091] - Add a ASMifier tab to AstBrowser
  • Sub-task:
  • [GROOVY-1628] - Inconsistent checking of final
  • [GROOVY-4636] - GroovyConsole AST Browser does not show object initializer statements
  • [GROOVY-5501] - When inspecting the AST, it would be nice to have the node metadata properties listed too
  • Task:
  • [GROOVY-5282] - upgrade Apache Commons CLI to version 1.3
  • [GROOVY-7334] - update spock to 1.0
  • [GROOVY-7335] - Update SLF4J to 1.7.10
  • [GROOVY-7418] - upgrade xstream to 1.4.8 and also exclude optional xmlpull dependency
  • [GROOVY-7421] - upgrade gradle to 2.4
  • [GROOVY-7429] - CLONE - upgrade Apache Commons CLI to version 1.3 - migrate OptionBuilder to Option.builder()
  • [GROOVY-7430] - upgrade testng dependency for groovy-testng to 6.9.4
  • [GROOVY-7455] - Upgrade Ant to 1.9.5
  • [GROOVY-7458] - Upgrade XmlUnit to 1.6
  • [GROOVY-7471] - Upgrade commons cli to 1.3.1
  • [GROOVY-7491] - Upgrade Ant to 1.9.6
  • [GROOVY-7516] - upgrade gradle to 2.5
  • [GROOVY-7606] - Upgrade gradle to 2.7
  • [GROOVY-7607] - Upgrade Log4J2 to 2.3
  • [GROOVY-7634] - Update Logback version to 1.1.6
  • [GROOVY-7642] - Bump gradle to 2.8
  • [GROOVY-7653] - Update SLF4J version to 1.7.19
  • [GROOVY-7680] - Bump gradle to version 2.9
  • [GROOVY-7724] - Upgrade gradle to 2.10
  • [GROOVY-7752] - Bump Gradle version to 2.11
  • [GROOVY-7791] - Update JLine to 2.14.2
  • [GROOVY-7792] - Update ASM to 5.1
  • [GROOVY-7795] - Upgrade xstream to 1.4.9
  • [GROOVY-7823] - Bump Ant version to 1.9.7
  • [GROOVY-7830] - Bump Gradle version to 2.13
  • [GROOVY-7831] - bump logging dependency versions
  • [GROOVY-7899] - Bump servlet-api version to 3.0.1
  • [GROOVY-7901] - bump jansi version to 1.13
  • [GROOVY-7943] - bump to Gradle 3.1
  • [GROOVY-8009] - Bump gradle version to 3.2.1
  • [GROOVY-8010] - Bump jarjar version to 1.4.1
  • [GROOVY-8075] - Bump Ant version to 1.9.9
  • Wish:
  • [GROOVY-6090] - Reimplement CliBuilder over another CLI API

New in Groovy 2.4.10 (Mar 27, 2017)

  • Bug:
  • [GROOVY-6792] - ClassFormatError if a method has dots within its name
  • [GROOVY-7248] - MissingPropertyException: No such property in finally block
  • [GROOVY-7402] - Compiler NPE Related To AST Transformations And Traits
  • [GROOVY-7797] - Private trait method called from within a closure has the wrong "this" context
  • [GROOVY-7909] - Calling parents method from trait using Parent.super.method() fail depending on trait declaration order
  • [GROOVY-8085] - Exception in "finally" not caught by outer "try"
  • [GROOVY-8107] - Binary incompatibility problems between compiled code in Groovy 2.4.7 vs 2.4.9
  • [GROOVY-8109] - Unsupported operator with @CompileStatic causes BUG! () during compilation
  • [GROOVY-8110] - @ListenerList generated fireWhatever() method stops working
  • Documentation:
  • [GROOVY-8118] - Builder's DefaultStrategy has small doc error
  • [GROOVY-8119] - Groovy Language Specification documentation has bad internal links to "type checking section"
  • Improvement:
  • [GROOVY-8124] - Include documentation in the SDKMAN install

New in Groovy 2.4.9 (Mar 2, 2017)

  • Bug:
  • [GROOVY-8023] - Compile time increases exponentially when compiling Class implementing a Trait
  • [GROOVY-8026] - Matcher indexed via IntRange with startIdx..-1 does not return "intermediate" range matches
  • [GROOVY-8030] - An unexpected error has occurred when using 'kkk = kkk + 12'
  • [GROOVY-8033] - STC: spread property references fails in static method
  • [GROOVY-8048] - final fields for pre-compiled traits aren't processed correctly
  • [GROOVY-8060] - @Log annotation does not check logging enablement inside closures which are arguments to methods
  • [GROOVY-8065] - Map created as org.springframework.http.HttpHeaders is empty in 2.4.8, works fine in 2.4.7
  • [GROOVY-8066] - protected fields should be disallowed in traits
  • [GROOVY-8067] - Possible deadlock when creating new ClassInfo entries in the cache
  • [GROOVY-8068] - improper logging in groovy.sql.Sql
  • [GROOVY-8069] - Annotation based logging of complex expression in closure throws GroovyCastException when statically compiled
  • [GROOVY-8082] - Groovy sql.rows returns org.postgresql.util.PSQLException: No hstore extension installed

New in Groovy 2.4.8 (Jan 18, 2017)

  • Bug:
  • [GROOVY-6203] - GroovyScriptEngine does not take script base class into account
  • [GROOVY-7312] - Compiler generates invalid inner class constructor
  • [GROOVY-7530] - disjoint() does not work correctly if objects don't implement Comparable
  • [GROOVY-7541] - GroovyBugError in TypeTransformer.addTransformer
  • [GROOVY-7580] - ExpandoMetaClass append method does not throw an exception as per docs
  • [GROOVY-7602] - Intersect returns an empty list when the contents of the compared Collections are Maps
  • [GROOVY-7613] - Grape fails to load Groovy Extensions
  • [GROOVY-7620] - No error if abstract getter is not implemented but static field exists
  • [GROOVY-7723] - propertyMissing(String,Object) called for missing getter
  • [GROOVY-7728] - LAX parser: Commenting out key/val pairs doesn't work
  • [GROOVY-7751] - CallableStatement leak in Sql.call() method
  • [GROOVY-7758] - GroovyCastException when both @CompileStatic and @Newify are used
  • [GROOVY-7761] - Groovydoc incorrectly rejects dollar signs and mucks up some backslashes during @code tag replacement.
  • [GROOVY-7773] - Enum constructor with value throws "unexpected token" error
  • [GROOVY-7777] - groovysh cannot load script with shebang
  • [GROOVY-7781] - GPathResult: Cannot retrieve XML attribute with namespace
  • [GROOVY-7783] - Redundant computation in ObservableList
  • [GROOVY-7784] - TypeChecked/CompileStatic: IndexOutOfBoundsException
  • [GROOVY-7793] - Compiler compiles class with private abstract method
  • [GROOVY-7798] - Sql.query methods pass java.sql.ResultSet to the closure, instead of GroovyResultSet
  • [GROOVY-7804] - @CompileStatic/@TypeChecked unexpected NullpointerException compiler bug
  • [GROOVY-7806] - @interface has too-stringent requirement for newline
  • [GROOVY-7808] - XmlSlurper unprefixed attributes should not be in the default namespace
  • [GROOVY-7810] - XmlSluper default constructor documentation about namespace aware incorrect.
  • [GROOVY-7813] - Calling a non-static outer class method from a static class passes STC
  • [GROOVY-7816] - ObservableList addAll method property change event index off by one
  • [GROOVY-7820] - CachedMethod.compareToCachedMethod throws "Should never happen"
  • [GROOVY-7822] - Redundant computation in ObservableSet
  • [GROOVY-7826] - Infinite recursion in genericTypeAsString
  • [GROOVY-7832] - NullPointerException in GroovyConsole with an input method
  • [GROOVY-7833] - exception in phase 'conversion' if META-INF files contain comment headers
  • [GROOVY-7836] - CompileStatic + static inner class + EqualsAndHashCode gives VerifyError in equals
  • [GROOVY-7841] - Assert fails when accessing particular primitive values with @CompileStatic
  • [GROOVY-7846] - A trait that defines a static method that uses generic return types throws "BUG! Type is null"
  • [GROOVY-7986] - Map sort gives an error : Comparison method violates its general contract!
  • Documentation:
  • [GROOVY-7604] - traits docs diamond problem explanation
  • Improvement:
  • [GROOVY-6950] - StringGroovyMethods improve performance
  • [GROOVY-7775] - JavadocAssertionTestBuilder should handle escapes needed for HTML within javadoc, e.g. @ for @ and {@code ...}

New in Groovy 2.4.7 (Jan 16, 2017)

  • Bug:
  • [GROOVY-6203] - GroovyScriptEngine does not take script base class into account
  • [GROOVY-7312] - Compiler generates invalid inner class constructor
  • [GROOVY-7530] - disjoint() does not work correctly if objects don't implement Comparable
  • [GROOVY-7541] - GroovyBugError in TypeTransformer.addTransformer
  • [GROOVY-7580] - ExpandoMetaClass append method does not throw an exception as per docs
  • [GROOVY-7602] - Intersect returns an empty list when the contents of the compared Collections are Maps
  • [GROOVY-7613] - Grape fails to load Groovy Extensions
  • [GROOVY-7620] - No error if abstract getter is not implemented but static field exists
  • [GROOVY-7723] - propertyMissing(String,Object) called for missing getter
  • [GROOVY-7728] - LAX parser: Commenting out key/val pairs doesn't work
  • [GROOVY-7751] - CallableStatement leak in Sql.call() method
  • [GROOVY-7758] - GroovyCastException when both @CompileStatic and @Newify are used
  • [GROOVY-7761] - Groovydoc incorrectly rejects dollar signs and mucks up some backslashes during @code tag replacement.
  • [GROOVY-7773] - Enum constructor with value throws "unexpected token" error
  • [GROOVY-7777] - groovysh cannot load script with shebang
  • [GROOVY-7781] - GPathResult: Cannot retrieve XML attribute with namespace
  • [GROOVY-7783] - Redundant computation in ObservableList
  • [GROOVY-7784] - TypeChecked/CompileStatic: IndexOutOfBoundsException
  • [GROOVY-7793] - Compiler compiles class with private abstract method
  • [GROOVY-7798] - Sql.query methods pass java.sql.ResultSet to the closure, instead of GroovyResultSet
  • [GROOVY-7804] - @CompileStatic/@TypeChecked unexpected NullpointerException compiler bug
  • [GROOVY-7806] - @interface has too-stringent requirement for newline
  • [GROOVY-7808] - XmlSlurper unprefixed attributes should not be in the default namespace
  • [GROOVY-7810] - XmlSluper default constructor documentation about namespace aware incorrect.
  • [GROOVY-7813] - Calling a non-static outer class method from a static class passes STC
  • [GROOVY-7816] - ObservableList addAll method property change event index off by one
  • [GROOVY-7820] - CachedMethod.compareToCachedMethod throws "Should never happen"
  • [GROOVY-7822] - Redundant computation in ObservableSet
  • [GROOVY-7826] - Infinite recursion in genericTypeAsString
  • [GROOVY-7832] - NullPointerException in GroovyConsole with an input method
  • [GROOVY-7833] - exception in phase 'conversion' if META-INF files contain comment headers
  • [GROOVY-7836] - CompileStatic + static inner class + EqualsAndHashCode gives VerifyError in equals
  • [GROOVY-7841] - Assert fails when accessing particular primitive values with @CompileStatic
  • [GROOVY-7846] - A trait that defines a static method that uses generic return types throws "BUG! Type is null"
  • [GROOVY-7986] - Map sort gives an error : Comparison method violates its general contract!
  • Documentation:
  • [GROOVY-7604] - traits docs diamond problem explanation
  • Improvement:
  • [GROOVY-6950] - StringGroovyMethods improve performance
  • [GROOVY-7775] - JavadocAssertionTestBuilder should handle escapes needed for HTML within javadoc, e.g. @ for @ and {@code ...}

New in Groovy 2.4.6 (Feb 22, 2016)

  • Bug:
  • [GROOVY-2178] - Shell can not handle multi-line list defs
  • [GROOVY-2242] - Missing information in Javadoc of ExpandoMetaClass.enableGlobally()
  • [GROOVY-3341] - MissingMethodException in Builder is misleading
  • [GROOVY-4698] - Possible memory leak in Tomcat
  • [GROOVY-4888] - groovy console script execution output appears in all output windows
  • [GROOVY-6067] - MetaClassImpl triggers new entries for maps with default
  • [GROOVY-6352] - Type checker ignores wrong number of constructor arguments
  • [GROOVY-6669] - Compile in groovyConsole instantiates class
  • [GROOVY-6787] - type checker does not check generics bounds of wildcards properly
  • [GROOVY-6835] - flow typing activated by if statement doing an "instanceof" check doesn't work as expected with interface types
  • [GROOVY-6922] - JsonSlurper loses trailing 0's in numbers (regression in Groovy 2.3)
  • [GROOVY-6958] - null != NullObject when using Categories
  • [GROOVY-7036] - An interface implementation (override) with a method including a default parameter value does not compile
  • [GROOVY-7074] - DelegatingScript does not work with Builder as delegate
  • [GROOVY-7105] - Oracle Thin Driver Fails with an Exception in Groovy 2.3.x
  • [GROOVY-7170] - STC error If we use java.lang.Integer as Target Type with method generics
  • [GROOVY-7342] - last enum value is hidden if annotated
  • [GROOVY-7363] - Frequent compilation error on cascading generic types
  • [GROOVY-7378] - Spaces in JAVA_OPTS env var prevent launching of groovy
  • [GROOVY-7420] - Cannot choose between primitive and object variants of an overloaded method
  • [GROOVY-7442] - spread-dot operator within assert isn't expected with @CompileStatic
  • [GROOVY-7535] - Groovy category throwing MissingMethodException and MissingPropertyException when using multiple threads
  • [GROOVY-7538] - Compiler crash in the static type checker with self-referencing generic type
  • [GROOVY-7587] - Groovy 2.2 and 2.4 all fail to execute almost any script with Java 9 JIGSAW preview builds
  • [GROOVY-7596] - src/test/org/codehaus/groovy/ast/LineColumnCheck.txt file missing header in source release
  • [GROOVY-7597] - Static Compiler tries to cast delegate to target type of property accessor
  • [GROOVY-7598] - type checking with generics
  • [GROOVY-7610] - Null safe is call throws VerifyError when used as condition with CompileStatic
  • [GROOVY-7618] - Parameterless closure to SAM coercion causes NPE during instruction selection with STC
  • [GROOVY-7621] - Memory Leak (metaClassRegistry) unable to remove metaClass based on instances
  • [GROOVY-7623] - IBM Java (J9) ClassValue works correctly so should use it by default
  • [GROOVY-7627] - Property calls are not correctly type checked if the setter parameter type or getter return type are not the field type
  • [GROOVY-7630] - JsonSlurper LAX parser with invalid number
  • [GROOVY-7631] - @CompileStatic compiles 0 != null to false
  • [GROOVY-7639] - NPE when using safe traversal operator with CompileStatic
  • [GROOVY-7644] - ExternalizeMethods generates incorrect bytecode for statically compiled nested classes
  • [GROOVY-7645] - Stub generator unescapes escaped backslashes in String annotation values
  • [GROOVY-7649] - Grape.resolve() always fails after first unresolved dependency
  • [GROOVY-7650] - CLONE - collectEntries throws cryptic error when used with split(delimiter, limit)
  • [GROOVY-7652] - Float/Double trunc methods perform rounding for negative values
  • [GROOVY-7656] - Spread safe method calls on list literals result in the list expression being evaluated twice (SC)
  • [GROOVY-7665] - JsonSlurperCharSource decimal parsing producing unexpected results
  • [GROOVY-7675] - Compiler customization builder not resolve secureAst properties
  • [GROOVY-7688] - Using spread operator on function with compile static results in two calls to function
  • [GROOVY-7694] - Results of spread safe method calls should be stored in temporary variables
  • [GROOVY-7698] - @CompileStatic safe navigation is broken for property style non-synthetic setter calls
  • [GROOVY-7702] - @CompileStatic and the method with(Closure) seem to determine wrong type
  • [GROOVY-7705] - CompileStatic closure accessing "thisObject" private field: setProperty instead of synthetic method
  • [GROOVY-7707] - StreamingJsonBuilder produces IllegalStateException when using unescaped output
  • [GROOVY-7709] - NPE with ConvertedClosure
  • [GROOVY-7710] - Random resolution of an overloaded method with arrays as last parameter called without an argument
  • [GROOVY-7711] - Wrong method resolution for an overridden method with varargs and covariant return type
  • [GROOVY-7715] - ulimit use is not supported on NonStop
  • [GROOVY-7716] - groovy.json.internal.FastStringUtils.StringImplementation#toCharArray fails on jdk9
  • [GROOVY-7717] - StaticTypeCheckingTestCase#shouldFailWithMessages erroneously passes
  • [GROOVY-7718] - java.lang.ClassFormatError: Illegal class name on runtime cast array to trait
  • [GROOVY-7726] - Groovysh doc command fails when using Java 9
  • [GROOVY-7742] - CompileStatic stackoverflow with generic method with different placeholder as type argument
  • [GROOVY-7747] - Generated Java stub for enum with abstract method is invalid
  • Documentation:
  • [GROOVY-7524] - Document that mixing TupleConstructor and InheritConstructors will likely not give you what you want
  • [GROOVY-7533] - GroovyInterceptions.png has an inconsistency
  • [GROOVY-7592] - Problem in switch statement docs
  • [GROOVY-7603] - Update groovy docs for Category
  • [GROOVY-7605] - Improve docs for MetaClass getMethods vs getMetaMethods
  • [GROOVY-7625] - document why slashy strings allow brackets but double quoted strings do not
  • [GROOVY-7736] - Argfiles not documented for groovyc
  • Improvement:
  • [GROOVY-7546] - Misleasing error message for null + something-that-is-not-a-string
  • [GROOVY-7583] - Unnecessary Instantiation on DefaultGroovyMethods.numberAwareCompareTo
  • [GROOVY-7612] - GroovyDoc should allow timestamp/version stamp info (hidden info embedded in HTML) to be omitted
  • [GROOVY-7626] - Allow security managers to prevent system property access for Indy
  • [GROOVY-7668] - Better error-message for AST transformation when binary compatibility changes
  • [GROOVY-7703] - Add support for Iterable with Closure to JsonBuilder/StreamingJsonBuilder
  • [GROOVY-7706] - StreamingJsonBuilder should supported nested closures
  • [GROOVY-7708] - StreamingJsonBuilder doesn't define DelegatesTo on some methods, impacting @CompileStatic usage
  • [GROOVY-7735] - Closures should be generated as public classes
  • [GROOVY-7737] - Provide static methods in GeneralUtils to create ThrowStatement and CatchStatement
  • [GROOVY-7739] - Groovsh code-completion should display groovy jdk enhancements of java.io.file
  • [GROOVY-7740] - Groovsh code-completion should display groovy jdk enhancements of String
  • Task:
  • [GROOVY-7660] - gradle/utils.gradle: remove unused imports + general housekeeping

New in Groovy 2.4.5 (Sep 29, 2015)

  • Bug:
  • [GROOVY-7164] - @CompileStatic transform gives unexpected result for default constructor
  • [GROOVY-7387] - Trait compilation error: IllegalArgumentException: Comparison method violates its general contract!
  • [GROOVY-7501] - Builder class name should not contain package name
  • [GROOVY-7503] - Builder with Initializer strategy and no properties results in ClassFormatError
  • [GROOVY-7509] - Problem With Stub Generator And Static Import Aliases
  • [GROOVY-7518] - hashCode() throws NPE when using @CompileStatic with @EqualsAndHashCode
  • [GROOVY-7519] - JsonOuput.toJson() leads to StackOverflowException
  • [GROOVY-7520] - Improve unimplemented message for abstract methods
  • [GROOVY-7548] - @Grab should provide a way to set system properties
  • [GROOVY-7551] - groovy-all has a dependency on com.googlecode:openbeans that is not available on Maven Central
  • [GROOVY-7553] - Path.write() appends when encoding parameter present
  • [GROOVY-7564] - InvokerHelper verbose printing wrongly escapes backslashes
  • [GROOVY-7586] - Groovysh does not print the exception class
  • Documentation:
  • [GROOVY-7556] - Use better example for Closure composition
  • [GROOVY-7577] - Groovy class docs all have ASF license as their explanation
  • Improvement:
  • [GROOVY-7241] - Add save prompts for buffers without a file
  • [GROOVY-7588] - Improve StreamingJsonBuilder support for @CompileStatic
  • [GROOVY-7589] - Support for unescaped output in StreamingJsonBuilder
  • [GROOVY-7590] - Improve StreamingJsonBuilder support for @CompileStatic
  • [GROOVY-7591] - Use of ClassValue causes major memory leak
  • Task:
  • [GROOVY-7459] - leverage Ant javadoc fix rather than have our own copy of Oracle fix class

New in Groovy 2.4.1 (Feb 19, 2015)

  • Bug:
  • [GROOVY-4852] - Constant Optimization is a little off
  • [GROOVY-4918] - GetEffectivePojoPropertySite#acceptGetProperty may produce a NullPointerException when provided with a null 'receiver' object
  • [GROOVY-6590] - field on primitive not recognized even if existing in wrapper type
  • [GROOVY-6697] - Setting property in trait using "super" doesn't work
  • [GROOVY-7000] - Support MarkupTemplateEngine integration with TemplateServlet
  • [GROOVY-7173] - jsonslurper does not unescape Strings (sometimes) on parsing with JsonParsingUsingCharacterSource
  • [GROOVY-7240] - Unable to start dollar slashy strings with an escaped dollar
  • [GROOVY-7243] - @Delegate does not honor "includes" on properties - all properties are delegated
  • [GROOVY-7255] - Problem With @CompileStatic And Static Trait Members
  • [GROOVY-7261] - @Lazy should work in combination with @Delegate
  • [GROOVY-7262] - There should be a TimeZone variant of the Date#parse method in DGSM
  • [GROOVY-7263] - Problem With Static Imports
  • [GROOVY-7264] - NPE in TypeResolver when access$XXX method generated for a method with generic types
  • [GROOVY-7266] - CompilationFailedException can be swallowed
  • [GROOVY-7267] - avoid hashcode based equality check without equals
  • [GROOVY-7269] - Problem With MetaMethods and replacing MetaProperty
  • [GROOVY-7273] - :doc command checks wrong api urls
  • [GROOVY-7275] - SelfType class "was not matched with found receiver" trait
  • [GROOVY-7276] - static compiler fails to eliminate dynamic property lookup
  • [GROOVY-7277] - TemplateResource.parse handles paths containing multiple dots incorrectly
  • [GROOVY-7278] - Error caused by @CompileStatic
  • [GROOVY-7280] - typo: 'possible loose of precision' should be 'possible loss of precision'
  • [GROOVY-7285] - Stackable Traits at runtime don't honor definition order
  • [GROOVY-7287] - Problem With Trait Generics With Conflicting Names
  • [GROOVY-7297] - StackOverflowError Related To Trait Generics
  • [GROOVY-7298] - NPE in TypeResolver using , Closure and @CompileStatic
  • [GROOVY-7300] - CompileStatic doesn't call property accessors on super classes correctly
  • [GROOVY-7302] - LazyMap size returns incorrect result for un-built maps if same key set more than once
  • Improvement:
  • [GROOVY-6658] - Set anchors for each section in Groovy Ascii docs.
  • [GROOVY-7228] - Minor typo in documentation for DefaultGroovyMethods.xor(left, right)
  • [GROOVY-7235] - Groovysh code completion is not compatible with JDK 9 (Jigsaw)
  • [GROOVY-7245] - Add primitive array join()
  • New Feature:
  • [GROOVY-7224] - Extend @Builder InitializerStrategy to support adding the annotation to Constructors

New in Groovy 2.4.0 Beta 1 (Jun 12, 2014)

  • Bug:
  • [GROOVY-3971] - adding method to class in ASTBuilder not working
  • [GROOVY-6755] - Bad type resolution causing bad classes and TypeNotPresentExceptions with joint compilation, deep generics and star imports
  • [GROOVY-6762] - Groovy won't run in OSGI Java 7 environment
  • [GROOVY-6770] - The method NioGroovyMethods#write does not truncate the content of a file
  • [GROOVY-6793] - Module descriptors should be read in UTF-8
  • Improvement:
  • [GROOVY-2900] - Allow Ant targets declaration by AntBuilder without immediate execution.
  • [GROOVY-6563] - groovysh: completion candidates could use ANSI styles
  • [GROOVY-6622] - groovysh: completion: static members should only be shown for static context
  • [GROOVY-6623] - Groovysh: improve interpreter_mode likeness
  • [GROOVY-6739] - Allow to implement and register a type checking extension as a subclass of TypeCheckingExtension
  • [GROOVY-6752] - groovysh Main not customizable and buggy w.r.t. AnsiConsole
  • [GROOVY-6753] - groovysh file commands provide ambiguous output
  • [GROOVY-6754] - groovysh positional argument terminates groovysh after evaluation
  • [GROOVY-6839] - @PackageScope could be also allowed for constructors
  • [GROOVY-6861] - Make Groovy run on Android
  • Task:
  • [GROOVY-6758] - Upgrade Ant to 1.9.4
  • [GROOVY-6759] - Upgrade ASM to 5.0.2
  • [GROOVY-6796] - Upgrade GPars to 1.2.1
  • [GROOVY-6853] - upgrade Ivy to 2.4.0-rc1
  • [GROOVY-6859] - Upgrade JLine2 to 2.12

New in Groovy 2.3.3 (Jun 12, 2014)

  • Bug:
  • [GROOVY-6412] - CLONE - Incorrect parameter for annotations throws compilation exception with obfuscated message
  • [GROOVY-6804] - [Static type checking] - Reference to method is ambiguous. Cannot choose between
  • [GROOVY-6811] - Bug in the constructor of anonymous inner class
  • [GROOVY-6834] - False positive variable scoping error when using AIC in combination with logging AST transform
  • [GROOVY-6841] - BUG! exception in phase 'semantic analysis'
  • [GROOVY-6846] - DGM.retainAll() has wrong generic type on Closure condition
  • [GROOVY-6851] - Tenary operator with @CompileStatic in constructor results in ArrayIndexOutOfBoundsException
  • [GROOVY-6856] - Generics and static type checking: "Cannot return value of type W on method returning type W"
  • [GROOVY-6857] - JsonSlurper.parse with byte array throws stack overflow exception
  • Improvement:
  • [GROOVY-6850] - Allow compilation to JDK8 bytecode

New in Groovy 2.3.2 (May 28, 2014)

  • Sub-task:
  • [GROOVY-6373] - 'log' field introduced via @Slf4j not accessible in inner class of @CompileStatic class
  • Bug:
  • [GROOVY-5996] - Sql#executeInsert does not return list of auto-generated keys
  • [GROOVY-6258] - groovydoc information loss when using generics
  • [GROOVY-6342] - @CompileStatic + Elvis operator cause null pointers to be thrown
  • [GROOVY-6437] - Sql.withTransaction() doesn't rollback on checked exceptions
  • [GROOVY-6612] - GroovyRowResult case insensitive inconsistency
  • [GROOVY-6774] - BuilderASTTransformation uses wrong class loader to load builder strategy
  • [GROOVY-6775] - GroovyDoc reports Exception: groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: comparator for class: java.util.TreeMap
  • [GROOVY-6784] - Problem with GroovyConsole allow interruption and @CompileStatic
  • [GROOVY-6798] - Fix autocompletion of map entries in Groovy shell
  • [GROOVY-6806] - The type checker should use the transform loader instead of the source unit loader for extension methods
  • [GROOVY-6808] - Closures may have wrong inner class attributes
  • [GROOVY-6810] - GroovyCastException on type handling
  • [GROOVY-6815] - IntelliJ sees proper 2.3.1 release as 'groovy-2.3.1.SNAPSHOT'
  • [GROOVY-6819] - IncompatibleClassChangeError when using closures
  • [GROOVY-6820] - The type checker disallows the Outer.this notation
  • [GROOVY-6821] - Calling outer class method inside "super" call in constructor fails with static compilation
  • [GROOVY-6823] - Static compiler does not always make direct method call for getProperty in an inner class
  • [GROOVY-6828] - jarjar assembly missing classes required by GroovyConsole
  • Improvement:
  • [GROOVY-6807] - BaseTemplate could add a default toString implementation for debugging
  • [GROOVY-6817] - groovy.sql.Sql#execute doesn't handle invoking SQL that returns multiple results
  • New Feature:
  • [GROOVY-3504] - DataSet classes could support batch operations

New in Groovy 2.3.1 (May 19, 2014)

  • Bug:
  • [GROOVY-3937] - DocGenerator cross links use absolute gapi/api URLs instead of relative
  • [GROOVY-5981] - @TypedChecked error when using generics
  • [GROOVY-5998] - Using subscript operator on properties with a Builder and @DelegatesTo doesn't work
  • [GROOVY-6126] - CompileStatic: dispatch doesn't choose correct method when parameterized generic types are used
  • [GROOVY-6276] - Outer class method call failure with @CompileStatic
  • [GROOVY-6343] - @CompileStatic: can't access static field from nested closures
  • [GROOVY-6358] - @CompileStatic doesn't determine correct type for return from generic static method
  • [GROOVY-6420] - A stored procedure call (sql.call) fails, when any of the result-sets are NOT used in closure (param 3).
  • [GROOVY-6616] - @CompileStatic Reference to constructor is ambiguous
  • [GROOVY-6679] - java.util.Locale gives java.security.AccessControlException on App Engine
  • [GROOVY-6693] - Compiler fails to infer type if given a concrete type instead of a generified interface
  • [GROOVY-6707] - Groovy 2.3.0-beta-2 generic type checking incorrect
  • [GROOVY-6728] - CLONE - generation of groovy-jdk index entries in index-all.html needs further refactoring
  • [GROOVY-6730] - TypeChecked : Cannot use diamond with anonymous inner classes
  • [GROOVY-6731] - Static type checking - Cannot find matching method
  • [GROOVY-6736] - Error adding a trait to a Map
  • [GROOVY-6743] - ImportCommand Regex Too Restrictive
  • [GROOVY-6746] - Groovy class files miss the "EnclosingMethod" attribute
  • [GROOVY-6748] - Type checking when extracting value of generic type does not wok
  • [GROOVY-6750] - java.lang.IncompatibleClassChangeError: MyClass and MyClass$MyInnerClass disagree on InnerClasses attribute with indy
  • [GROOVY-6751] - Error in @TypeChecked when method in both Interface and Superclass
  • [GROOVY-6755] - Bad type resolution causing bad classes and TypeNotPresentExceptions with joint compilation, deep generics and star imports
  • [GROOVY-6756] - Groovyc task should log build errors at error level, consistent with javac and allowing use of ant -q
  • [GROOVY-6760] - Static compiler fails to infer generic type
  • [GROOVY-6761] - Static compiler doesn't respect contravariant type tokens
  • [GROOVY-6762] - Groovy won't run in OSGI Java 7 environment
  • [GROOVY-6768] - Unable to resolve resources from grapes through ClassLoader
  • [GROOVY-6770] - The method NioGroovyMethods#write does not truncate the content of a file
  • [GROOVY-6771] - Grapes broken in 2.3
  • [GROOVY-6776] - VerifierError in Groovy 2.3, doesn't happen in Groovy 2.2
  • [GROOVY-6779] - Groovysh ":purge all" and ":show all" commands fail
  • [GROOVY-6782] - BUG! exception in phase 'class generation'
  • [GROOVY-6786] - 2.3.0 CompileStatic regressions
  • [GROOVY-6789] - Fix potential DoS attack with JSON parser
  • [GROOVY-6790] - Starting groovysh with groovysh.rc fails
  • [GROOVY-6793] - Module descriptors should be read in UTF-8
  • [GROOVY-6794] - Access forbidden can be triggered in MarkupTemplateEngine
  • [GROOVY-6795] - MarkupTemplateEngine won't cache templates
  • [GROOVY-6797] - MarkupTemplateEngine should allow custom template resolvers
  • [GROOVY-6801] - The AntlrParserPlugin format hook (-Dantlr.ast=format) is corrupted by jarjar
  • Improvement:
  • [GROOVY-5983] - No package link on groovy-jdk
  • [GROOVY-6551] - Groovy Sql API should support stored procedures that return multiple result sets
  • [GROOVY-6571] - groovy.sql.Sql.eachRow should set maxRows on the JDBC Statement
  • [GROOVY-6643] - groovy-jdk pages should show "inherited" methods
  • [GROOVY-6749] - DocGenerator could provide an inherited methods list as per normal javadoc or groovydoc
  • [GROOVY-6788] - Support fragments/template composition in MarkupTemplateEngine
  • Task:
  • [GROOVY-6796] - Upgrade GPars to 1.2.1

New in Groovy 2.3.0 (May 5, 2014)

  • Includes all the changes featured in the previous Beta versions

New in Groovy 2.3.0 RC 2 (Apr 29, 2014)

  • Bug:
  • [GROOVY-5459] - grape command and help is wrong command line structure
  • [GROOVY-6254] - groovydoc fails when java files start with single line comments
  • [GROOVY-6706] - Custom base script abstract method throws NPE with the @BaseScript annotation on imports
  • [GROOVY-6714] - GroovyDoc omits and/or misplaces documentation for methods in .java files.
  • [GROOVY-6722] - Compiler doesn't recognize covariant array of generics
  • [GROOVY-6724] - Missing temporary type information check if a receiver has a property with generics
  • [GROOVY-6725] - XML parsing error during grape uninstall
  • [GROOVY-6726] - index entries of classes are missing in index-all.html
  • [GROOVY-6729] - FirstParam.FirstGenericType don't works whe the method returns generic type
  • Task:
  • [GROOVY-6727] - Upgrade gpars to 1.2.0

New in Groovy 2.3.0 RC 1 (Apr 25, 2014)

  • Bug:
  • [GROOVY-6255] - XMLSlurper accessing xml:id
  • [GROOVY-6356] - Working with namespaced attributes awkward with XmlSlurper
  • [GROOVY-6671] - Types not inferred when coercing closures of generic method return type
  • [GROOVY-6674] - The JsonSlurper returns the wrong value type for floating point numbers.
  • [GROOVY-6692] - trait's groovyProxy class doesn't dispatch String#toString()
  • [GROOVY-6694] - Static method call within trait is not transformed properly
  • [GROOVY-6700] - Deprecate old groovy.util.GroovyAssert class in favor of the new Groovy 2.3 groovy.test.GroovyAssert class
  • [GROOVY-6701] - index entries of same method name are missing in index-all.html
  • [GROOVY-6702] - Trait, public fields & as-operator
  • [GROOVY-6708] - Instantiating traits with generics that extend traits with generics does not compile
  • Improvement:
  • [GROOVY-5461] - Make MarkupBuilder.getMkp() return MarkupBuilderHelper instead of Object
  • [GROOVY-6698] - Cleanup Gradle build in preparation for Gradle 2
  • New Feature:
  • [GROOVY-6604] - PojoBuilder New Feature Proposal
  • [GROOVY-6709] - withCloseable{} DGM method for Closeable
  • Task:
  • [GROOVY-6719] - Upgrade to Log4j 2 RC1

New in Groovy 2.3.0 Beta 2 (Apr 11, 2014)

  • Bug:
  • [GROOVY-6471] - AccessControlException when compiling scripts on the fly with Google App Engine dev server
  • [GROOVY-6621] - groovy.util.Node#text incorrect when value is a NodeList
  • [GROOVY-6666] - Unexpected NullPointerException
  • [GROOVY-6670] - Cannot coerce closure to SAM type when calling method of generic type
  • [GROOVY-6672] - ClassFormatError if trait (accidentally) "extends" interface
  • [GROOVY-6676] - Closure parameter type inference error if the receiver is a delegate type
  • [GROOVY-6683] - XmlParser trims text by default
  • [GROOVY-6686] - Initial expressions are not transformed in traits
  • [GROOVY-6687] - Traits aren't detected as implementing abstract methods
  • [GROOVY-6691] - Cannot extend trait with generic parameter
  • Improvement:
  • [GROOVY-6544] - SourceAwareCustomizer should combine SourceUnit+ClassNode
  • [GROOVY-6553] - jarjar should be used with the "normal" groovy.jar too
  • [GROOVY-6665] - maxRows in Groovy.sql.Sql goes one too far
  • [GROOVY-6678] - XmlParser should provide a trimIgnorableWhitespace setting
  • [GROOVY-6682] - DOMCategory should not trim whitespace by default
  • [GROOVY-6685] - Align naming for XmlParser/XmlSlurper/DOMCategory whitespace handling
  • New Feature:
  • [GROOVY-2115] - text() method on NodeChild with XmlSlurper returns composite. Need just local text.
  • [GROOVY-6673] - Reflection API for Traits
  • Task:
  • [GROOVY-6690] - Upgrade testng to 6.8.8

New in Groovy 2.3.0 Beta 1 (Apr 5, 2014)

  • Sub-task:
  • [GROOVY-5923] - CompileStatic: closure dispatch is sometimes not type checked
  • Bug:
  • [GROOVY-4744] - Fail to extend Java class with public final String getProperty(String s)
  • [GROOVY-5249] - Avoid unnecessary locking in ClassInfo.getMetaClass
  • [GROOVY-5842] - Runtimer error when types down match with Map and Map.Entry when using @CompileStatic
  • [GROOVY-5864] - @AutoExternalize doesn't create no-argument constructor
  • [GROOVY-5899] - withObject[Output|Input]Stream - auto detect 'it' type
  • [GROOVY-6314] - ResourceGroovyMethods uses BufferedWriter/BufferedOutputStream
  • [GROOVY-6327] - Some source files still have \r\n line endings
  • [GROOVY-6329] - @Delegate should support including/excluding which methods are delegated to (and optionally complain if multiple exist) - advanced use cases
  • [GROOVY-6330] - Groovy not checking generics information correctly for covariant methods implementing interfaces
  • [GROOVY-6337] - weird verify error with TupleConstructor and Lazy
  • [GROOVY-6440] - Upgrade to Gradle 1.9
  • [GROOVY-6451] - Support repository roots in @GrabResolver should work correctly for relative hrefs
  • [GROOVY-6456] - AbstractHttpServlet.applyResourceNameMatcher race condition
  • [GROOVY-6501] - Decouple AST transformation from its interface via ASTTransformationCustomizer
  • [GROOVY-6511] - Illegal use of non virtual function call when compiling with JDK 8
  • [GROOVY-6524] - Implicit closure coercion conflicts with DGM methods in type checked mode
  • [GROOVY-6548] - groovysh: Import command is vulnerable and ugly
  • [GROOVY-6550] - VerifyError when instantiating class that has Java 8 default method in its ancestry
  • [GROOVY-6559] - JsonOutput does not escape single char (char/Character)
  • [GROOVY-6560] - JsonOutput does not escape URL (windows path)
  • [GROOVY-6561] - Implementation for running a script from a URL in GroovyMain is flawed.
  • [GROOVY-6573] - TailRecursive creates compilation error
  • [GROOVY-6576] - list literal constructor misses direct constructor call
  • [GROOVY-6577] - misleading error message for boolean assignment
  • [GROOVY-6579] - Groovy Console not responsive when running the closure.
  • [GROOVY-6580] - InnerClassCompletionVisitor does not overwrite existing propertyMissing/methodMissing impls completely
  • [GROOVY-6582] - Script.invokeMethod bypasses getProperty when looking for closure-valued properties.
  • [GROOVY-6593] - Operators other than dot do not support carriage returns
  • [GROOVY-6596] - New template engine: MarkupTemplateEngine with optional type checking
  • [GROOVY-6597] - GroovyClassLoader.addClasspath should respect URI paths and not use URL.equals
  • [GROOVY-6605] - Object ranges should be inferred as Range for improved fluency
  • [GROOVY-6625] - Sql failed to process query unterminated ' character - legal statement containing quotes
  • [GROOVY-6627] - Problem With CompileStatic And Class.newInstance()
  • [GROOVY-6640] - Compilation warning when using @AutoClone on an object with collection properties
  • [GROOVY-6641] - Compiling a source with a URL pointing to the current working directory produces incorrectly named classes for top-level closures
  • [GROOVY-6646] - vararg method resolution with static compilation selects wrong candidate between (String...) and (Class ...)
  • [GROOVY-6647] - static compilation fails at runtime for calling private constructor
  • [GROOVY-6654] - Can't @Override method with generic argument type in parameterized subclass
  • [GROOVY-6657] - Type checker doesn't find constructor if generic placeholder name doesn't match
  • [GROOVY-6662] - indy caching bug for static method invocations
  • Improvement:
  • [GROOVY-3048] - Groovy Sql API should support stored procedures that have output parameters and return a result set
  • [GROOVY-3328] - Automatic imports for selected text execution
  • [GROOVY-4464] - Loosen white space restrictions
  • [GROOVY-4639] - Add isSet()/hasValue()/similar method to ConfigObject
  • [GROOVY-5159] - Grammar could accept nls! before SPREAD_DOT
  • [GROOVY-5924] - Provide a mechanism to allow the type checker to know what are the expected argument types of a closure
  • [GROOVY-6159] - JsonBuilder list handling improvement
  • [GROOVY-6303] - Add ability to use a different font for the input/output area of Groovy Console
  • [GROOVY-6383] - Allow more conditional blocks other than "environments" in ConfigSlurper
  • [GROOVY-6393] - groovysh: suggest reducing startup time by loading commands from code
  • [GROOVY-6395] - groovysh tab-complete properties of Map/Node instances
  • [GROOVY-6399] - groovysh: Completion of standalone default methods and infix keywords
  • [GROOVY-6448] - Add @DelegatesTo to AstSpecificationCompiler for better IDE autocomplete
  • [GROOVY-6459] - Add comment/uncomment function to groovy-console
  • [GROOVY-6466] - indy DTT#castToType usage
  • [GROOVY-6467] - usage of DTT#castToBoolean in indy
  • [GROOVY-6479] - Closure to SAM interface coercion doesn't handle contravariant types correctly
  • [GROOVY-6499] - groovysh: do not offer GroovyObject Default methods on tab completion
  • [GROOVY-6544] - SourceAwareCustomizer should combine SourceUnit+ClassNode
  • [GROOVY-6546] - Improve parser speeds of Groovy JSON parser while maintaining backward compatability
  • [GROOVY-6554] - Improve serialization speeds of JsonOutput while maintaining backward compatibility
  • [GROOVY-6572] - Add faster invocation path for closures in static compilation mode
  • [GROOVY-6585] - Extend @BaseScript so that script bodies can be implemented in a method named something other than run.
  • [GROOVY-6588] - Enhance GroovyAssert for JUnit 4 Support
  • [GROOVY-6592] - Allow @BaseScript on import or package definition
  • [GROOVY-6615] - Support custom abstract method for configured Script base class like @BaseScript does
  • [GROOVY-6645] - AstSpecificationCompiler and his methods should be public
  • [GROOVY-6652] - Upgrade to ASM 5.0.1
  • New Feature:
  • [GROOVY-1642] - Script needs to be able to retrieve the full path of "its" file
  • [GROOVY-6164] - Add a method to GroovySystem to control which metaclasses are ok to GC
  • [GROOVY-6377] - New Groovy NIO module
  • [GROOVY-6570] - Add @TailRecursive AST transformation
  • [GROOVY-6649] - Support a Sortable annotation and transform
  • [GROOVY-6661] - Support the concept of "traits"
  • Task:
  • [GROOVY-6347] - Upgrade TestNG dependency to version 6.8.7
  • [GROOVY-6366] - Update Jline to 2.11
  • [GROOVY-6367] - Update JANSI to 1.11
  • [GROOVY-6492] - Upgrade to Gradle 1.10
  • [GROOVY-6667] - Dependency upgrades: ant to 1.9.3, xmlunit to 1.5, xstream to 1.4.7

New in Groovy 2.2.2 (Feb 27, 2014)

  • Bug:
  • [GROOVY-6077] - Dynamic dispatch fails to recognize updates in the meta-class
  • [GROOVY-6218] - Type checker doesn't find the inject method
  • [GROOVY-6293] - @Immutable collection members are apparently mutable (sometimes?)
  • [GROOVY-6334] - java.lang.VerifyError when using field from parent as default value for a parameter in a child's contructor
  • [GROOVY-6455] - @CompileStatic and @Delegate with generics causes compilation failure
  • [GROOVY-6457] - File.eachFileMatch is inconsistent with File.eachFile and incurs extra stat() syscalls
  • [GROOVY-6462] - Difference between @Grab behavior during compilation and at runtime
  • [GROOVY-6464] - antlib.xml is missing from jars
  • [GROOVY-6469] - Call site caching bug prevents NumberNumber* call sites from going fast path
  • [GROOVY-6470] - @Grab does not work if the same dependency is used with and without a classifier
  • [GROOVY-6471] - AccessControlException when compiling scripts on the fly with Google App Engine dev server
  • [GROOVY-6473] - @Immutable should provide a no-arg constructor
  • [GROOVY-6475] - @CompileStatic fails on valid generic type argument
  • [GROOVY-6480] - Can't use empty range on array with @CompileStatic
  • [GROOVY-6482] - @CompileStatic does not support empty ranges properly
  • [GROOVY-6488] - Closure to SAM coercion cannot infer generic return type
  • [GROOVY-6489] - Static type checker bug for propery called "names"
  • [GROOVY-6493] - size() and iterator() not correct for an empty IntRange
  • [GROOVY-6495] - /c/Program Files (x86)/Groovy/Groovy-2.2.1/bin/startGroovy: line 96: [: too many arguments
  • [GROOVY-6496] - Compiler reporting bug when calling extension module method in Groovy 2.2
  • [GROOVY-6500] - FactoryBuilderSupport does not expose a getter for disposalClosures
  • [GROOVY-6504] - Type checker select the wrong inject method
  • [GROOVY-6508] - Outer class property dispatcher called by an inner class's propertyMissing looks for attributes/fields rather than properties on the outer class
  • [GROOVY-6509] - A public method annotated with @Memoized is not accessible by subclasses
  • [GROOVY-6512] - AccessControlException at at org.codehaus.groovy.runtime.ProxyGeneratorAdapter$InnerLoader.
  • [GROOVY-6521] - GStringTemplateEngine shares binding
  • [GROOVY-6522] - implicit invocation not working for member closures when using @CompileStatic annotation
  • [GROOVY-6525] - Groovy type extension does not type check for generic parameter
  • [GROOVY-6528] - Confusing Compiler Error For Static Method Calls
  • [GROOVY-6531] - indy has no fastpath for div, previous and next
  • [GROOVY-6533] - parameter.metaClass returns different result when parameter type is "Class parameter" compared to when type is "Class parameter"
  • [GROOVY-6541] - exception in phase 'class generation' using getAt()
  • [GROOVY-6552] - CompileStatic runtime failure (GroovyCastException) with anonymous inner classes where method parameter is referenced in anonymous inner class implementation
  • [GROOVY-6558] - incrementing a Static Compiled Map with default Integer value won't compile
  • [GROOVY-6559] - JsonOutput does not escape single char (char/Character)
  • [GROOVY-6560] - JsonOutput does not escape URL (windows path)
  • [GROOVY-6564] - Type checker fails to infer a generic type without an intermediate variable definition
  • [GROOVY-6568] - VerifyError with implicit call() on closure field with @CompileStatic
  • [GROOVY-6574] - boolean local variable is compiled as Boolean
  • [GROOVY-6575] - Missing type checks for assignment to array
  • [GROOVY-6576] - list literal constructor misses direct constructor call
  • [GROOVY-6580] - InnerClassCompletionVisitor does not overwrite existing propertyMissing/methodMissing impls completely
  • Improvement:
  • [GROOVY-4279] - support int/int with int goal type
  • [GROOVY-4280] - support int/int with any goal type
  • [GROOVY-4281] - support T/V with T,V being one from (int, short, byte, char, long)
  • [GROOVY-6542] - Have @Deletgate include line number in stack traces
  • [GROOVY-6589] - Improve error message in the case the user defines a "run" method in a script

New in Groovy 2.2.1 (Dec 4, 2013)

  • Bug:
  • [GROOVY-5014] - Syntax highlighting problem in groovy.ui.Console text editor on empty string expression entering
  • [GROOVY-5385] - StackOverflow Exception when calling super.method, which returns an instance of the corresponding class.
  • [GROOVY-5740] - Cannot use ASTTransformationCustomizer with TimedInterrupt
  • [GROOVY-6186] - Cannot invoke method next() on varible, which is initialized by default, in each\eachWithIndex
  • [GROOVY-6191] - Memory leak in GroovyScriptEngineImpl
  • [GROOVY-6374] - Verify error when coercing Map for a final class
  • [GROOVY-6385] - groovy.bat: Can't use question mark in script parameters
  • [GROOVY-6387] - groovysh completion vulnerable to map types with 'class' entry
  • [GROOVY-6389] - groovysh flawed display of collections
  • [GROOVY-6391] - groovysh: broken alias and register commands
  • [GROOVY-6392] - Groovysh: filename completion of save command broken
  • [GROOVY-6400] - Constructor call with @CompileStatic causes ArrayIndexOutOfBoundsException during compilation
  • [GROOVY-6405] - AccessControlException with Google App Engine and indy version of the Groovy
  • [GROOVY-6411] - Incorrect exception behavior when class has @CompileStatic
  • [GROOVY-6419] - Groovy java.lang.VerifyError
  • [GROOVY-6421] - Newify fails for local variable assignment
  • [GROOVY-6424] - @GrabExclude's group element is documented as optional but the implementation requires it
  • [GROOVY-6426] - groovysh not running using the groovy-all jar
  • [GROOVY-6428] - AutoCloneStyle.SIMPLE doesn't play well with generics
  • [GROOVY-6431] - method resolution with parameter BigInteger fails for argument extending BigInteger
  • [GROOVY-6432] - ASTTransformationCustomizer should support raw Expressions for parameters
  • [GROOVY-6434] - @Newify AST transformation doesn't work for closure
  • [GROOVY-6435] - Static type checking error when assigning BigInteger child to BigInteger var from static context
  • [GROOVY-6436] - Log annotations broken for Turkish locale
  • [GROOVY-6444] - Closures are incorrectly coerced if a method call is done inside a closure
  • Improvement:
  • [GROOVY-6427] - The @Singleton transform should complain if other constructors are found

New in Groovy 2.2.0 RC 3 (Nov 6, 2013)

  • Bug:
  • [GROOVY-6403] - SpreadMap is horribly broken - isEmpty, containsKey, keySet etc. all fail
  • [GROOVY-6407] - Problem With EqualsAndHashCode And Primitive Boolean Properties
  • [GROOVY-6423] - Move dependency on JLine to Groovysh module

New in Groovy 2.1.9 (Oct 29, 2013)

  • Bug:
  • [GROOVY-6080] - IncompatibleClassChangeError: the number of constructors during runtime and compile time
  • [GROOVY-6385] - groovy.bat: Can't use question mark in script parameters
  • [GROOVY-6390] - Super constructor calls are made using MOP with @CompileStatic
  • [GROOVY-6400] - Constructor call with @CompileStatic causes ArrayIndexOutOfBoundsException during compilation
  • [GROOVY-6401] - @CompileStatic type inference bug with overridden methods: causes GroovyCastException at runtime
  • [GROOVY-6402] - @CompileStatic causes null-safe operator to call method twice

New in Groovy 2.1.8 (Oct 15, 2013)

  • Bug:
  • [GROOVY-6012] - GroovyScriptEngine uses UTF-8 on initial compilation, system file.encoding on recompilation
  • [GROOVY-6156] - Grapes/@Grab does not work with JDK8
  • [GROOVY-6196] - groovy compiler throws ArrayIndexOutOfBoundsException when combining @CompileStatic with @ToString/@EqualsAndHashCode with certain property names
  • [GROOVY-6241] - Type inference fails for methods returning generic map types
  • [GROOVY-6257] - groovydoc information loss for enums
  • [GROOVY-6350] - adding two empty lists fails with NPE
  • [GROOVY-6357] - Inner classes in Groovy should have the same access modifiers as in Java
  • [GROOVY-6365] - Closure taking Object[] in @CompileStatic class gets actual parameters wrapped in additional Object[]
  • [GROOVY-6372] - @Immutable fails to recognize non immutable classes
  • [GROOVY-6379] - Wrong example in the api of class Map(dropWhile)
  • [GROOVY-6384] - Change all calls to Class.forName to direct dispatch so that differences around classloading between Groovy and Java are resolved
  • [GROOVY-6386] - groovyc task throws ZipException when it encounters classpath resources that are not jars
  • Improvement:
  • [GROOVY-3969] - Groovy Console forgets size of input area
  • [GROOVY-6364] - More efficient implementation of thread safety in class ClassLoaderForClassArtifacts
  • [GROOVY-6371] - Documentation for connection parameters in URL.getText() (and related methods) is lacking
  • [GROOVY-6382] - Bintray JCenter added as a first remote resolver in the default Ivy chain

New in Groovy 2.1.7 (Sep 6, 2013)

  • Bug:
  • [GROOVY-5261] - A static method call inside a static closure bypasses closure delegate behavior
  • [GROOVY-5610] - Type checking of method calls using generics and default values is not supported
  • [GROOVY-5742] - CompileStatic goes into infinite loop when handling self-referential generics
  • [GROOVY-5839] - Typechecker does not detect shadowed generic parameter
  • [GROOVY-5873] - Type checker does not infer generic type
  • [GROOVY-5882] - @CompileStatic breaks with generic boxed numerics
  • [GROOVY-5883] - @CompileStatic incorrectly inferred closure return type upper bound
  • [GROOVY-5885] - @CompileStatic incorrectly infers generic return type
  • [GROOVY-5891] - Static compiler wrongly infers the return type of Class.cast()
  • [GROOVY-5920] - Type not inferred from Iterator
  • [GROOVY-5981] - @TypedChecked error when using generics
  • [GROOVY-6048] - Generated Java stub for inner interface with generics fails to compile
  • [GROOVY-6056] - @Lazy(soft=true) not quite right
  • [GROOVY-6155] - Can't access private static constant from closure, when using @CompileStatic
  • [GROOVY-6199] - @CompileStatic class throws runtime errors accessing outer class methods inside nested closures
  • [GROOVY-6249] - "int not-equal int" compiled using slow path in static complation mode
  • [GROOVY-6251] - Grab of an extension module with a transitive dependency fails
  • [GROOVY-6262] - Sql.withTransaction setAutoCommit in finally not wrapped in try/catch
  • [GROOVY-6266] - 'class generation' bug when CompileStatic with HashMap and List
  • [GROOVY-6270] - Verifyerror in static compiled code
  • [GROOVY-6272] - Cannot define a no-args closure in Groovy Shell
  • [GROOVY-6275] - DOMCategory: text() doesn't get node value if it is a CDATA section
  • [GROOVY-6288] - Overloaded operator with return type
  • [GROOVY-6289] - Null arg call not ambiguouseven though it should be
  • [GROOVY-6295] - GroovyDoc doesn't escape angle brackets in @code and @literal tags
  • [GROOVY-6300] - JavaStubGenerator clears instance initializers
  • [GROOVY-6311] - Using @CompileStatic on code that uses spread operator on a Set results in compilation error
  • [GROOVY-6317] - @CompileStatic on class using with(Closure) leads to compilation error.
  • Improvement:
  • [GROOVY-6269] - Document limitation of normal map-style constructor use when using @Immutable

New in Groovy 2.2.0 Beta 2 (Sep 6, 2013)

  • Sub-task:
  • [GROOVY-5875] - Cannot use DELEGATE_FIRST and delegates that are inner classes.
  • Bug:
  • [GROOVY-2974] - IntRange.step overflows near Integer.MAX_VALUE or Integer.MIN_VALUE
  • [GROOVY-5078] - Compiler should not allow 2 methods with same name and no argument to return different types
  • [GROOVY-5261] - A static method call inside a static closure bypasses closure delegate behavior
  • [GROOVY-5610] - Type checking of method calls using generics and default values is not supported
  • [GROOVY-5742] - CompileStatic goes into infinite loop when handling self-referential generics
  • [GROOVY-5839] - Typechecker does not detect shadowed generic parameter
  • [GROOVY-5873] - Type checker does not infer generic type
  • [GROOVY-5882] - @CompileStatic breaks with generic boxed numerics
  • [GROOVY-5883] - @CompileStatic incorrectly inferred closure return type upper bound
  • [GROOVY-5885] - @CompileStatic incorrectly infers generic return type
  • [GROOVY-5891] - Static compiler wrongly infers the return type of Class.cast()
  • [GROOVY-5920] - Type not inferred from Iterator
  • [GROOVY-5974] - @Delegate should support including/excluding which methods are delegated to (and optionally complain if multiple exist) - simple use cases
  • [GROOVY-5981] - @TypedChecked error when using generics
  • [GROOVY-6048] - Generated Java stub for inner interface with generics fails to compile
  • [GROOVY-6056] - @Lazy(soft=true) not quite right
  • [GROOVY-6155] - Can't access private static constant from closure, when using @CompileStatic
  • [GROOVY-6179] - Sublist can be modified by parent list operations
  • [GROOVY-6199] - @CompileStatic class throws runtime errors accessing outer class methods inside nested closures
  • [GROOVY-6250] - Parsing issue with enums using inner generic methods
  • [GROOVY-6251] - Grab of an extension module with a transitive dependency fails
  • [GROOVY-6261] - Inefficient method DefaultGrailsDomainClassInjector.implementsMethod(..)
  • [GROOVY-6262] - Sql.withTransaction setAutoCommit in finally not wrapped in try/catch
  • [GROOVY-6266] - 'class generation' bug when CompileStatic with HashMap and List
  • [GROOVY-6270] - Verifyerror in static compiled code
  • [GROOVY-6272] - Cannot define a no-args closure in Groovy Shell
  • [GROOVY-6274] - replaceNode improvements for XML processing
  • [GROOVY-6275] - DOMCategory: text() doesn't get node value if it is a CDATA section
  • [GROOVY-6288] - Overloaded operator with return type
  • [GROOVY-6289] - Null arg call not ambiguouseven though it should be
  • [GROOVY-6295] - GroovyDoc doesn't escape angle brackets in @code and @literal tags
  • [GROOVY-6300] - JavaStubGenerator clears instance initializers
  • [GROOVY-6306] - Unable to use Grape to grab DLLs
  • [GROOVY-6307] - @TimedInterrupt et al only partially support multiple annotations within a single source file
  • [GROOVY-6311] - Using @CompileStatic on code that uses spread operator on a Set results in compilation error
  • [GROOVY-6317] - @CompileStatic on class using with(Closure) leads to compilation error.
  • [GROOVY-6333] - Changes required regarding unaryPlus and bitwiseNegate operators for numbers
  • Improvement:
  • [GROOVY-3695] - DGM method signature improvements
  • [GROOVY-6269] - Document limitation of normal map-style constructor use when using @Immutable
  • [GROOVY-6287] - @Immutable could support Class as an immutable type
  • [GROOVY-6305] - newWriter() method for OutputStream
  • New Feature:
  • [GROOVY-4164] - A groovier way of iterate over dates/calendars: upTo() and downTo()
  • Task:
  • [GROOVY-6227] - Delete (not working) Eclipse files from groovy-core git repo
  • [GROOVY-6252] - bump ant dependency version from 1.9.1 to 1.9.2
  • [GROOVY-6280] - Update GPars Dependency to 1.1.0
  • [GROOVY-6292] - Update Gradle version to 1.7-rc-2
  • Test:
  • [GROOVY-5069] - AstBuilderFromSpecificationTest.testElvisOperatorExpression(): DSL and expected AST incorrect
  • Wish:
  • [GROOVY-6226] - Configure Gradle Eclipse plugin for groovy-core

New in Groovy 2.1.6 (Jul 10, 2013)

  • Bug:
  • [GROOVY-4632] - in eachRow's closures rows do not always respond to getClass()
  • [GROOVY-5349] - ICO file in distribution is broken/missing
  • [GROOVY-6187] - GroovyResultSet Proxy not working with Object methods
  • [GROOVY-6192] - @EqualsAndHashCode override not working when used with @Immutable if @Immutable appears first
  • [GROOVY-6195] - Use of overloaded methods with empty/varags parameters fails if type checking is active
  • [GROOVY-6200] - Ant groovyc throws a NoClassDefFoundError compiling a groovy class with @DelegatesTo and @CompileStatic
  • [GROOVY-6205] - META-INF/services/org.codehaus.groovy.runtime.ExtensionModule missing from groovy-all.jar
  • [GROOVY-6206] - @CompileStatic compilation fails sometimes in gradle build with error message Reference to method is ambiguous. Cannot choose between
  • [GROOVY-6207] - Incorrect flow typing reset after if branch

New in Groovy 2.2.0 Beta1 (Jul 10, 2013)

  • Sub-task:
  • [GROOVY-3105] - API documentation for ConfigSlurper
  • [GROOVY-5968] - Show only parts of bytecode
  • [GROOVY-5969] - Show closures in AST browser
  • [GROOVY-5970] - Non-blocking bytecode view
  • [GROOVY-5977] - "please select a class node" message in AST view
  • [GROOVY-6189] - basic SAM conversion
  • Bug:
  • [GROOVY-4258] - wiki-snapshot.pdf is not searchable. Text can't be copied.
  • [GROOVY-4485] - enum does not support default map constructors
  • [GROOVY-4503] - The delete key doesn't work as expected on groovysh on Linux
  • [GROOVY-4641] - Defining an abstract method in enum
  • [GROOVY-4655] - groovy.transform.EqualsAndHashCode annotation does not handle cycles
  • [GROOVY-4663] - Groovy Console shows both full and sanitized stack trace by default
  • [GROOVY-4701] - MissingMethodException#printStackTrace() throws exception if an arguments toString() method fails
  • [GROOVY-4794] - enum constant initializer parsing
  • [GROOVY-5068] - SecureASTCustomizer receiver needs documentation
  • [GROOVY-5211] - Method dispatch error with @Delegate
  • [GROOVY-5243] - @Canonical @TupleConstructor can't handle Object or Map properties
  • [GROOVY-5349] - ICO file in distribution is broken/missing
  • [GROOVY-5474] - groovy-all-2.0.0-beta-3-indy.jar invoke dynamic jar lacks osgi attributes
  • [GROOVY-5697] - Wiki snapshot (pdf) is outdated
  • [GROOVY-5755] - MissingPropertyException thrown when referencing an externally declared constant from a switch case in an enum instance method
  • [GROOVY-5756] - error during class generation: cannot define closures inside methods of an enum instance
  • [GROOVY-5771] - Project compilation fails when I put an enum in my project
  • [GROOVY-5801] - sql.firstRow() can be incredibly slow
  • [GROOVY-5802] - Exception thrown in groovyConsole
  • [GROOVY-5871] - @Grapes/@Grab not working with GroovyConsole
  • [GROOVY-5898] - Sql.java throws IllegalStateException("Failed to process query. Unterminated ' character?") when comments contain quotes
  • [GROOVY-5931] - groovy.util.slurpersupport.GPathResult is not java.lang.Iterable
  • [GROOVY-5937] - groovydoc does not document type alias for property correctly
  • [GROOVY-5938] - groovydoc does not document array property correctly
  • [GROOVY-5939] - groovydoc does not show link for property type
  • [GROOVY-5940] - groovydoc does not show class hierarchy correctly
  • [GROOVY-5948] - memoizeAtLeast and memoizeBetween don't cleanup garbage-collected SoftReferences
  • [GROOVY-5958] - 'Allowed Interruption' menu item is missing at GroovyConsole on MacOSX
  • [GROOVY-5971] - jarjar issue with CliBuilder/GroovyPosixParser
  • [GROOVY-5980] - Finally executes twice on NPE while casting method result
  • [GROOVY-6004] - Groovydoc should process annotations more intelligently
  • [GROOVY-6007] - @GrabResolver doesn't affect Ivy
  • [GROOVY-6017] - NPE in Groovydoc
  • [GROOVY-6019] - Cross compilation of Groovy annotation on Java class does not work
  • [GROOVY-6025] - Using short, byte, char annotation definition attribute constants should be supported
  • [GROOVY-6032] - @GrabResolver information is not retained at runtime in compiled class
  • [GROOVY-6054] - context variable breaks output transformation
  • [GROOVY-6057] - Add a Collection#combinations(Closure) method
  • [GROOVY-6058] - JsonSlurper should support URL and File variants for parse
  • [GROOVY-6065] - Overriding enum methods in constant specific body does not work if non-default constructor is used
  • [GROOVY-6068] - Thread safety issue in AntBuilder leads to major memory leak
  • [GROOVY-6082] - GroovyResultSet not updateable for Prepared Statements
  • [GROOVY-6085] - Annotation for inner interface in Java stub should not use dollar notation
  • [GROOVY-6093] - @XmlEnumValue annotation is lost from enum constant during compilation
  • [GROOVY-6106] - A list of syntax highlighting errors
  • [GROOVY-6120] - Verify error in class annotated with @Category if instance field is used
  • [GROOVY-6121] - Object[].groupBy is not defined
  • [GROOVY-6122] - FilteredNodeChildren doesn't provide childNodes() iterator
  • [GROOVY-6125] - Bugs in GPathResult.parent() and '..' notation
  • [GROOVY-6143] - groovysh & groovysh completion vulnerable to Classes with custom getProperty()
  • [GROOVY-6152] - LazyList does not allow range access
  • [GROOVY-6158] - Missing directory entries in groovy-all JAR
  • [GROOVY-6171] - Memory tweaks for groovy compiler
  • [GROOVY-6192] - @EqualsAndHashCode override not working when used with @Immutable if @Immutable appears first
  • [GROOVY-6201] - groovysh hangs on Edit command when using terminal editor (vim, nano, etc.) on posix terminals
  • [GROOVY-6205] - META-INF/services/org.codehaus.groovy.runtime.ExtensionModule missing from groovy-all.jar
  • [GROOVY-6211] - Fix failing Process tests on windows
  • [GROOVY-6217] - The Edit command should replace the shell buffer, not append.
  • [GROOVY-6232] - Type checker fails with internal error for diamond
  • [GROOVY-6233] - static type checker fails to check constructor arguments
  • [GROOVY-6234] - Groovy can not be build with Gradle 1.6
  • [GROOVY-6237] - wrong resolution for hidden generics
  • Improvement:
  • [GROOVY-2183] - Allow the 'edit' command to work on windows
  • [GROOVY-3332] - The groovy.time.*Duration classes make use of java.sql.Date
  • [GROOVY-4778] - The groovy wiki pdf dosn't support searching
  • [GROOVY-4877] - Groovy Console should set the context class loader to the class loader that loaded the script.
  • [GROOVY-4943] - Allow enableAutoDownload to be set when using @Grab
  • [GROOVY-5445] - Make @Delegate delegate to inherited property accessors
  • [GROOVY-5709] - improve Grapes error reporting for ZipException
  • [GROOVY-5749] - Groovy Console -- Option to Auto-Save on Run
  • [GROOVY-5973] - DGM.collectMany() overload that accepts Iterable
  • [GROOVY-6039] - Allow type checking extensions to handle ambiguous references to methods
  • [GROOVY-6043] - Precompiled typechecking extension scripts
  • [GROOVY-6044] - Add handler for "Cannot return value of type Foo on method returning type Bar" error
  • [GROOVY-6053] - Try iterating or transforming Object into Collection in DefaultGroovyMethods like count(), sort() and other Collection methods.
  • [GROOVY-6062] - Hard check for JTable in ColumnModelFactory.onNodeCompleted prevented columnModel() to be used in a noparent()-block
  • [GROOVY-6073] - Fixes and improvements for Groovysh
  • [GROOVY-6074] - Import completion for all jar files on CLASSPATH
  • [GROOVY-6076] - New DelegatingScript Class which provides a delegate for property and method calls
  • [GROOVY-6112] - Support AST transforms on the field generated by @Field in scripts
  • [GROOVY-6134] - Make @DelegatesTo support mapping to generic type argument
  • [GROOVY-6139] - Extend groovysh completion evaluating "mostly" safe expressions before cursor
  • [GROOVY-6145] - Groovysh could allow filename completion inside strings
  • [GROOVY-6150] - Add 'doc' command to groovysh
  • [GROOVY-6160] - @DelegatesTo should be @Documented
  • New Feature:
  • [GROOVY-4379] - Providing Groovy binary release (groovy-binary.zip) in Maven repository
  • [GROOVY-4993] - @Memoized AST Transformation for Methods
  • [GROOVY-6087] - grape command could provide a resolver option for "install"
  • [GROOVY-6178] - Add class name completion to 'doc' command
  • Task:
  • [GROOVY-3055] - Improve API class documentation
  • [GROOVY-5342] - Update hsqldb dependency
  • [GROOVY-5344] - Update jline dependency
  • [GROOVY-5964] - Upgrade gradle to 1.5
  • [GROOVY-5965] - Upgrade ivy to 2.3.0
  • [GROOVY-6060] - Upgrade Ant to 1.9.0
  • [GROOVY-6081] - Improve unit tests execution time
  • [GROOVY-6170] - Upgrade ant 1.9.0 -> 1.9.1
  • [GROOVY-6172] - bump testng dependency 6.8 -> 6.8.5
  • [GROOVY-6173] - bump xstream dependency 1.4.2 -> 1.4.4
  • [GROOVY-6216] - Upgrade to ASM 4.1
  • Wish:
  • [GROOVY-6208] - Move groovy.icns to lib
  • [GROOVY-6225] - Change template of "index-all.html" so that it can be parsed by Dash's javadocset command

New in Groovy 2.1.5 (Jun 21, 2013)

  • Bug:
  • [GROOVY-5349] - ICO file in distribution is broken/missing
  • [GROOVY-6192] - @EqualsAndHashCode override not working when used with @Immutable if @Immutable appears first
  • [GROOVY-6195] - Use of overloaded methods with empty/varags parameters fails if type checking is active
  • [GROOVY-6200] - Ant groovyc throws a NoClassDefFoundError compiling a groovy class with @DelegatesTo and @CompileStatic
  • [GROOVY-6205] - META-INF/services/org.codehaus.groovy.runtime.ExtensionModule missing from groovy-all.jar
  • [GROOVY-6206] - @CompileStatic compilation fails sometimes in gradle build with error message Reference to method is ambiguous. Cannot choose between
  • [GROOVY-6207] - Incorrect flow typing reset after if branch

New in Groovy 2.1.4 (May 31, 2013)

  • Bug:
  • [GROOVY-5449] - NullPointerException in compiler when using @Immutable
  • [GROOVY-5921] - BUG! exception in phase 'class generation' while poping argument from operand stack tracker
  • [GROOVY-6029] - GString not properly coerced to long
  • [GROOVY-6095] - Static checker fails on correct code
  • [GROOVY-6098] - @CompileStatic fails to compile when accessing boolean property using "isPropertyName()" getter method
  • [GROOVY-6099] - @CompileStatic gives ClassCastException at runtime when calling methods on Object in some scenarios
  • [GROOVY-6100] - @CompileStatic fails to compile when using constants declared on interfaces implemented by super class
  • [GROOVY-6101] - verify error with compile static
  • [GROOVY-6104] - Unable to access static interface fields from classes annotated with @CompileStatic
  • [GROOVY-6108] - Null-safe operator on lhs of comparison may lead to NPE with @CompileStatic
  • [GROOVY-6109] - Access to java.lang.Object#delegate is forbidden with Gaelyk
  • [GROOVY-6113] - Class with @CompileStatic throws VerifyError when passing int constant to method taking varargs object array
  • [GROOVY-6114] - Class with @CompileStatic, @Immutable, and a List property causes a compiler exception to be thrown
  • [GROOVY-6119] - Type checker doesn't recognize explicit map constructor
  • [GROOVY-6122] - FilteredNodeChildren doesn't provide childNodes() iterator
  • [GROOVY-6124] - Cannot use array slice with @CompileStatic
  • [GROOVY-6127] - VerifyError "Incompatible argument to function" when returning value from function after instanceof check in a function that should return Object (bug in inference base return type selection)
  • [GROOVY-6129] - @CompileStatic def map = new HashMap() crashes compiler
  • [GROOVY-6131] - Surprising Behavior With @CompileStatic And Collection.putAt
  • [GROOVY-6133] - bad example in comment of SourceAwareCustomizerFactory(source(basenameVaidator:{}))
  • [GROOVY-6137] - CompileStatic: in operator (isCase) isn't null safe in CS mode
  • [GROOVY-6147] - CompileStatic: dispatch bug with overloaded method when last argument is an array and there is an separate method without the last array argument
  • [GROOVY-6153] - SecureASTCustomizer using whitelist does not work deterministically
  • [GROOVY-6158] - Missing directory entries in groovy-all JAR
  • [GROOVY-6162] - 'this' in static context not treated as class by @CompileStatic
  • [GROOVY-6165] - Incorrect property lookup if a method starts with "get"
  • [GROOVY-6171] - Memory tweaks for groovy compiler
  • [GROOVY-6180] - Type checker skip mode not always applied to anonymous inner classes
  • [GROOVY-6183] - Errors with static attribute expression
  • [GROOVY-6187] - GroovyResultSet Proxy not working with Object methods
  • Improvement:
  • [GROOVY-6112] - Support AST transforms on the field generated by @Field in scripts
  • [GROOVY-6160] - @DelegatesTo should be @Documented
  • Task:
  • [GROOVY-6081] - Improve unit tests execution time

New in Groovy 2.1.3 (Apr 13, 2013)

  • Bug:
  • [GROOVY-4641] - Defining an abstract method in enum
  • [GROOVY-4655] - groovy.transform.EqualsAndHashCode annotation does not handle cycles
  • [GROOVY-5211] - Method dispatch error with @Delegate
  • [GROOVY-5243] - @Canonical @TupleConstructor can't handle Object or Map properties
  • [GROOVY-5755] - MissingPropertyException thrown when referencing an externally declared constant from a switch case in an enum instance method
  • [GROOVY-5756] - error during class generation: cannot define closures inside methods of an enum instance
  • [GROOVY-5771] - Project compilation fails when I put an enum in my project
  • [GROOVY-5859] - Invalid generic cast generated in super constructor call in a Java stub
  • [GROOVY-5948] - memoizeAtLeast and memoizeBetween don't cleanup garbage-collected SoftReferences
  • [GROOVY-6021] - @DelegatesTo: static type checker misses an error
  • [GROOVY-6054] - context variable breaks output transformation
  • [GROOVY-6055] - @DelegatesTo added by AST assumes static context
  • [GROOVY-6061] - in CompileStatic mode, "a[i] = a[j]" won't work
  • [GROOVY-6064] - @CompileDynamic misses the processor
  • [GROOVY-6065] - Overriding enum methods in constant specific body does not work if non-default constructor is used
  • [GROOVY-6068] - Thread safety issue in AntBuilder leads to major memory leak
  • [GROOVY-6072] - `String | []` represented as ClassExpression in AST (causing problems in Spock data tables)
  • [GROOVY-6075] - The compiler doesn't honor the "target bytecode" flag
  • [GROOVY-6078] - Chained null-safe navigation is broken in CompileStatic mode
  • [GROOVY-6082] - GroovyResultSet not updateable for Prepared Statements
  • [GROOVY-6086] - @CompileStatic problem with methods returning array of Objects - Error msg: "Cannot return value of type [LSomeClass; on method returning type SomeClass[]"
  • [GROOVY-6091] - Explicit use of "delegate" doesn't make use of @DelegatesTo
  • [GROOVY-6093] - @XmlEnumValue annotation is lost from enum constant during compilation
  • [GROOVY-6094] - ImportNode doesn't contain line information
  • Improvement:
  • [GROOVY-5445] - Make @Delegate delegate to inherited property accessors
  • New Feature:
  • [GROOVY-6087] - grape command could provide a resolver option for "install"

New in Groovy 2.1.2 (Mar 19, 2013)

  • Bug:
  • [GROOVY-6001] - Method overloading behavior is non-deterministic and differs from Java behavior
  • [GROOVY-6004] - Groovydoc should process annotations more intelligently
  • [GROOVY-6007] - @GrabResolver doesn't affect Ivy
  • [GROOVY-6008] - Extension methods not recognized by Gradle
  • [GROOVY-6011] - GroovyTypeCheckingExtensionSupport.safeCall() is not all that safe
  • [GROOVY-6015] - Use of Class.forName breaks groovy-Eclipse
  • [GROOVY-6017] - NPE in Groovydoc
  • [GROOVY-6019] - Cross compilation of Groovy annotation on Java class does not work
  • [GROOVY-6025] - Using short, byte, char annotation definition attribute constants should be supported
  • [GROOVY-6030] - "Reference to method is ambiguous" reported for unambiguous usage of List implementors
  • [GROOVY-6032] - @GrabResolver information is not retained at runtime in compiled class
  • [GROOVY-6034] - Compile static: report null assignments to variables with primitive types
  • [GROOVY-6035] - Regression, Compile static does not deduce Closure Type
  • [GROOVY-6041] - Cannot implement method from java interface with varargs and generics
  • [GROOVY-6042] - Change to ConfigSlurper broke non-string keys
  • [GROOVY-6045] - making super-call safe causes a verify error
  • [GROOVY-6047] - typechecker NPEs on method from findMethodsWithGenerated, unknown receiver
  • [GROOVY-6050] - [Static type checking] - Inconvertible types: cannot cast java.io.Writer to SomeInterface
  • [GROOVY-6051] - NPE in typechecker generics inference

New in Groovy 2.1.1 (Feb 15, 2013)

  • Sub-task:
  • [GROOVY-3105] - API documentation for ConfigSlurper
  • [GROOVY-5968] - Show only parts of bytecode
  • [GROOVY-5970] - Non-blocking bytecode view
  • [GROOVY-5977] - "please select a class node" message in AST view
  • Bug:
  • [GROOVY-4458] - NPE in org.codehaus.groovy.runtime.dgmimpl.NumberNumberPlus$DoubleInteger
  • [GROOVY-5425] - ObjectRange doesn't have BigInteger optimisation for size()
  • [GROOVY-5894] - Left shift on collection fails for list with CompileStatic
  • [GROOVY-5937] - groovydoc does not document type alias for property correctly
  • [GROOVY-5938] - groovydoc does not document array property correctly
  • [GROOVY-5939] - groovydoc does not show link for property type
  • [GROOVY-5940] - groovydoc does not show class hierarchy correctly
  • [GROOVY-5947] - Build test failures on jdk8b78
  • [GROOVY-5953] - Correct slow invocation path with EMC
  • [GROOVY-5958] - 'Allowed Interruption' menu item is missing at GroovyConsole on MacOSX
  • [GROOVY-5959] - switch case misbehave with @Typechecked
  • [GROOVY-5962] - @TypeChecked should have a default value for extensions
  • [GROOVY-5963] - Exception in phase 'class generation'
  • [GROOVY-5971] - jarjar issue with CliBuilder/GroovyPosixParser
  • [GROOVY-5978] - configscript not available from Groovyc class
  • [GROOVY-5979] - Groovy Ant task doesn't support indy/configscript/scriptbaseclass
  • [GROOVY-5980] - Finally executes twice on NPE while casting method result
  • [GROOVY-5984] - Weird behaviour of switch-case-break statement with @CompileStatic
  • [GROOVY-5988] - Map subscript operator not working with CompileStatic
  • [GROOVY-5991] - Type Checking Extensions cannot handle operator methods
  • [GROOVY-5994] - Type checking extensions should have access to the compile classpath
  • [GROOVY-5995] - Type checking extensions are not initialized when used with @CompileStatic
  • [GROOVY-5997] - CompileStatic compilation error using a regex matcher
  • [GROOVY-6000] - Using getter/setter without property and @DelegatesTo doesn't work
  • Improvement:
  • [GROOVY-5999] - Make @Delegate work with @DelegatesTo
  • [GROOVY-6002] - ModuleNode should setScriptBaseClassFromConfig from context or unit
  • Task:
  • [GROOVY-3055] - Improve API class documentation

New in Groovy 2.1.0 (Jan 26, 2013)

  • Bug fixes:
  • java.lang.ArrayIndexOutOfBoundsException: size==0
  • error: incompatible types on Java stubs returning generics
  • ConfigSlurper broken on AppEngine
  • groovysh 2.0.0-beta-3 ERROR java.lang.ClassCastException: required class java.lang.Class but encountered class org.fusesource.jansi.AnsiRenderer
  • Multiple problems with @CompileStatic and abstract inheritance
  • TokenException returns wrong endColumn value
  • groovy-all-2.0.0-sources.jar is missing lots of source files
  • Constants defined in an interface not visible to implementing subclass in a static context
  • Java stub generator generates wrong cast for return value of generic method
  • Problem with cached calls with GroovyServlet
  • Running script with '--enoding' param and some script parameters
  • ArrayIndexOutOfBounds when calling super method in SKIP @CompileStatic section
  • TypeChecker: Fails with NPE when use generics in inheritance tree?
  • CompileStatic: VerifierError calling method within findAll closure
  • Parsing problem of number literal 0x8000000000000000L
  • interface
  • JsonOutput Date formatting is not threadsafe
  • @Compile static Sql.newInstance
  • @CompileStatic casting problem
  • Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.io.IOException: Cannot run program "find": java.io.IOException: error=24, Too many open files
  • Cannot use @CompileStatic with Thread.start method
  • Grape's Grab ignores 'ext' when classifier is not set
  • Incorrectly finding "where" in query string
  • TimeoutException immediately thrown when using both TimedInterrupt and with {} closure on a Map
  • Input stream not closed
  • STC: calling a closure stored in a property yields an NPE
  • Groovyc ant task fails with nested javac when using generics
  • Stub compiler expands generic-inner-class variable declaration incorrectly
  • Delegating to an abstract class hierarchy doesn't implement interfaces at a higher level
  • performance problem in DefaultGroovyMethods.removeAll()
  • Delegation to an interface with deprecated methods shows a compile error
  • @TypeChecked and "Charset ISO_8859_1_CHARSET = Charset.forName("ISO-8859-1")": Cannot assign value of type java.lang.Class to variable of type java.nio.charset.Charset
  • Changes in groovy.json.JsonOutput require extensive permissions that aren't compatible with some web frameworks.
  • XmlNodePrinter uses quote variables for more than just attributes
  • Node is missing documentation
  • InvokerInvocationException not being unwrapped
  • Adding milliseconds with TimeCategory gives incorrect toString
  • Adding milliseconds with TimeCategory gives incorrect toString
  • Documentation error for ExpandoMetaClass
  • XmlSlurper Unable to Access Attributes with Same Name but in Different Namespaces
  • No way to tell @Immutable that you're using an Immutable List structure already
  • groovy, groovysh, groovyconsole, etc Cannot use spaces in supplied classpath -cp
  • jarsigner fails because two duplicate objects exists in groovy-2.0.1.jar
  • groovydoc not working (ClassNotFoundException)
  • Static compilation runtime error when using mapped constructor
  • The if(instanceof) block is not inferring type in a Closure
  • @Log won't compile with @CompileStatic if "log" is used in a Closure
  • xml:lang attribute appears to break StreamingMarkupBuilder >= 2.0.6
  • Java code behaves wrong on 2.0.5 but not on 1.8.8
  • null initial value can't be inferred with generic field of a class
  • The spread-call syntax is statically compiled for collections, but not for arrays
  • combining the default namespace and normal namespaces with StreamingMarkupBuilder causes issues
  • groovy.xml.QName uses string interning of volatile data and the trim antipattern
  • ConfigObject is unexpectedly no longer Cloneable
  • Groovy:[Static type checking] - Inconvertible types: cannot cast javax.script.ScriptEngine to javax.script.Invocable
  • Compiler wrongly tries only static resolution when calling spread operator on a collection of strings
  • Compiler hangs on this code
  • @CompileStatic resolves the 'in' operator wrongly
  • @CompileStatic(SKIP) does not work for constructors
  • Groovyc: BUG! exception in phase 'class generation' in source unit
  • SwingBuilder never shuts down the default executor service
  • @CompileStatic VerifyError
  • JsonBuilder toPrettyString gen "\"\"" for emtyString it should be ""
  • Obscure method getTimeZone(java.util.Date) in org.codehaus.groovy.runtime.TimeCategory
  • getAt(EmptyRange) not called when passing an EmptyRange to getAt(Collection)
  • Object.with seems to lose typing when generics are used
  • -baseScript option for groovy command
  • unable to add assertions via compile time transform
  • Casting map as Random results in java.lang.VerifyError
  • StackOverflow with CompileStatic
  • covariant method addition causing call to abstract method
  • -configscript option for groovy command.
  • java.lang.OutOfMemoryError through Iterator.collectEntries and others (part 1: handle collectEntries)
  • CompileStatic: long loses type when bitwise OR applied to it
  • @TypeChecked$TypeCheckingInfo is added to constructors
  • Problem dispatching array as argument to a closure
  • SyntaxException.getEndColumn() returns "getStartColumn() + 1"
  • DOMCategory should provide name() convenience method for Node's not just Element's
  • Stub generator should not use raw types when casting default return values
  • wasted work in "ClassCompletionVerifier.checkMethodForWeakerAccessPrivileges"
  • wasted work in "DefaultGrailsDomainClassInjector.implementsMethod"
  • wasted work in the "ClassNode" constructor
  • Copy/paste error in EmptyBorderFactory
  • wasted work in "ClassNode.addMixin"
  • Static type checking - Color.red recognized as int
  • Pasting into groovy console using shift+insert turns overwrite mode on.
  • wasted work in "SimpleGroovyClassDocAssembler.extractName"
  • ImportCustomizer for CompilerCustomizationBuilder is not added to configscript CompilerConfiguration
  • Closure default params can cause BUG! exception in phase 'class generation'
  • groovy.ui.Console cannot be extended
  • XmlTemplateEngine does not escape expression values (part 1)
  • @AutoClone excludes param works correctly only for COPY_CONSTRUCTOR AutoCloneStyle
  • startGroovy breaks one-liners containing double quotes
  • "string".count('') fails
  • Groovy fails to launch scripts from Cygwin
  • Non found static type checking extensions throw unexplicit NPE
  • JsonBuilder.toString() fails with StackOverflowError when using Expando
  • groovy does not detect correct Java version on Mac
  • Improvements:
  • Add DGM leftShift and other appropriate methods for java.lang.Appendable
  • upgrade to gradle 1.1
  • remove $getCallSiteArray for indy compilation
  • array coercion missing for subarray assignment
  • Provide a builder for compilation customizers
  • Add an includePackage attribute for the ToString AST transform
  • AST customizer working as a guard for another
  • Add base script option to groovyc and its ant task
  • Support for DSL type checking
  • ConfigSlurper - multiple environment blocks broken
  • Process should have a method called closeStreams()
  • Provide File method to get directory size
  • groovy.lang.Closure javadoc should mention method resolution in resolve strategy constants
  • @EqualsAndHashCode should allow caching of hashCode values
  • Provide a way to assemble an annoation consisting of several other
  • @CompileDynamic annotation
  • @ToString should allow caching of toString values
  • Add an "encoding" option for Groovydoc tool and Ant task
  • Make @Delegate carry over method annotations
  • Option to default to Static Compilation
  • Allow customization of @Singleton's instance getter name
  • collectMany should have a map variant
  • @Immutable annotation should allow Cloneable fields
  • Remove buildSrc's target and .gradle directories from the source distribution
  • Upgrade junit to 4.11
  • support jar: in addition to file: and http: for urls when running scripts on the command line
  • Pretty toString() for AnnotationConstantExpression
  • DGM should have a getAt method for Iterable
  • Upgrade testng to 6.8
  • The range interface should return the generic type T from getTo() and getFrom()
  • upgrade qdox to 1.12.1
  • getBytes for GString
  • NP when AST implementation class lacks @GroovyASTTransformation
  • Create/Distribute an archive containing source, binary and documentation
  • Provide a way to lookup class nodes from static type checking extension scripts
  • Add createTempDir() to File
  • New features:
  • @DelegatesTo annotation for IDEs/TypeChecker
  • Compiler flag for type checking most classes, and TypeUnchecked annotation override
  • Provide a flag for the groovyc ant task to control whether it searches the classpath for source files
  • Support an Observable version of Set
  • Add clone or copy constructor to XML Node
  • add DGM variant for Map#subMap supporting an array of keys
  • Element.serialize
  • Sub-task:
  • GROOVY-3055 public api documentation for entire groovy.util.slurpersupport package - especially GPathResult
  • upgrade to gradle 1.2
  • Upgrade the GPars dependency to 1.0

New in Groovy 2.1.0 RC 3 (Jan 22, 2013)

  • Bug:
  • [GROOVY-5918] - JsonBuilder.toString() fails with StackOverflowError when using Expando
  • [GROOVY-5922] - CompileStatic: long loses type when bitwise OR applied to it
  • [GROOVY-5933] - @TypeChecked$TypeCheckingInfo is added to constructors
  • [GROOVY-5934] - java.lang.OutOfMemoryError through Iterator.collectEntries and others (part 1: handle collectEntries)
  • Improvement:
  • [GROOVY-4879] - Add createTempDir() to File

New in Groovy 2.1.0 RC 2 (Jan 19, 2013)

  • Bug:
  • [GROOVY-3326] - Obscure method getTimeZone(java.util.Date) in org.codehaus.groovy.runtime.TimeCategory
  • [GROOVY-3419] - Groovy fails to launch scripts from Cygwin
  • [GROOVY-5366] - unable to add assertions via compile time transform
  • [GROOVY-5733] - JsonBuilder toPrettyString gen "\"\"" for emtyString it should be ""
  • [GROOVY-5865] - getAt(EmptyRange) not called when passing an EmptyRange to getAt(Collection)
  • [GROOVY-5878] - startGroovy breaks one-liners containing double quotes
  • [GROOVY-5901] - @AutoClone excludes param works correctly only for COPY_CONSTRUCTOR AutoCloneStyle
  • [GROOVY-5906] - StackOverflow with CompileStatic
  • [GROOVY-5907] - Object.with seems to lose typing when generics are used
  • [GROOVY-5910] - Non found static type checking extensions throw unexplicit NPE
  • [GROOVY-5915] - TokenException returns wrong endColumn value
  • [GROOVY-5917] - -configscript option for groovy command.
  • [GROOVY-5919] - Multiple problems with @CompileStatic and abstract inheritance
  • [GROOVY-5925] - Casting map as Random results in java.lang.VerifyError
  • [GROOVY-5926] - ArrayIndexOutOfBounds when calling super method in SKIP @CompileStatic section
  • [GROOVY-5927] - JsonBuilder.toPrettyString() incorrect for zero-length String
  • [GROOVY-5930] - -baseScript option for groovy command
  • [GROOVY-5932] - covariant method addition causing call to abstract method
  • Improvement:
  • [GROOVY-4714] - @EqualsAndHashCode should allow caching of hashCode values
  • [GROOVY-5446] - Make @Delegate carry over method annotations
  • [GROOVY-5816] - Add an "encoding" option for Groovydoc tool and Ant task
  • [GROOVY-5905] - NP when AST implementation class lacks @GroovyASTTransformation
  • [GROOVY-5911] - @CompileDynamic annotation
  • [GROOVY-5916] - Provide a way to lookup class nodes from static type checking extension scripts
  • [GROOVY-5928] - @ToString should allow caching of toString values
  • Wish:
  • [GROOVY-5904] - Create/Distribute an archive containing source, binary and documentation

New in Groovy 2.1.0 RC 1 (Jan 10, 2013)

  • Sub-task:
  • [GROOVY-3394] - public api documentation for entire groovy.util.slurpersupport package - especially GPathResult
  • Bug:
  • [GROOVY-3258] - groovy.xml.QName uses string interning of volatile data and the trim antipattern
  • [GROOVY-4670] - groovy.ui.Console cannot be extended
  • [GROOVY-5473] - groovysh 2.0.0-beta-3 ERROR java.lang.ClassCastException: required class java.lang.Class but encountered class org.fusesource.jansi.AnsiRenderer
  • [GROOVY-5632] - Closure default params can cause BUG! exception in phase 'class generation'
  • [GROOVY-5812] - Java code behaves wrong on 2.0.5 but not on 1.8.8
  • [GROOVY-5863] - ImportCustomizer for CompilerCustomizationBuilder is not added to configscript CompilerConfiguration
  • [GROOVY-5867] - xml:lang attribute appears to break StreamingMarkupBuilder >= 2.0.6
  • [GROOVY-5868] - ConfigObject is unexpectedly no longer Cloneable
  • [GROOVY-5870] - Groovy:[Static type checking] - Inconvertible types: cannot cast javax.script.ScriptEngine to javax.script.Invocable
  • [GROOVY-5872] - null initial value can't be inferred with generic field of a class
  • [GROOVY-5874] - Groovyc: BUG! exception in phase 'class generation' in source unit
  • [GROOVY-5879] - combining the default namespace and normal namespaces with StreamingMarkupBuilder causes issues
  • [GROOVY-5884] - @CompileStatic(SKIP) does not work for constructors
  • [GROOVY-5887] - The spread-call syntax is statically compiled for collections, but not for arrays
  • [GROOVY-5888] - Compiler wrongly tries only static resolution when calling spread operator on a collection of strings
  • [GROOVY-5889] - Compiler hangs on this code
  • [GROOVY-5890] - @CompileStatic resolves the 'in' operator wrongly
  • [GROOVY-5892] - @CompileStatic VerifyError
  • Improvement:
  • [GROOVY-4572] - Provide File method to get directory size
  • [GROOVY-5242] - groovy.lang.Closure javadoc should mention method resolution in resolve strategy constants
  • [GROOVY-5370] - ConfigSlurper - multiple environment blocks broken
  • [GROOVY-5452] - Process should have a method called closeStreams()
  • [GROOVY-5761] - getBytes for GString
  • New Feature:
  • [GROOVY-3689] - Element.serialize
  • [GROOVY-5877] - Provide a flag for the groovyc ant task to control whether it searches the classpath for source files
  • [GROOVY-5886] - Support an Observable version of Set

New in Groovy 2.0.5 (Oct 4, 2012)

  • Bug:
  • [GROOVY-4975] - GroovyScripeEngine fails to properly reload when dependent class is updated
  • [GROOVY-5723] - Problem with cached calls with GroovyServlet
  • [GROOVY-5729] - Delegation to an interface with deprecated methods shows a compile error
  • [GROOVY-5730] - array given spreaded to doCall method if EMC is enabled
  • [GROOVY-5732] - Delegating to an abstract class hierarchy doesn't implement interfaces at a higher level
  • [GROOVY-5739] - performance problem in DefaultGroovyMethods.removeAll()
  • Improvement:
  • [GROOVY-5716] - @Immutable annotation should allow Cloneable fields

New in Groovy 2.0.4 (Sep 22, 2012)

  • Bugs fixed:
  • [GROOVY-5187] - Groovy Script Engine creates new classes for each script and doesn't get garbage collected
  • [GROOVY-5418] - Compilation error with covariant return types (incompatible types)
  • [GROOVY-5439] - error: incompatible types on Java stubs returning generics
  • [GROOVY-5630] - Java stub generator generates wrong cast for return value of generic method
  • [GROOVY-5665] - Groovyc ant task fails with nested javac when using generics
  • [GROOVY-5675] - Stub compiler expands generic-inner-class variable declaration incorrectly
  • [GROOVY-5693] - Unexpected behavior of CompileStatic when assigning a Closure to a new block code
  • [GROOVY-5698] - STC: problem w/ map based constructors
  • [GROOVY-5699] - STC: Property inference issue with IntRange properties
  • [GROOVY-5700] - STC: different behavior w/ map subscript and property access when using elvis
  • [GROOVY-5702] - STC: checker confused by overridden method from sub interface
  • [GROOVY-5703] - CompileStatic - Calling vargarg parameter String is converted to array of strings
  • [GROOVY-5704] - CompileStatic conues field access with property access
  • [GROOVY-5705] - STC: calling a closure stored in a property yields an NPE
  • [GROOVY-5706] - JSR 223 invokeFunction broken in 2.0.2 - regression
  • [GROOVY-5707] - If superclass defines a readonly property, subclass may not use a private field of the same name
  • [GROOVY-5710] - Stub generator should not use raw types when casting default return values
  • [GROOVY-5713] - timing problem with GroovyScriptEngine recompilation

New in Groovy 2.0.2 (Sep 10, 2012)

  • Bug:
  • [GROOVY-4975] - GroovyScripeEngine fails to properly reload when dependent class is updated
  • [GROOVY-5125] - GroovyScriptEngine load from jarURL fail
  • [GROOVY-5187] - Groovy Script Engine creates new classes for each script and doesn't get garbage collected
  • [GROOVY-5321] - GroovyScriptEngine getResourceConnection treats resourceName argument as URI path spec
  • [GROOVY-5322] - MinimumRecompilationInterval is not used as an interval in GroovyScriptEngine
  • [GROOVY-5590] - Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.io.IOException: Cannot run program "find": java.io.IOException: error=24, Too many open files
  • [GROOVY-5627] - Problems with categories when using invoke dynamic
  • [GROOVY-5633] - indy transformation for receiver missing
  • [GROOVY-5635] - SyntaxException.getEndColumn() returns "getStartColumn() + 1"
  • [GROOVY-5636] - java.lang.ArrayIndexOutOfBoundsException: size==0
  • [GROOVY-5638] - static compiler fails with bug massage for method call in loop increment
  • [GROOVY-5639] - Spurious "Closure shared variable has been assigned with various type" exception
  • [GROOVY-5640] - static type checking fails in for-each loops
  • [GROOVY-5641] - for variable omitted type makes Caught: BUG! exception in phase 'class generation'
  • [GROOVY-5642] - TypeChecked/CompileStatic says ambiguous about calling PrintWriter.write(byte[],int,int)
  • [GROOVY-5643] - array length is not correct with CompileStatic'd code.
  • [GROOVY-5644] - UFO Operator() errors with CompileStatic and TypeChecked
  • [GROOVY-5645] - CompileStatic cause inconsistent compilation error when varargs super method called (reference to method is ambiguous)
  • [GROOVY-5647] - SKIP is not honored when an inner class is defined in a SKIP method
  • [GROOVY-5649] - Stack overflow when property accessor is annoated with @CompileStatic
  • [GROOVY-5650] - Groovy 2.0.1: Regression in generic type inference
  • [GROOVY-5653] - STC: non ambiguous method call reported ambiguous
  • [GROOVY-5654] - SC: Problem accessing a Map string key with property notation
  • [GROOVY-5655] - SC: byte[] and Byte[] typecasting issue
  • [GROOVY-5656] - STC: non ambiguous constructor reference when subclass is used
  • [GROOVY-5657] - SC: Unable to pop operand off an empty stack with default/optional paramaters
  • [GROOVY-5658] - SC: issue with optional parameters generating an NPE
  • [GROOVY-5659] - VerifyError when CompileStatic with Increment Array Element
  • [GROOVY-5660] - JsonOutput Date formatting is not threadsafe
  • [GROOVY-5662] - java.lang.VerifyError when accessing array passed to method
  • [GROOVY-5664] - OSGi bundle hangs in "starting" state
  • [GROOVY-5666] - Incorrectly finding "where" in query string
  • [GROOVY-5668] - Input stream not closed
  • [GROOVY-5669] - DOMCategory should provide name() convenience method for Node's not just Element's
  • [GROOVY-5671] - Static compilation of calling increment operator on Integer fails
  • [GROOVY-5672] - groovyc produces AIOOBE if @TypeChecked used with @CompileStatic in certain circumstances
  • [GROOVY-5678] - (primopts) increment on array not done as primopt
  • [GROOVY-5679] - Enclosing method is not set for anonymous inner classes
  • [GROOVY-5681] - Anonynous inner class as default argument value throws IOOBE
  • [GROOVY-5683] - Accessing length of an array of arrays occurs VerifyError
  • [GROOVY-5687] - Constants defined in an interface not visible to implementing subclass in a static context
  • [GROOVY-5688] - NullPointerException in StaticTypeCheckingVisitor
  • [GROOVY-5689] - ClassCastException Double->Float with -= += operators and closures
  • [GROOVY-5690] - Compiler exception while applying to @CompileStatic and subclasses
  • [GROOVY-5691] - TimeoutException immediately thrown when using both TimedInterrupt and with {} closure on a Map
  • [GROOVY-5692] - TypeChecked not checking generics placeholder types across arguments when a method has multiple arguments
  • Improvement:
  • [GROOVY-5646] - Allow customization of @Singleton's instance getter name
  • [GROOVY-5680] - collectMany should have a map variant
  • New Feature:
  • [GROOVY-5682] - Add clone or copy constructor to XML Node

New in Groovy 2.0.1 (Jul 25, 2012)

  • Bug:
  • [GROOVY-5208] - Incorrect line numbers in code using optimized primitive operations
  • [GROOVY-5466] - Invalid code crashes the compiler
  • [GROOVY-5508] - Verifier fails to check property types with covariant override
  • [GROOVY-5543] - Grab a Module Extension fails to match Map objects
  • [GROOVY-5556] - GAPI on codehaus doesn't appear to have subproject groovydoc (check gradle build dist target)
  • [GROOVY-5557] - @Slf4j throws error in Groovy 2.0
  • [GROOVY-5559] - Type checker should treat gstrings as strings for generic collections
  • [GROOVY-5562] - GroovyFX - Class Cast Exception on BigDecimal to double when using Groovy 2.0 Indy="true"
  • [GROOVY-5564] - @CompileStatic(SKIP) throws an error
  • [GROOVY-5565] - NPE when using TypeChecking and AIC with field
  • [GROOVY-5566] - possible bug when applying static typing to AIC referencing an outer local variable
  • [GROOVY-5567] - Types not inferred correctly for static fields
  • [GROOVY-5568] - DGM properties not available in interfaces?
  • [GROOVY-5569] - Can't call method with concrete map implementation and generic arguments
  • [GROOVY-5570] - CompileStatic gives VerifyError: Register 1 contains wrong type
  • [GROOVY-5572] - Invalid behaviour of ?: operator within an 'if' statement in closure
  • [GROOVY-5573] - Type checker incorrectly selecting DGM return type instead of actual return type
  • [GROOVY-5574] - Log4j annotation causes class generation BUG!
  • [GROOVY-5578] - Cannot use default map constructor with Java classes and type checking
  • [GROOVY-5579] - Static compiler sometimes use setProperty where it could make direct access
  • [GROOVY-5580] - @CompileStatic doesn't support interfaces extending other interfaces
  • [GROOVY-5581] - Compilation order important to CompileStatic
  • [GROOVY-5583] - Parsing problem of number literal 0x8000000000000000L
  • [GROOVY-5584] - @CompileStatic fails to compile Map.each { key, value -> } form
  • [GROOVY-5585] - interface.property not recognized by type checker if property is of Object
  • [GROOVY-5586] - @Canonical class causes compile-time NPE under @StaticCompilation
  • [GROOVY-5587] - Map.Entry#key and #value fail to infer type correctly under @StaticCompile
  • [GROOVY-5588] - Multidimensional Arrays: Incompatible argument to function
  • [GROOVY-5589] - Type checker doesn't allow property notation as LHS when only a setter exists
  • [GROOVY-5590] - Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.io.IOException: Cannot run program "find": java.io.IOException: error=24, Too many open files
  • [GROOVY-5591] - groovy-all-2.0.0-sources.jar is missing lots of source files
  • [GROOVY-5592] - No recent snapshot for 2.0.1 available from http://snapshots.repository.codehaus.org
  • [GROOVY-5593] - groovy-all-2.0.0 does not work with JDK 1.5
  • [GROOVY-5594] - Type checker doesn't infer property type if coming from a generified getter
  • [GROOVY-5595] - Type checker doesn't fully infer Map.Entry type
  • [GROOVY-5598] - Cannot use @CompileStatic with Thread.start method
  • [GROOVY-5601] - static type checker NPE when instantiating generic interface (with and without diamond)
  • [GROOVY-5605] - Class Cast Exception when using Groovy 2.0 Indy="true" and using an integer with a double.
  • [GROOVY-5606] - Problem with CompileStatic
  • [GROOVY-5607] - @Compile static Sql.newInstance
  • [GROOVY-5608] - @CompileStatic casting problem
  • [GROOVY-5611] - Annotating a method with @CompileStatic when the class is already annotated leads to errors
  • [GROOVY-5612] - Fix "gradle idea" task
  • [GROOVY-5613] - @CompileStatic - Caught: java.lang.VerifyError - Inconsistent stack height 1 != 2
  • [GROOVY-5614] - Diamond Inference broken with Static Compilation
  • [GROOVY-5615] - var.getProperties() cannot be invoked as var.properties when using @CompileStatic
  • [GROOVY-5616] - Compile static failing to allow cast of groovy type to GroovyObject
  • [GROOVY-5617] - strange behavior with lists involving generics
  • [GROOVY-5618] - Type checker throws No such property: value for class: java.lang.Object
  • [GROOVY-5619] - Static compiler calls setter even with attribute notation
  • [GROOVY-5620] - Spread-safe operator unsupported on LHS of assignments
  • [GROOVY-5622] - Cannot loop using foreach or "for in" in @TypeChecked code
  • [GROOVY-5623] - collection's "each" fails if compiled with @CompileStatic
  • Improvement:
  • [GROOVY-5561] - When using @CompileStatic you cannot access class properties in some circumstances
  • [GROOVY-5577] - Augmenting the new AST node types introduced by compile static
  • [GROOVY-5597] - Add a label lookup feature to @ASTTest
  • [GROOVY-5599] - Assignments to null of variables with generics lead to cryptic errors
  • New Feature:
  • [GROOVY-5542] - Support Mac OS X Lion full screen capability

New in Groovy 2.0.0 (Jul 11, 2012)

  • a static type checker to let the compiler tell you about the correctness of your code,
  • static compilation for the performance of the critical parts of your application,
  • modularity, splitting the Groovy JAR into smaller feature-oriented JARs and letting you create your own extension modules,
  • JDK 7 Project Coin syntax enhancements, so that Groovy is still as friendly as possible with its Java cousin,
  • JDK 7 Invoke Dynamic integration to benefit from the support of the JVM for dynamic languages.

New in Groovy 1.9 Beta 1 (Jul 25, 2011)

  • Bug:
  • [GROOVY-2177] - Groovysh 'history recall' seems to be picking the wrong entry (off by 1)
  • [GROOVY-2914] - LoadConfiguration fails to load *.jar
  • [GROOVY-4306] - Groovy Console Icon for Mac OS X broken
  • [GROOVY-4480] - Parsing seems to have changed in 1.8
  • [GROOVY-4498] - Only the root exception in a script is printed
  • [GROOVY-4504] - Groovy compilation results in warnings in generated code
  • [GROOVY-4601] - Stub generator doesn't escape strings with mixed single and double quotes
  • [GROOVY-4609] - Using log variable created with @Log or @Log4j causes compiler error if used in static method
  • [GROOVY-4691] - Grails 1.3.7 breaks bean-fields plugin
  • [GROOVY-4695] - anonymous classes InnerClassNode has -1 for line numbers
  • [GROOVY-4707] - Scripts' class nodes didn't have correct source positions
  • [GROOVY-4709] - @Interrupt AST transformations should not be applied on abstract methods
  • [GROOVY-4719] - Groovy build fails in tests - test RedundantCastInStubTest fails
  • [GROOVY-4720] - Method overriding with ExpandoMetaClass is partially broken
  • [GROOVY-4746] - broken @link in MetaObjectProtocol.java's javadoc
  • [GROOVY-4748] - javadoc comment problems which breaks generated HTMLs
  • [GROOVY-4781] - @WithReadLock and @WithWriteLock creates the wrong locks
  • [GROOVY-4782] - @Singleton(lazy=true) does not perform the correct double checked locking for Java
  • [GROOVY-4806] - Sql.eachRow documentation: actual GroovyResultSet vs. documentation GroovyRowResult
  • [GROOVY-4813] - GroovyScriptEngine does not use configured ImportCustomizer
  • [GROOVY-4818] - JsonSlurper's methods are package private
  • [GROOVY-4833] - @Field AST Transformation looses annotations
  • [GROOVY-4840] - LogASTTransformation fails if super class defines a private log field
  • [GROOVY-4854] - MyEnum.values() bombs out on AppEngine
  • [GROOVY-4866] - Documentation incorrect for Object#with
  • [GROOVY-4881] - JsonSlurper does not handle backslash
  • [GROOVY-4903] - StackOverflowError when parsing JSON text with JsonSlurper().parseText()
  • [GROOVY-4915] - Wrong access modifiers in JsonSlurper
  • Improvement:
  • [GROOVY-1570] - Truncate string when when generating MissingMethodException
  • [GROOVY-3401] - Ternary operator ?: does not handle newline before ":" gracefully
  • [GROOVY-4595] - Project Coin underscore placeholder in numbers
  • [GROOVY-4664] - Add @ThreadInterrupt to console scripts automatically
  • [GROOVY-4671] - DGM#inject can be generified
  • [GROOVY-4675] - Prefer ClassHelper.make(Class) over new ClassNode(Class)
  • [GROOVY-4690] - Allow PrimaryClassNodeOperations to be added to CompilerConfiguration
  • [GROOVY-4693] - GDK groovydocs for String.padXXX are not very clear [new wording attached]
  • [GROOVY-4703] - Improve FactoryBuilderSupport exception messages
  • [GROOVY-4713] - typo( lists -> maps ) in GDK doc comment
  • [GROOVY-4724] - add support for overriding package-, doc- or class-templates in Groovydoc descendant classes
  • [GROOVY-4779] - add syntax highlighting to the AST Browser decompiled source view
  • [GROOVY-4785] - Improve Closure javadoc for resolution strategy
  • [GROOVY-4800] - Avoid too many temporary arrays with each and eachWithIndex
  • [GROOVY-4814] - When working with ClassNodes, sometimes need to call getFields() before getField() will work (lazy init)
  • [GROOVY-4815] - force annotations on variables to be included in ast transforms
  • [GROOVY-4824] - groovyConsole should support more common file types: .story, .gpp, and .grunit
  • [GROOVY-4830] - GroovyConsole: Decompiled View should show method and class annotations
  • [GROOVY-4842] - Make @ThreadInterrupt optional in Groovy console
  • [GROOVY-4860] - Enable JsonBuilder to work with objects recursively
  • [GROOVY-4897] - better tab completions for GroovyShell
  • [GROOVY-4925] - JsonBuilder with Writer support would be handy
  • New Feature:
  • [GROOVY-1512] - When executing command-line scripts it should be possible to execute a BEGIN and an END method (akin to AWK or Perl)
  • [GROOVY-1984] - Shorther syntax for catching multiple exceptions at once
  • [GROOVY-4594] - Project Coin binary literals
  • [GROOVY-4865] - Add a take method to Collections, Iterators, Arrays
  • [GROOVY-4885] - groupBy with a list or an array of closures as it's parameter for nested grouping

New in Groovy 1.8.1 (Jul 25, 2011)

  • Sub-task:
  • [GROOVY-1475] - final modifier on a method parameter is not respected
  • Bug:
  • [GROOVY-2883] - Bug in AntBuilder - DemuxOutputStream should be used
  • [GROOVY-3088] - Modifiers on local variables are ignored
  • [GROOVY-4112] - Joint compilation fails if Groovy method with array parameter is called in vararg style from Java
  • [GROOVY-4306] - Groovy Console Icon for Mac OS X broken
  • [GROOVY-4498] - Only the root exception in a script is printed
  • [GROOVY-4570] - @ToString does not work for enum types
  • [GROOVY-4646] - Having a setter with a return value causes the stub generator to generate multiple setters and then fail to compile
  • [GROOVY-4650] - stub generation fails with generic signatures
  • [GROOVY-4673] - java.lang.ClassFormatError: Illegal class name "groovy/jmx/builder/package-info" in class file groovy/jmx/builder/package-info
  • [GROOVY-4686] - Varargs are not displayed by GroovyDoc
  • [GROOVY-4732] - Java5 configureClassNode does not take care of parameter annotations
  • [GROOVY-4745] - ClassNode.equals throws ClassCastException for object of other type
  • [GROOVY-4767] - Compilation error for generic interface method
  • [GROOVY-4768] - java stub contains "AnnotationNode" string instead of an annotation within an annotation
  • [GROOVY-4784] - [ null, 'ah' ].findAll() throws a NullPointerException
  • [GROOVY-4801] - Thrown exception not accessable inside catch block when class has @Category transformation applied
  • [GROOVY-4806] - Sql.eachRow documentation: actual GroovyResultSet vs. documentation GroovyRowResult
  • [GROOVY-4813] - GroovyScriptEngine does not use configured ImportCustomizer
  • [GROOVY-4818] - JsonSlurper's methods are package private
  • [GROOVY-4827] - @EqualsAndHashCode.excludes doesn't work correctly with class inheritance
  • [GROOVY-4831] - New line character is not escaped in attribute when using MarkupBuilder
  • [GROOVY-4833] - @Field AST Transformation looses annotations
  • [GROOVY-4840] - LogASTTransformation fails if super class defines a private log field
  • [GROOVY-4844] - @ToString should use getX() rather than the field x when getting property values
  • [GROOVY-4854] - MyEnum.values() bombs out on AppEngine
  • [GROOVY-4861] - Duplicate entry in InnerClasses
  • [GROOVY-4864] - HTML builder for "textarea" creates empty "textarea" element if no text specified, which is not alloed in HTML
  • [GROOVY-4866] - Documentation incorrect for Object#with
  • [GROOVY-4881] - JsonSlurper does not handle backslash
  • [GROOVY-4884] - Calling a method overwritten via metaClass from another method uses the original (non-overwritten) method
  • [GROOVY-4890] - MapExpression#getText incorrect for empty map
  • [GROOVY-4892] - GroovyInterceptable / invokeMethod does not correctly in Groovy 1.8.0 when Methods with no arguments are "delegated"
  • [GROOVY-4898] - groovydoc fails with MissingPropertyException
  • [GROOVY-4902] - Groovy class not compatible with Java integration when @Immutable is used
  • [GROOVY-4903] - StackOverflowError when parsing JSON text with JsonSlurper().parseText()
  • [GROOVY-4907] - Command line interface of AstNodeToScriptAdapter.groovy don't works
  • [GROOVY-4909] - insufficient compiler error messages relating to interface member visibility
  • [GROOVY-4914] - FieldNode doesn't collect annotations
  • [GROOVY-4915] - Wrong access modifiers in JsonSlurper
  • [GROOVY-4916] - Set equality fails if null elements are present
  • [GROOVY-4920] - Default values for primitives error in groovy 1.8.0
  • [GROOVY-4923] - Creating Pattern from declared String variable with pattern = ~stringvariable fails
  • [GROOVY-4924] - Class implementing a generic interface causes VerifyError
  • [GROOVY-4935] - stub generator loses package qualification for generic type argument
  • [GROOVY-4936] - package protected method in Parent class cannot be called
  • Improvement:
  • [GROOVY-1570] - Truncate string when when generating MissingMethodException
  • [GROOVY-3401] - Ternary operator ?: does not handle newline before ":" gracefully
  • [GROOVY-3921] - Add connection configuration options to URL.getText(), URL.newInputStream() and URL.newReader()
  • [GROOVY-4223] - Add local maven repo to default Grape config
  • [GROOVY-4798] - To support PreparedStatement.addBatch()
  • [GROOVY-4814] - When working with ClassNodes, sometimes need to call getFields() before getField() will work (lazy init)
  • [GROOVY-4815] - force annotations on variables to be included in ast transforms
  • [GROOVY-4824] - groovyConsole should support more common file types: .story, .gpp, and .grunit
  • [GROOVY-4842] - Make @ThreadInterrupt optional in Groovy console
  • [GROOVY-4848] - Allow custom exception class to be thrown in @Interrupt AST transformations
  • [GROOVY-4849] - @EqualsAndHashCode should use getX() instead of x when accessing properties
  • [GROOVY-4860] - Enable JsonBuilder to work with objects recursively
  • [GROOVY-4876] - @Newify works for pre-defined classes but not for classes defined in the same script
  • [GROOVY-4880] - Make ASTTransformationCustomizer handle annotation parameters
  • [GROOVY-4889] - An IDENTITY closure could be made available
  • [GROOVY-4893] - Minor enhancement to provide no-arg versions of DGM grep(), find() and findAll() methods
  • [GROOVY-4894] - 'includes' attribute in EqualsAndHashCode
  • [GROOVY-4897] - better tab completions for GroovyShell
  • [GROOVY-4899] - findResults object/collection/map enhancement patch (CLONED from findResult)
  • [GROOVY-4904] - Map.inject() doesn't accept closure with 3 arguments (collector, key, value), only 2 (collector, Map.Entry)
  • [GROOVY-4925] - JsonBuilder with Writer support would be handy
  • [GROOVY-4929] - rename DGM collectAll to collectNested - keep original as an alias for the time being with a view to deprecating/removing eventually
  • [GROOVY-4932] - groovy should provide a shorthand for: collect{}.flatten()
  • New Feature:
  • [GROOVY-1512] - When executing command-line scripts it should be possible to execute a BEGIN and an END method (akin to AWK or Perl)
  • [GROOVY-4865] - Add a take method to Collections, Iterators, Arrays
  • [GROOVY-4885] - groupBy with a list or an array of closures as it's parameter for nested grouping