Changelog for Groovy 3.0.0-beta-1

Bug

  • [GROOVY-7160] - NoSuchMethodError for varargs when type parameter extends interface
  • [GROOVY-7687] - Bug with @CompileStatic and nested closures
  • [GROOVY-7812] - Static inner classes cannot be accessed from other files when running by 'groovy' command
  • [GROOVY-7856] - Adding CompileStatic via compiler config script to class with eachWithIndex results in exception in instruction selection phase
  • [GROOVY-7954] - Equal Operator for Classes implementing Comparable not Working on Interfaces
  • [GROOVY-8073] - Map delegate within @CompileStatic
  • [GROOVY-8238] - multiple-catch statement behaves strangely
  • [GROOVY-8272] - Extending trait can't execute static method
  • [GROOVY-8651] - Method override weaker access check does not fully account for package-private visibility
  • [GROOVY-8873] - Fails at runtime with @CompileStatic and two nested with
  • [GROOVY-8907] - StringGroovyMethods.findAll(String, Pattern, Closure) and StringGroovyMethods.findAll(CharSequence, Pattern, Closure) is with @ClosureParams incorrect
  • [GROOVY-8947] - Fail to resolve non-static inner class outside of outer class
  • [GROOVY-8951] - Traits defining getter conflicts with generated getter (improvements for pre-compiled case)
  • [GROOVY-8953] - Imported enum causes compilation bug preventing tests from compiling
  • [GROOVY-8954] - VerifyError due to incorrect bytecode produced when a trait super property call also comes from an interface
  • [GROOVY-8959] - NPE in StaticVerifier
  • [GROOVY-8964] - MissingMethodException when trying to resolve overload with variable arguments
  • [GROOVY-8967] - @Immutable not handling property default values from map constructor
  • [GROOVY-8969] - Parameter name data is erased when applying traits regardless of --parameters setting
  • [GROOVY-8970] - Fix typo in MANIFEST.MF: Main-class
  • [GROOVY-8975] - GroovyCastException on the result of CliBuilder.parseFromSpec
  • [GROOVY-8978] - NPE when accessing protected method from subclass clone
  • [GROOVY-8990] - No compiler error for mismatched generics when using &
  • [GROOVY-8991] - Difference in behaviour with closure and lambda
  • [GROOVY-9007] - Getting java.lang.NoSuchFieldError with groovy version 2.5.6
  • [GROOVY-9009] - AutoClone throws ClassCastException when used with @ToString or @EqualsAndHashCode
  • [GROOVY-9010] - MissingMethodException during ASTTest annotation assert execution
  • [GROOVY-9014] - printf does not respect "out" property
  • [GROOVY-9018] - WARNING: package sun.awt.windows not in java.desktop
  • [GROOVY-9028] - @EqualsAndHashCode can't recognize final field
  • [GROOVY-9035] - config script: unexpected NPE when processing compiler config DSL
  • [GROOVY-9040] - scripts within src/bin don't pass latest shellcheck recommendations
  • [GROOVY-9043] - Access to package-scoped static field is forbidden for inner class in static compilation mode
  • [GROOVY-9046] - Build hardening
  • [GROOVY-9049] - EncodingGroovyMethods.digest() truncates hashes over 128 bits starting with 0's
  • [GROOVY-9050] - Missing @Generated annotation in @Sortable
  • [GROOVY-9051] - The default constructor should be annotated with @Generated
  • [GROOVY-9052] - Missing @Generated annotation on @Vetoable
  • [GROOVY-9053] - Missing @Generated annotation in @Bindable
  • [GROOVY-9058] - each parameter type not correctly inferenced
  • [GROOVY-9061] - Tests containing @Grab statements within nested scripts fail in JDK12
  • [GROOVY-9063] - Groovy 2.5.6 @CompileStatic generates invalid bytecode (leading to runtime ClassCastException) when accessing protected instance member from 2 level of nested closures
  • [GROOVY-9077] - STC: inferred type not always stored for property getters that resolve to a method
  • [GROOVY-9078] - Inefficiency in MethodNode and ConstructorNode
  • [GROOVY-9079] - STC: NPE in StaticTypeCheckingVisitor.inferSAMTypeGenericsInAssignment
  • [GROOVY-9080] - MarkupTemplateEngine uses invalid XML entity for escaping double quotes
  • [GROOVY-9086] - @CompileStatic of closure calls with OWNER_FIRST fail at runtime with ClassCastException
  • [GROOVY-9089] - STC: owner qualifier produces error for nested closures
  • [GROOVY-9095] - Default retention policy not implemented for annotation
  • [GROOVY-9096] - Repeatable annotation not wrapped with container type in class file
  • [GROOVY-9105] - Fix trying to compile properties files and anything that doesn't end with java

Dependency upgrade

Documentation

  • [GROOVY-9019] - triple-single and triple-double quotes handle backslash escapes equally
  • [GROOVY-9085] - Add INOUT stored procedure example to asciidoc doc for groovy-sql

Epic

Improvement

  • [GROOVY-8180] - GroovyConsole improvement: log to file option
  • [GROOVY-8339] - Fix warning "An illegal reflective access operation has occurred"
  • [GROOVY-8535] - FieldNode constructor appears to call setType incorrectly
  • [GROOVY-8704] - IntRange should be Serializable
  • [GROOVY-8719] - Add DelegatesTo annotation to CompilerCustomizationBuilder.withConfig
  • [GROOVY-8903] - Retrofit NamedParams to groovy.sql.Sql
  • [GROOVY-8942] - Highlight matched parentheses, brackets and curly braces in Groovy Console when caret touching them
  • [GROOVY-8943] - @CompileStatic with getAt(int) and getAt(String)
  • [GROOVY-8945] - Improve performance of DGM `groupBy` and `countBy`
  • [GROOVY-8949] - Run dependency management call as privileged action
  • [GROOVY-8962] - Provide an option to generate Java stubs in memory for better compilation performance
  • [GROOVY-8971] - The VMPlugin configureClassNode method should retain parameter name information when available
  • [GROOVY-8972] - CompilationUnit#createClassVisitor should use the class node resolver rather than the class loader directly
  • [GROOVY-8986] - Change the order of default imported packages to reduce the times of resolving
  • [GROOVY-8987] - Support profiling parser
  • [GROOVY-8995] - Improve the performance of creating list
  • [GROOVY-9008] - Support native method reference and constructor reference (basic cases)
  • [GROOVY-9022] - In Groovy console, enable option for output to be on the right side. (horizontal split)
  • [GROOVY-9029] - [Console] Save output log file preferences to OS preferences
  • [GROOVY-9034] - adjust Java grammar for underscore in numeric literals (fixes some Groovydoc parse errors of Java files)
  • [GROOVY-9037] - allow java grammar to partially understand "default" in interfaces (just enough to keep groovydoc processing of java files happy)
  • [GROOVY-9038] - allow antlr2 java grammar to partially understand try-with-resources (just enough to keep groovydoc processing of java files happy)
  • [GROOVY-9060] - Make the initial capacity of LinkedHashMap be power of 2 for better performance
  • [GROOVY-9065] - Add support for @Testable annotation in JUnit5Runner
  • [GROOVY-9067] - Compile Java stubs with standard API
  • [GROOVY-9073] - Support preview features in compiled classes
  • [GROOVY-9081] - CLONE - Fix warning "An illegal reflective access operation has occurred"
  • [GROOVY-9083] - groovyConsole should be updated to understand method references and lambda expressions
  • [GROOVY-9084] - Add the missing delegate methods to `InnerLoader`
  • [GROOVY-9099] - Throw a better exception when validating native method reference fails
  • [GROOVY-9100] - CompilerConfiguration.DEFAULT should be immutable
  • [GROOVY-9101] - GroovyConsole should have a right-click context menu
  • [GROOVY-9108] - Make Interpreter changeable in Groovysh

Sub-task

  • [GROOVY-2773] - Strange behaviour when passing chained methods (methodA().methodB().etc()) as parameters
  • [GROOVY-3446] - Method call resolves to statically imported method instead of equally named local method
  • [GROOVY-4287] - CLONE - import of static nested classes in external groovy files is broken
  • [GROOVY-5852] - Static import on demand resolves capitalised reference
  • [GROOVY-5961] - Variable scope not checked properly for AIC in static method