Groovy 3.0.0 变更日志
Bug
- [GROOVY-3278] - 将引用的字符串常量用作注解的值会导致编译错误
- [GROOVY-3525] - 下标运算符访问属性或数组/列表元素时,不支持空安全解引用运算符
- [GROOVY-4438] - 使用内部枚举会导致编译进入无限循环
- [GROOVY-4976] - 在不正确的数组创建表达式上,AntlrParserPlugin 中出现 NPE
- [GROOVY-5912] - 静态编译:Groovy 在访问包范围方法时不会导致编译失败,但在运行时会失败
- [GROOVY-6148] - 多重赋值声明应允许使用 "final" 关键字而不是 "def" 占位符
- [GROOVY-6167] - 泛型:在单个声明中,泛型类型定义顺序很重要
- [GROOVY-6632] - GString 作为参数时,CompileStatic 选择了错误的构造函数
- [GROOVY-6742] - Groovy 无法解析此泛型用例
- [GROOVY-6777] - 内部类导致 VerifierError
- [GROOVY-6809] - 内部类导致 VerifyError
- [GROOVY-6938] - 当重写返回参数化值的方法时,@CompileStatic 报告错误
- [GROOVY-6996] - 使用封闭参数初始化的匿名类字段导致 MissingPropertyException
- [GROOVY-7020] - 匿名内部类中的 "this" 问题
- [GROOVY-7031] - @CompileStatic 在与解引用结合使用时会破坏赋值
- [GROOVY-7061] - Collections.sort() 的类型推断不起作用
- [GROOVY-7083] - ConfigSlurper.parse(Script script, URL location) 中的 PermGen 内存泄漏
- [GROOVY-7157] - [[1]] 作为 List<List<Integer>> 的编译错误
- [GROOVY-7160] - 当类型参数扩展接口时,可变参数的 NoSuchMethodError
- [GROOVY-7202] - 编译二进制父类时无法解析父类的嵌套枚举
- [GROOVY-7204] - 当使用多个泛型时,静态类型检查和编译失败
- [GROOVY-7330] - 存在默认方法时,从映射创建动态代理不正确
- [GROOVY-7362] - 无法编译扩展具有显式 GroovyObject 接口的 Groovy 抽象类的 Java 类
- [GROOVY-7573] - Groovyc ant 任务不释放文件句柄
- [GROOVY-7609] - 在包含类的构造函数中初始化内部类对象时,java.lang.VerifyError
- [GROOVY-7647] - 调试的行信息不正确
- [GROOVY-7687] - @CompileStatic 和嵌套闭包的 Bug
- [GROOVY-7691] - 子类中协变类型泛型属性的类型检查错误
- [GROOVY-7721] - 编译 Java8 接口时,静态类型检查失败,该接口具有继承方法
- [GROOVY-7722] - 使用带有泛型的匿名类时,StackOverflowError
- [GROOVY-7753] - 三元运算符返回类型回归
- [GROOVY-7778] - CLONE - 带有值的枚举构造函数抛出 "unexpected token" 错误
- [GROOVY-7812] - 使用 'groovy' 命令运行时,无法从其他文件访问静态内部类
- [GROOVY-7854] - 注解值不能是连接常量
- [GROOVY-7856] - 通过编译器配置脚本将 CompileStatic 添加到包含 eachWithIndex 的类会导致指令选择阶段发生异常
- [GROOVY-7864] - 使用 @CompileStatic 时,泛型校正导致栈溢出
- [GROOVY-7868] - 调用带有内联强制转换的 Closure 参数的超级构造函数无法编译:意外的 "constructor call must be first statement" 错误
- [GROOVY-7883] - 如果私有构造函数匹配得更好,静态编译器会优先选择私有构造函数而不是公共构造函数
- [GROOVY-7954] - 实现 Comparable 接口的类的相等运算符在接口上不起作用
- [GROOVY-7975] - 在注解元素中使用静态 final 字段会导致编译错误
- [GROOVY-7985] - 错误的 "incompatible generic type" 错误
- [GROOVY-7996] - 使用 with 方法和引用受保护属性的闭包会导致 ClassCastException
- [GROOVY-8002] - 静态编译会丢失方法调用的源位置
- [GROOVY-8053] - Groovyc:静态方法中的匿名类无法在没有 "this" 的情况下访问其字段
- [GROOVY-8055] - @CompileStatic 错误地排序参数类型
- [GROOVY-8059] - STC 重载泛型方法选择不使用已解析的类型
- [GROOVY-8073] - @CompileStatic 中的 Map 委托
- [GROOVY-8084] - @CompileStatic 中捕获的类型不起作用
- [GROOVY-8090] - 错误处理方法级泛型信息
- [GROOVY-8169] - StaticCompilationVisitor.visitForLoop 设置了 Parameter 源类型,阻止了对原始源类型和位置的访问
- [GROOVY-8171] - 旧解析器和 Parrot 解析器之间的转义斜杠差异
- [GROOVY-8238] - 多个 catch 语句行为异常
- [GROOVY-8241] - 显式参数的 SAM 参数类型推断
- [GROOVY-8250] - VariableScopeVisitor 不在属性节点上设置声明类
- [GROOVY-8272] - 扩展 trait 无法执行静态方法
- [GROOVY-8277] - [Parrot]Fix gls.syntax.MethodCallValidationTest#testDeclarationInMethodCall
- [GROOVY-8288] - [Sql] 当 batchSize == addBatch 调用次数时,withBatch 失败
- [GROOVY-8296] - Groovydoc 识别 Java 8 类时出现异常
- [GROOVY-8298] - Invoke Dynamic 导致性能缓慢
- [GROOVY-8305] - 使用 Groovy 提供的默认 Ivy 设置文件时,尝试获取本地 m2 仓库中可用的依赖项时出错
- [GROOVY-8310] - Closure 中奇怪的 @CompileStatic 检查
- [GROOVY-8314] - groovy Eclipse 任务生成重复的 src/main 条目的 classpath
- [GROOVY-8315] - 编译过程中 GroovyRecognizer.enumConstants 中循环
- [GROOVY-8317] - 显式闭包参数的智能类型推断不起作用
- [GROOVY-8319] - 改进列表表达式的智能类型
- [GROOVY-8321] - 类型检查器错误处理 !instanceof
- [GROOVY-8327] - 无法在此构造函数调用中访问同一类中的静态方法
- [GROOVY-8330] - 强制转换接口时出现错误的 'Inconvertible types' 错误
- [GROOVY-8337] - STC:三元表达式中的 instanceof 不会将类型信息传播到 true 表达式
- [GROOVY-8338] - JDK 9 中 Groovy 类调用 Stream.of 失败
- [GROOVY-8342] - 静态编译错误,当方法在类型参数中返回数组时
- [GROOVY-8372] - 当 artifact 名称与模块不同时,GrapeIvy 下载非默认配置的错误 artifact
- [GROOVY-8377] - @EqualsAndHashCode 生成的 hashCode() 对于具有空字段或属性的实例效率低下
- [GROOVY-8389] - 属性的静态导入会干扰实例方法
- [GROOVY-8399] - ImportCustomizer 每类应用一次(应为每模块一次)*
- [GROOVY-8405] - 继承的带有默认参数的方法导致静态编译失败
- [GROOVY-8408] - 无法通过 category 设置 invokeMethod
- [GROOVY-8418] - getSet* 属性名 => 无法读取只写属性异常
- [GROOVY-8423] - 私有和受保护的内部类具有不正确的访问修饰符值
- [GROOVY-8432] - 解析日期时行为异常
- [GROOVY-8436] - 在 IntelliJ IDEA 中重建 Apache Groovy 时发生 IOException "Stream closed"
- [GROOVY-8439] - @CompileStatic 无法编译泛型类的静态方法
- [GROOVY-8441] - 当字段类型声明为包私有实现时,调用公共方法时出现 IllegalAccessError
- [GROOVY-8442] - java.lang.VerifyError: 从分支内部调用
方法错误 - [GROOVY-8445] - 当 Closure 强制转换为 FunctionInterface 时,静态分析无法正常工作
- [GROOVY-8446] - void[] 返回类型导致编译器失败
- [GROOVY-8447] - 允许定义 void 类型的局部变量
- [GROOVY-8457] - @CompileStatic 和 @NotYetImplemented 组合的编译器错误
- [GROOVY-8470] - 编译 "enum in enum without semicolon" 时出现死循环
- [GROOVY-8471] - META-INF/services/org.codehaus.groovy.source.Extensions 的内容与 Maven/Jisaw 冲突
- [GROOVY-8474] - 通过 super.propertyName 访问超类属性时出现 'Unexpected super property set for:'
- [GROOVY-8486] - 闭包即使被记忆化也多次执行
- [GROOVY-8493] - 方法级 @CompileStatic 的原生 Lambda 表达式
- [GROOVY-8495] - GroovyObject 方法实现标记为 ACC_SYNTHETIC
- [GROOVY-8496] - 无法从 Java 子类调用默认 getProperty() 实现
- [GROOVY-8497] - 无法从 Java 调用 getProperty()
- [GROOVY-8507] - 编译嵌套枚举时 groovyc 挂起
- [GROOVY-8509] - SC:从同一包中调用受保护方法时出错
- [GROOVY-8515] - groovy.g 不再包含在 sources jars 中
- [GROOVY-8531] - 无法解析 Java 中超类定义的类型
- [GROOVY-8537] - GroovyCollections.combinations(Iterable) 表现出不正确(不对称)的行为
- [GROOVY-8546] - Parrot 解析器:从 SourceUnit 打开多个 Reader 实例;许多未关闭
- [GROOVY-8549] - 静态编译导致 getAt 失败
- [GROOVY-8583] - 无法从三元运算符推断自动返回类型
- [GROOVY-8590] - STC 错误地推断在 return 语句中使用的嵌套方法调用的类型
- [GROOVY-8595] - 预期类型 XXX 的参数但得到 YYY 静态编译错误
- [GROOVY-8598] - AstBuilder Antlr4 中可能存在的 Bug
- [GROOVY-8609] - 当上限具有泛型时编译失败
- [GROOVY-8610] - STC NPE 使用 DGM collect on Iterator
- [GROOVY-8613] - elvis 赋值评估中的 GCE
- [GROOVY-8624] - 编译器和运行时中的文件描述符泄漏
- [GROOVY-8628] - Groovydoc 无法解析带有菱形运算符的静态嵌套类
- [GROOVY-8629] - Groovy STC 在构造函数调用中嵌套方法调用时失败
- [GROOVY-8641] - 无法使用软关键字(暂时排除 "def")限定路径表达式
- [GROOVY-8648] - 属性的复合赋值因 ASM 错误而失败
- [GROOVY-8651] - 方法重写较弱访问检查未完全考虑包私有可见性
- [GROOVY-8669] - 如果注解的 ValueType 不在 classpath 上,Groovy 类无法编译
- [GROOVY-8675] - GenericsUtils.PARAMETERIZED_TYPE_CACHE 是静态且私有的
- [GROOVY-8680] - 带有一元运算符的字符串常量的 AST 与旧解析器生成的不同
- [GROOVY-8686] - STC:(a instanceof C && a...) 的类型推断会渗透到封闭范围
- [GROOVY-8688] - AsmDecompiler.parseClass 针对 Java 11 JEP 181 类失败
- [GROOVY-8703] - @NamedVariant 在构造函数上的意外行为 *
- [GROOVY-8727] - JDK 11 编译失败:ClassVisitor.visitNestMemberExperimental 抛出 UnsupportedOperationException
- [GROOVY-8732] - @CompileStatic 引用父类中的私有字段
- [GROOVY-8740] - groovy.util.CliBuilder 无法正确处理解析错误
- [GROOVY-8741] - 单字符 GString 和 '==' 与 Character 或 Number
- [GROOVY-8742] - 方法的行号信息混淆调试器
- [GROOVY-8743] - trait 中的抽象方法不应包含方法体
- [GROOVY-8747] - grape 中 jar/zip 文件和输入流未关闭
- [GROOVY-8750] - Maven Central 上大量发行版中缺少 jar 文件,且仅缺少 jar 文件
- [GROOVY-8753] - STC 中的编译器错误:阶段 'instruction selection' 中发生异常
- [GROOVY-8754] - Windows 上 JDK10 的 JAVA_HOME 中的空格处理不正确
- [GROOVY-8757] - 编译实现带有泛型方法的 trait 的类后生成错误的字节码
- [GROOVY-8758] - @CompileStatic 类内部类中的 @WithReadLock 导致 java.lang.VerifyError
- [GROOVY-8762] - 嵌套类中无效的 this 引用
- [GROOVY-8764] - 匿名类中的闭包在 @CS 中使用错误的外部类实例
- [GROOVY-8766] - Groovy 包与 OSGi (ServiceLoader Capability) 不兼容
- [GROOVY-8772] - Groovy 调试器在退出 try/catch 时位于错误的行
- [GROOVY-8775] - ant 任务 groovyc 中的联合编译 Bug:classpath 未设置
- [GROOVY-8776] - @MapConstructor 与 @CompileStatic:创建静态内部类实例 => VerifyError: Bad type on operand stack CTE
- [GROOVY-8777] - @MapConstructor 与 @CompileStatic:创建内部类实例 => IncompatibleClassChangeError ... does not implement the requested interface java.util.Map
- [GROOVY-8778] - 短手转换对于空映射失效 *
- [GROOVY-8779] - Groovy 2.5.2 触发 IntelliJ IDEA 中的 Bug
- [GROOVY-8797] - VariableScopeVisitor.getPropertyName 不检查 "isser" 样式方法
- [GROOVY-8800] - groovy-json 中 Java 10 版本检测错误
- [GROOVY-8805] - 依赖类被删除时 GroovyScriptEngine 重新加载失败
- [GROOVY-8806] - 不可变类在 groovy 2.5.2 中失效
- [GROOVY-8815] - 类文件不一致 - trait 实现器未定义的类型参数
- [GROOVY-8816] - CompileStatic 和不正确的零参数闭包在 inferClosureParameterTypes 中出现 NPE
- [GROOVY-8819] - 从超类调用带有静态 final 字段的 this() 时出现 java.lang.VerifyError
- [GROOVY-8822] - @Generated 和 @Delegate 冲突
- [GROOVY-8825] - CLONE - @Generated 和 @Delegate 冲突
- [GROOVY-8833] - @Canonical 创建无效的 hashCode
- [GROOVY-8835] - AstNodeToScriptVisitor - 空语句初始化不需要 token
- [GROOVY-8853] - 字符串字面量可以跨行
- [GROOVY-8855] - 两次调用 Matcher.asBoolean() 返回不同结果 *
- [GROOVY-8865] - 指定初始堆大小导致错误
- [GROOVY-8868] - 静态工厂方法不再能用 2.5.3 编译 (2.4.x 正常)
- [GROOVY-8871] - Groovy 2.5.3 在 OpenJDK 11 下定义的 Long 常量导致 IllegalAccessError
- [GROOVY-8873] - @CompileStatic 和两个嵌套 with 在运行时失败
- [GROOVY-8876] - groovydoc 在没有扩展名的文件上失败并出现 "java.lang.StringIndexOutOfBoundsException: String index out of range: -1"
- [GROOVY-8881] - 内部类 - 两个闭包内部合格的 "this" 引用转换异常
- [GROOVY-8882] - CS: 字符串元素的循环具有不同的元素类型 *
- [GROOVY-8892] - Trait 实例初始化块仅在同一 Trait 中定义字段时才调用
- [GROOVY-8895] - Trait 定义的 getter 与生成的 getter 冲突
- [GROOVY-8898] - 注解值不能从枚举中获取内联常量
- [GROOVY-8907] - StringGroovyMethods.findAll(String, Pattern, Closure) 和 StringGroovyMethods.findAll(CharSequence, Pattern, Closure) 的 @ClosureParams 不正确
- [GROOVY-8914] - 编译扩展其他(静态)内部类的静态内部类时出错
- [GROOVY-8917] - 无法推断某些 SAM(例如 BinaryOperator)的参数类型
- [GROOVY-8920] - 无法推断 RHS 上 SAM 的参数和返回类型
- [GROOVY-8930] - 在 CompileStatic groovy 内部使用静态接口方法时,JVM 验证失败
- [GROOVY-8931] - AstNodeToScriptVisitor - 错误的 "extends/implements" 顺序
- [GROOVY-8936] - 当将 `null` 消息传递给 `MissingPropertyException` 时发生 NPE
- [GROOVY-8947] - 无法解析外部类外部的非静态内部类
- [GROOVY-8951] - Trait 定义的 getter 与生成的 getter 冲突(预编译情况的改进)
- [GROOVY-8953] - 导入的枚举导致编译 Bug,阻止测试编译
- [GROOVY-8954] - VerifyError:由于 trait 超属性调用也来自接口时生成的字节码不正确
- [GROOVY-8959] - StaticVerifier 中出现 NPE
- [GROOVY-8964] - 尝试解析带有可变参数的重载时出现 MissingMethodException
- [GROOVY-8966] - 当 List.getAt(range) 使用时,Exclusive NumberRange 转换为 inclusive
- [GROOVY-8967] - @Immutable 不处理映射构造函数中的属性默认值
- [GROOVY-8969] - 无论 --parameters 设置如何,应用 trait 时参数名称数据被擦除
- [GROOVY-8970] - 修复 MANIFEST.MF 中的拼写错误:Main-class
- [GROOVY-8975] - CliBuilder.parseFromSpec 结果上的 GroovyCastException
- [GROOVY-8978] - 从子类克隆访问受保护方法时出现 NPE
- [GROOVY-8990] - 使用 & 时,不匹配泛型没有编译器错误
- [GROOVY-8991] - 闭包和 Lambda 的行为差异
- [GROOVY-9004] - 解析器无法识别 token sequence expression newline bitwise-operator expression
- [GROOVY-9005] - SomeClass.groovy: -1: Access to java.lang.Object#this is forbidden @ line -1, column -1
- [GROOVY-9007] - 使用 groovy 版本 2.5.6 时出现 java.lang.NoSuchFieldError
- [GROOVY-9009] - 与 @ToString 或 @EqualsAndHashCode 一起使用时,AutoClone 抛出 ClassCastException
- [GROOVY-9010] - ASTTest 注解断言执行期间 MissingMethodException
- [GROOVY-9014] - printf 不尊重 "out" 属性
- [GROOVY-9018] - 警告:包 sun.awt.windows 不在 java.desktop 中
- [GROOVY-9028] - @EqualsAndHashCode 无法识别 final 字段
- [GROOVY-9031] - 使用泛型的 Trait 为 Properties 生成不正确的 stub
- [GROOVY-9035] - 配置脚本:处理编译器配置 DSL 时意外的 NPE
- [GROOVY-9040] - src/bin 中的脚本未通过最新的 shellcheck 建议
- [GROOVY-9043] - 静态编译模式下,内部类禁止访问包作用域静态字段
- [GROOVY-9046] - 构建加固
- [GROOVY-9049] - EncodingGroovyMethods.digest() 截断以 0 开头的超过 128 位的哈希值
- [GROOVY-9050] - @Sortable 中缺少 @Generated 注解
- [GROOVY-9051] - 默认构造函数应使用 @Generated 注解
- [GROOVY-9052] - @Vetoable 中缺少 @Generated 注解
- [GROOVY-9053] - @Bindable 中缺少 @Generated 注解
- [GROOVY-9054] - @groovy.transform.builder.Builder 应为 build()、builder() 和 setter 方法生成 @Generated 注解
- [GROOVY-9058] - each 参数类型推断不正确
- [GROOVY-9059] - 无法解析/编译带有 "extends" 的泛型方法
- [GROOVY-9061] - JDK12 中,包含嵌套脚本中 @Grab 语句的测试失败
- [GROOVY-9063] - Groovy 2.5.6 @CompileStatic 生成无效字节码(导致运行时 ClassCastException),当从两层嵌套闭包访问受保护实例成员时
- [GROOVY-9077] - STC:对于解析为方法的属性 getter,推断类型不总是存储的
- [GROOVY-9078] - MethodNode 和 ConstructorNode 的效率低下
- [GROOVY-9079] - STC:StaticTypeCheckingVisitor.inferSAMTypeGenericsInAssignment 中出现 NPE
- [GROOVY-9080] - MarkupTemplateEngine 使用无效的 XML 实体来转义双引号
- [GROOVY-9086] - @CompileStatic 闭包调用(OWNER_FIRST)在运行时失败,并出现 ClassCastException
- [GROOVY-9089] - STC:owner 限定符对嵌套闭包产生错误
- [GROOVY-9095] - 注解未实现默认保留策略
- [GROOVY-9096] - 重复注解未在类文件中包装为容器类型
- [GROOVY-9105] - 修复编译属性文件和任何不以 .java 结尾的文件的问题
- [GROOVY-9106] - @CompileStatic 和 @PackageScope 对内部类和包对等类的支持
- [GROOVY-9115] - 类生成过程中出现一般错误
- [GROOVY-9121] - 默认编译器配置被 GroovyMain 修改
- [GROOVY-9123] - "java.nio.file.Path.setText" 在 Groovy 2.5.7 上使用 CompileStatic 时不起作用
- [GROOVY-9126] - 字节码中 ARETURN 后不可达行号
- [GROOVY-9127] - 无法从子类设置受保护字段
- [GROOVY-9136] - 闭包内访问公共字段时出现编译错误
- [GROOVY-9141] - NPE:Groovy 编译器错误:源单元的 'conversion' 阶段中出现异常
- [GROOVY-9147] - 在 Groovy 2.5.7 中使用 'File.text = ' 和 @CompileStatic 会导致 FileNotFoundException
- [GROOVY-9151] - 默认参数:引用另一个默认参数导致运行时错误
- [GROOVY-9153] - StaticInvocationWriter 修改共享全局节点 ConstantExpression.NULL
- [GROOVY-9156] - metaDataMap 的值表应与外部框架一起扩展
- [GROOVY-9161] - Sortable AST transform 替换自定义 compareTo 方法
- [GROOVY-9162] - AutoClone AST transform 替换自定义 clone 方法
- [GROOVY-9163] - AutoExternalize AST transform 替换自定义读/写方法
- [GROOVY-9168] - 默认参数:非静态内部类构造函数调用在默认值中不支持
- [GROOVY-9170] - clone 方法应为公共方法,因为它实现了 java.lang.Object 接口中相应的方法
- [GROOVY-9171] - 静态编译器 ASM 错误,对于名称相同的方法
- [GROOVY-9173] - 类扩展 Java 类并提供受保护的 getProperty/setProperty 时出现 IllegalAccessError
- [GROOVY-9176] - set 方法调用的语法糖与类成员声明冲突
- [GROOVY-9183] - 使用 @MapConstructor 和 @NamedVariant 的问题
- [GROOVY-9184] - CLONE - 使用内部枚举导致编译进入无限循环 - antlr2 修复
- [GROOVY-9189] - 静态方法的默认参数表达式中的 AIC 导致类转换异常
- [GROOVY-9191] - 无法编译没有 public 关键字的泛型方法
- [GROOVY-9195] - STC:访问非公共字段时的混合检查
- [GROOVY-9197] - 在 JDK 11 下运行时,Groovyc 无法正确将 classpath 条目传播到 javac
- [GROOVY-9200] - AstBrowser 中出现 StringIndexOutOfBoundsException
- [GROOVY-9203] - 匿名内部类计数不限于封闭类型
- [GROOVY-9204] - 编译器丢失超类字段的类型信息
- [GROOVY-9215] - 使用 @CompileStatic 和/或 @TypeChecked 时,出现不正确的编译时访问错误
- [GROOVY-9226] - 使用 @TypeChecked 或 @CompileStatic 调用 super.toString() 将抛出 java.lang.StackOverflowError
- [GROOVY-9231] - groovy.lang.TypeChecked 应为 groovy.transform
- [GROOVY-9237] - GContracts 和 Groovy3
- [GROOVY-9238] - Groovy 2.5 AnnotationCollector 未生成预期字节码
- [GROOVY-9243] - 无法解析在 Groovy 中编写的基类型中定义的嵌套类型
- [GROOVY-9244] - 匿名子类应强制转换其超级参数
- [GROOVY-9245] - 应忽略合成构造函数
- [GROOVY-9246] - 版本 3.0.0-beta-3 不符合 OSGi 版本标准
- [GROOVY-9252] - -1: Access to java.lang.Object#myField is forbidden @ line -1, column -1.
- [GROOVY-9257] - 无法使用 JDK 11 和 Spring-Boot 创建 Groovysh
- [GROOVY-9265] - ScriptMain.groovy: -1: Access to bugs.ClassWithInnerClass$InnerClass#obj is forbidden @ line -1, column -1.
- [GROOVY-9268] - 访问...被禁止
- [GROOVY-9270] - 使用 "instanceof boolean" 或使用 Trait 会导致编译后的代码无法与 OSGi/maven-bundle-plugin/bnd 一起工作
- [GROOVY-9281] - 对超类内部类的非限定引用不支持包私有可见性
- [GROOVY-9282] - 重写为 protected 时考虑包私有方法
- [GROOVY-9288] - 闭包内部访问受保护的超类字段时出现编译错误
- [GROOVY-9292] - 闭包使用 owner、delegate 或 thisObject 限定符(不同包)访问受保护的超类字段时出现编译错误
- [GROOVY-9293] - 闭包内部使用 `this` 访问包私有超类字段时出现编译错误
- [GROOVY-9294] - SC:闭包内数组长度不可用
- [GROOVY-9301] - [Antlr2]带有逗号后跟方法的枚举常量解析器错误
- [GROOVY-9317] - 字段表达式断言缺少值记录
- [GROOVY-9321] - @CompileStatic 调用接口上的静态方法(Java 8):VerifyError
- [GROOVY-9323] - 从 classpath 加载的预编译类的 AST 不包含构造函数注解信息
- [GROOVY-9327] - @CompileStatic 未传播到匿名类
- [GROOVY-9328] - 无法在 @CS 中调用包含类的私有成员
- [GROOVY-9329] - `parseClass(scriptText)` 时发生 OOME
- [GROOVY-9332] - 在静态初始化块中,Lambda 中访问静态字段时发生错误
- [GROOVY-9333] - 原生 Lambda 中的 `this` 未引用封闭类的实例
- [GROOVY-9336] - 字段初始值表达式中使用的移位运算符导致不正确的类型转换
- [GROOVY-9337] - DGM:更多 Optional 和 Stream 扩展方法
- [GROOVY-9338] - STC:边界不匹配没有错误
- [GROOVY-9340] - 使用变量表达式参数的 Lambda 为自类型生成泛型错误
- [GROOVY-9341] - SC:引用 "this" 的嵌套 Lambda 中的 Lambda 产生转换异常
- [GROOVY-9342] - SC:静态初始化器中,Lambda 使用 += 左侧的静态字段会产生错误
- [GROOVY-9347] - STC:通配符泛型上的 Lambda 表达式无法解析参数类型
- [GROOVY-9352] - 静态编译失败,出现 NoClassDefFoundError
- [GROOVY-9368] - jointCompilationOptions 的重大更改
- [GROOVY-9370] - 匿名类和嵌套闭包类型强制转换为 SAM 的类型推断回归
- [GROOVY-9374] - 内部类上 tap 的类型推断在类型检查时失败
- [GROOVY-9376] - Groovy 完全忽略 @GrabResolver 注解
- [GROOVY-9499] - AIC 用作特殊构造函数调用的参数时出现 VerifyError
依赖升级
- [GROOVY-8290] - 将 Ant 版本升级到 1.10.1
- [GROOVY-8291] - 将 XStream 版本升级到 1.4.10
- [GROOVY-8304] - 将 Apache Ivy 从 2.4.0 升级到更高版本
- [GROOVY-8504] - 将 ASM 版本升级到 6.1
- [GROOVY-8532] - 将 ant 升级到 1.10.3
- [GROOVY-8533] - 将 jansi 升级到 1.17
- [GROOVY-8534] - 将 jline 升级到 2.14.6
- [GROOVY-8540] - 将 antlr 升级到 4.7.1
- [GROOVY-8599] - 将 ivy 升级到 2.5.0-rc1
- [GROOVY-8636] - 将 asm 升级到 6.2
- [GROOVY-8661] - 将 gradle 升级到 4.8.1
- [GROOVY-8672] - 将 testng 升级到 6.14.3
- [GROOVY-8674] - 将 ant 依赖项升级到 1.10.4
- [GROOVY-8676] - 将 Ant 升级到 1.10.4
- [GROOVY-8677] - 将 picocli 升级到 3.1.0
- [GROOVY-8682] - 将 asciidoctor 升级到 1.5.8
- [GROOVY-8744] - 将 ASM 升级到 6.2.1
- [GROOVY-8745] - 升级 ant 版本
- [GROOVY-8746] - 将 bridger 升级到 1.5.Final
- [GROOVY-8767] - 将 gradle 升级到 4.10
- [GROOVY-8773] - 将 JUnit 5 升级到 5.3
- [GROOVY-8785] - 将 JUnit 5 升级到 5.3.1
- [GROOVY-8789] - 将 spot bugs 升级到 1.6.3
- [GROOVY-8790] - 将 gradle 升级到 4.10.1
- [GROOVY-8807] - 将 gradle 升级到 4.10.2
- [GROOVY-8813] - 将 jackson-dataformat-yaml 和 jackson-databind 升级到 2.9.7
- [GROOVY-8818] - 将 asm 升级到 7.0-beta
- [GROOVY-8823] - 将 slf4j 升级到 1.7.25
- [GROOVY-8829] - 将 spotbugs 插件升级到 1.6.4
- [GROOVY-8830] - 将 spotbugs 升级到 3.1.7
- [GROOVY-8862] - 将 asm 升级到 7.0
- [GROOVY-8883] - 将 xstream 升级到 1.4.11.1
- [GROOVY-8884] - 将 spotbugs-annotations 升级到 3.1.8
- [GROOVY-8885] - 将 spotbugs gradle 插件升级到 1.6.5
- [GROOVY-8904] - 将 junit 升级到 5.3.2 并将 junit platform 升级到 1.3.2
- [GROOVY-8908] - 将 gradle 升级到 5.2.1
- [GROOVY-8921] - 将 build-scan gradle 插件升级到 2.1
- [GROOVY-8922] - 将 spotbugs gradle 插件升级到 1.6.6 并将 spotbugs-annotations 升级到 3.1.9
- [GROOVY-8923] - 将 gradle-license-report 升级到 1.3
- [GROOVY-8924] - 将 creadur-rat-gradle 升级到 0.3.1
- [GROOVY-8925] - 将 picocli 升级到 3.8.2 *
- [GROOVY-8928] - 将 jackson-dataformat-yaml 和 jackson-databind 升级到 2.9.8
- [GROOVY-8937] - 将 antlr 升级到 4.7.2
- [GROOVY-8980] - 将 picocli 升级到 3.9.3
- [GROOVY-8985] - 将 junit 升级到 5.4.0
- [GROOVY-8988] - 将 antlr 升级到 4.7.3
- [GROOVY-8993] - 将 spotbugs gradle 插件升级到 1.6.9
- [GROOVY-8994] - 将 spotbugs-annotations 升级到 3.1.11
- [GROOVY-9020] - 将 asm 升级到 7.1
- [GROOVY-9042] - 将 junit 升级到 5.4.1
- [GROOVY-9044] - 将 versions 插件升级到 0.21.0
- [GROOVY-9045] - 将 build-scan 升级到 2.2.1
- [GROOVY-9047] - 将 gradle 升级到 5.3
- [GROOVY-9062] - 将 codenarc 升级到 1.3
- [GROOVY-9071] - 将 gradle 升级到 5.3.1
- [GROOVY-9087] - 将 gradle 升级到 5.4
- [GROOVY-9098] - 将 gradle 升级到 5.4.1
- [GROOVY-9104] - 将 build-scan 插件升级到 2.3
- [GROOVY-9116] - 将 ant 升级到 1.10.7
- [GROOVY-9117] - 将 jmh gradle 插件升级到 0.4.8
- [GROOVY-9118] - 将 japicmp gradle 插件升级到 0.2.8
- [GROOVY-9119] - 将 spotbugs gradle 插件升级到 1.7.1
- [GROOVY-9138] - 将 JUnit 5 升级到 5.5.0
- [GROOVY-9139] - 将 JUnit 5 升级到 5.5.0-M1
- [GROOVY-9142] - 将 jackson-dataformat-yaml 升级到 2.9.9
- [GROOVY-9143] - 将 picocli 升级到 3.9.6
- [GROOVY-9179] - 将 CodeNarc 升级到 1.4
- [GROOVY-9180] - 将 junit5 升级到 5.5.0-RC2
- [GROOVY-9181] - 将 jansi 升级到 1.8
- [GROOVY-9182] - 将 gradle 升级到 5.5
- [GROOVY-9186] - 将 asm 升级到 7.2-beta
- [GROOVY-9190] - 将 gradle 升级到 5.5.1
- [GROOVY-9201] - 将 junit 升级到 5.5.1
- [GROOVY-9202] - 将 picocli 升级到 4.0.1
- [GROOVY-9212] - 将 gradle 升级到 5.6-rc-1
- [GROOVY-9216] - 将 gradle 升级到 5.6-rc-2
- [GROOVY-9219] - 将 versions gradle 插件升级到 0.22.0
- [GROOVY-9220] - 将 spotbugs gradle 插件切换到 jp.skypencil.spotbugs.snom 变体
- [GROOVY-9221] - 将 build-scan gradle 插件升级到 2.4
- [GROOVY-9222] - 将 picocli 升级到 4.0.2
- [GROOVY-9227] - 将 gradle 升级到 5.6
- [GROOVY-9234] - 将 build-scan gradle 插件升级到 2.4.1
- [GROOVY-9241] - 将 gradle 升级到 5.6.1
- [GROOVY-9242] - 将 picocli 升级到 4.0.3
- [GROOVY-9247] - 将 gradle 升级到 5.6.2
- [GROOVY-9249] - 将 junit 升级到 5.5.2
- [GROOVY-9251] - 将 picocli 升级到 4.0.4
- [GROOVY-9262] - 将 asm 升级到 7.2
- [GROOVY-9263] - 将 versions gradle 插件升级到 0.25.0
- [GROOVY-9264] - 将 build-scan gradle 插件升级到 2.4.2
- [GROOVY-9269] - 将 jackson 相关库升级到 2.10.0
- [GROOVY-9275] - 将 antlr 升级到 4.7.4
- [GROOVY-9277] - 将 versions gradle 插件升级到 0.26.0
- [GROOVY-9280] - 将 gradle 升级到 5.6.3
- [GROOVY-9285] - 将 javaparser 升级到 3.15.2
- [GROOVY-9286] - 将 versions gradle 插件升级到 0.27.0
- [GROOVY-9290] - 将 ivy 升级到 2.5.0
- [GROOVY-9297] - 将 javaparser 升级到 3.15.3
- [GROOVY-9300] - 将 gradle 升级到 5.6.4
- [GROOVY-9303] - 将 javaparser 升级到 3.15.4
- [GROOVY-9307] - 将 javaparser 升级到 3.15.5
- [GROOVY-9311] - 将 jackson-dataformat-yaml 升级到 2.10.1
- [GROOVY-9314] - 将 picocli 升级到 4.1.0
- [GROOVY-9325] - 将 picocli 升级到 4.1.1
- [GROOVY-9326] - 将 CodeNarc 升级到 1.5
- [GROOVY-9330] - 将 javaparser 升级到 3.15.6
- [GROOVY-9334] - 将 picocli 升级到 4.1.2
- [GROOVY-9350] - 将 javaparser 升级到 3.15.7
- [GROOVY-9354] - 将 picocli 升级到 4.1.4
- [GROOVY-9356] - 将 javaparser 升级到 3.15.8
- [GROOVY-9357] - 将 junit 升级到 4.13
- [GROOVY-9358] - 将 jmh gradle 插件升级到 0.5.0
- [GROOVY-9359] - 将 javaparser 升级到 3.15.9
- [GROOVY-9361] - 将 jackson-dataformat-yaml 升级到 2.10.2
- [GROOVY-9362] - 将 asm 升级到 7.3.1
- [GROOVY-9371] - 将 gradle 升级到 6.1.1
- [GROOVY-9372] - 将 junit 升级到 5.6.0
- [GROOVY-9383] - 将 javaparser 升级到 3.15.11
文档
- [GROOVY-8618] - 更新 GroovyConsole 文档
- [GROOVY-8619] - 更新 Groovy Shell 文档
- [GROOVY-8620] - 更新 Grape 依赖管理器的文档
- [GROOVY-8848] - 命名参数文档缺少混合多个参数用例的解释
- [GROOVY-8870] - 列表列表上的点扩散运算符
- [GROOVY-9019] - 三单引号和三双引号平等处理反斜杠转义
- [GROOVY-9085] - 为 groovy-sql 的 asciidoc 文档添加 INOUT 存储过程示例
- [GROOVY-9207] - AST 转换部分中的链接已损坏
史诗
- [GROOVY-9124] - 实现 parrot 解析器
改进
- [GROOVY-3360] - assert a = 1 的更好错误消息
- [GROOVY-3867] - 允许通过 category 定义 methodMissing/propertyMissing
- [GROOVY-3898] - [PARROT] 允许在 "for" 构造中初始化多个迭代变量时指定类型
- [GROOVY-4585] - 反斜杠不能被 `SimpleTemplateEngine` 转义
- [GROOVY-4816] - 访问空表达式
- [GROOVY-4875] - 添加安全索引运算符
- [GROOVY-7233] - 可配置的 @Log AST 日志器字段访问修饰符
- [GROOVY-7632] - Groovy 命名参数静态检查
- [GROOVY-7772] - Class.&instanceMethod 最好与 Java8 的 Class::instanceMethod 具有相同的含义
- [GROOVY-8180] - GroovyConsole 改进:日志到文件选项
- [GROOVY-8185] - 更改 Groovydoc 处理以支持 antlr4 语法,包括从 AST 获取注释
- [GROOVY-8312] - [PARROT] 弃用无用的 Unicode 序列特性
- [GROOVY-8339] - 修复警告 "An illegal reflective access operation has occurred"
- [GROOVY-8410] - 提供通用缓存
- [GROOVY-8428] - 添加 DGM startsWithAny(String...) 和 endsWithAny(String...)
- [GROOVY-8437] - 为 `LRUCache` 实现原子 `getAndPut` 方法
- [GROOVY-8444] - 在 switch case 中支持非限定枚举常量(如 Java)
- [GROOVY-8464] - 允许渲染内联 json
- [GROOVY-8466] - 在静态编译模式下支持原生 Lambda
- [GROOVY-8490] - 扩展 @Newify 以支持类名模式参数
- [GROOVY-8492] - Groovy 控制台应在显示生成的闭包类时显示生成的 Lambda 类
- [GROOVY-8510] - 更方便 XML 解析的安全数字解析方法
- [GROOVY-8517] - 添加 ASTNode.getNodeMetaData 重载,支持计算缺失值(如 Map.computeIfAbsent)
- [GROOVY-8524] - 行尾带引号的三引号字符串
- [GROOVY-8535] - FieldNode 构造函数似乎错误地调用了 setType
- [GROOVY-8547] - Factory 模式被 CompilerConfiguration/ParserVersion 绕过
- [GROOVY-8586] - [PARROT] 支持 Java 9 ARM 块
- [GROOVY-8604] - 缓存参数化类型以获得更好的性能
- [GROOVY-8621] - Grape 命令行工具概要改进
- [GROOVY-8623] - Groovy Console 中的 Groovy Object Browser 可以在关于帮助中显示 Groovy 版本
- [GROOVY-8630] - 改进参数化类型缓存
- [GROOVY-8635] - 将 groovy console 的一些 groovy 类编译为静态
- [GROOVY-8679] - BigDecimalMath.MAX_DIVISION_SCALE 是硬编码的
- [GROOVY-8681] - 使非静态内部类创建者跨行
- [GROOVY-8704] - IntRange 应为 Serializable
- [GROOVY-8719] - 将 DelegatesTo 注解添加到 CompilerCustomizationBuilder.withConfig
- [GROOVY-8748] - CompileUnit 可以实现 NodeMetaDataHandler 以充当元数据的“全局”节点
- [GROOVY-8755] - 禁止在数组初始化器中使用命令链表达式以避免歧义
- [GROOVY-8765] - 用 @Generated 注解生成的 方法
- [GROOVY-8780] - 添加 `sha256` DGM
- [GROOVY-8783] - 支持 Java 9/10/11 字节码
- [GROOVY-8784] - 准备支持 JDK 12 字节码
- [GROOVY-8793] - 添加清除词法分析器缓存的开关
- [GROOVY-8812] - 使 `Sql` 和 `BatchingStatementWrapper` 实现 `AutoCloseable`
- [GROOVY-8827] - 缩小 EMC DSL 中构造函数的小漏洞
- [GROOVY-8851] - [PARROT] 改进地图/命名参数的安全索引
- [GROOVY-8858] - 改进 GCL 以避免重复占用相同源代码的 Permanent Area/Metaspace
- [GROOVY-8861] - 简化运行时 groovydoc 的开关
- [GROOVY-8872] - 反编译的参数名称不反映字节码中的名称
- [GROOVY-8880] - Trait - 静态/实例初始化块
- [GROOVY-8887] - 在 STC 中支持元组的多重赋值
- [GROOVY-8890] - 使 groovy 控制台的 "Inspect Tokens" 支持 Parrot 的 token
- [GROOVY-8894] - 提高 DGM `leftShift(OutputStream, InputStream)` 的性能
- [GROOVY-8900] - 将类 `Tuple0`、`Tuple1`...`Tuple16` 设置为 final
- [GROOVY-8903] - 将 NamedParams 应用到 groovy.sql.Sql
- [GROOVY-8910] - 提高新 Parrot 解析器的性能
- [GROOVY-8915] - [PARROT] 使 groovydoc 配置灵活
- [GROOVY-8927] - take 和 drop 的字符串变体
- [GROOVY-8939] - StringGroovyMethods 中的附加方法
- [GROOVY-8942] - 在 Groovy Console 中光标触及括号、方括号和花括号时突出显示匹配的括号
- [GROOVY-8943] - @CompileStatic 与 getAt(int) 和 getAt(String)
- [GROOVY-8945] - 提高 DGM `groupBy` 和 `countBy` 的性能
- [GROOVY-8949] - 将依赖管理调用作为特权操作运行
- [GROOVY-8962] - 提供选项,在内存中生成 Java stub 以获得更好的编译性能
- [GROOVY-8971] - VMPlugin configureClassNode 方法在可用时应保留参数名称信息
- [GROOVY-8972] - CompilationUnit#createClassVisitor 应该使用类节点解析器而不是直接使用类加载器
- [GROOVY-8986] - 更改默认导入包的顺序,以减少解析次数
- [GROOVY-8987] - 支持分析器
- [GROOVY-8995] - 提高列表创建的性能
- [GROOVY-9008] - 支持原生方法引用和构造函数引用(基本情况)
- [GROOVY-9022] - 在 Groovy 控制台中,启用输出在右侧的选项(水平分割)
- [GROOVY-9029] - [Console] 将输出日志文件首选项保存到 OS 首选项
- [GROOVY-9034] - 调整 Java 语法中数字字面量中的下划线(修复一些 Java 文件的 Groovydoc 解析错误)
- [GROOVY-9037] - 允许 java 语法部分理解接口中的 "default" (仅足以保持 java 文件的 groovydoc 处理正常)
- [GROOVY-9038] - 允许 antlr2 java 语法部分理解 try-with-resources (仅足以保持 java 文件的 groovydoc 处理正常)
- [GROOVY-9060] - 为了更好的性能,将 LinkedHashMap 的初始容量设置为 2 的幂
- [GROOVY-9065] - 在 JUnit5Runner 中添加对 @Testable 注解的支持
- [GROOVY-9067] - 使用标准 API 编译 Java stubs
- [GROOVY-9073] - 支持编译类中的预览特性
- [GROOVY-9081] - CLONE - 修复警告 "An illegal reflective access operation has occurred"
- [GROOVY-9083] - groovyConsole 应更新以理解方法引用和 Lambda 表达式
- [GROOVY-9084] - 为 `InnerLoader` 添加缺失的委托方法
- [GROOVY-9099] - 验证原生方法引用失败时抛出更好的异常
- [GROOVY-9100] - CompilerConfiguration.DEFAULT 应为不可变
- [GROOVY-9101] - GroovyConsole 应具有右键上下文菜单
- [GROOVY-9103] - CLONE - CLONE - 修复警告 "An illegal reflective access operation has occurred"
- [GROOVY-9108] - 使 Groovysh 中的 Interpreter 可变
- [GROOVY-9109] - Groovysh:如果用户提供的 classloader 已是 GroovyClassLoader,则不要强制覆盖
- [GROOVY-9112] - 清除 `GroovyClassLoader` 中的坏味道 *
- [GROOVY-9122] - ProcessingUnit 中的代码异味 *
- [GROOVY-9131] - 原生方法引用的扩展方法支持
- [GROOVY-9133] - Groovy Console 可以支持自动运行功能
- [GROOVY-9135] - JUnit5Runner 中对 @Testable 注解的附加支持
- [GROOVY-9140] - Class.&instanceMethod 带有不正确的第一个参数
- [GROOVY-9165] - Grape 无法引入 picocli *
- [GROOVY-9169] - Groovy 可以支持 andThen/compose 作为 rightShift/leftShift 的别名
- [GROOVY-9175] - 为扩展开放 SecureASTCustomizer
- [GROOVY-9177] - 支持 JDK14
- [GROOVY-9199] - IntelliJ IDEA 调试器中 finally 块中的代码被忽略
- [GROOVY-9210] - asm-util 缺少 TextfierSupport
- [GROOVY-9217] - 修复设置属性时警告 "An illegal reflective access operation has occurred"
- [GROOVY-9218] - 减少 `MethodIndex` 实例的内存使用
- [GROOVY-9223] - 避免为每个 groovy 类生成通用方法
- [GROOVY-9228] - 静态编译的 CLI 选项
- [GROOVY-9229] - 为 Sql.withInstance(...) 的闭包输入参数添加 @ClosureParams
- [GROOVY-9233] - 为 Sql.withBatch(...) 的闭包输入参数添加 @ClosureParams
- [GROOVY-9236] - 避免不必要的解析
- [GROOVY-9240] - 优化 ResourceGroovyMethods.traverse(File, Map<String, Object>, Closure) 的签名(及重载)
- [GROOVY-9261] - 优化 ARM 的类型检查
- [GROOVY-9266] - 扩展方法 metaClass 缺少 IDE/STC 的闭包元数据
- [GROOVY-9274] - 为 `LocalDate` 添加 DGM `minus`
- [GROOVY-9276] - 提高解析性能
- [GROOVY-9289] - @Delegate 应该检查属性/方法名,以获取像 includes/excludes 这样的注解属性
- [GROOVY-9298] - 消除启用 indy 时的一些非法访问警告
- [GROOVY-9312] - 最近的 grape 更改破坏了 Windows 上某些用法
- [GROOVY-9316] - 改进 AnnotationNode 的 toString 方法
- [GROOVY-9320] - 支持可序列化 lambda 表达式
- [GROOVY-9324] - 在 Java 中实现 `AstStringCompiler`
- [GROOVY-9331] - shuffled() DGM 方法混淆了错误的列表
- [GROOVY-9351] - 使 `NumberRange` 可序列化,以与 `IntRange` 对齐
新特性
- [GROOVY-2840] - [PARROT] 支持 "not" 用于 in 和 instanceof
- [GROOVY-3791] - [PARROT] 支持 Java 数组初始化器语法,当不模糊时
- [GROOVY-5306] - [PARROT] 添加 "a ?= 2" 支持 (Elvis 赋值):应展开为 "a = a == null ? 2 : a"
- [GROOVY-5348] - [PARROT] 实现 do/while 循环
- [GROOVY-6336] - [PARROT] 支持 Java 7 ARM 块
- [GROOVY-8138] - 编译静态以支持流
- [GROOVY-8223] - 多个返回值 @CompileStatic Tuple#<> 工作正常
- [GROOVY-8334] - Groovy JDK 中支持 Java 8 日期/时间类型 (JSR 310)
- [GROOVY-8498] - [PARROT] 支持 Java10 的 `var` 关键字
- [GROOVY-8500] - 支持记录字节码生成的堆栈跟踪
- [GROOVY-8516] - 添加 DGM `md5`
- [GROOVY-8518] - 添加 DGM `digest`
- [GROOVY-8542] - 支持使用 Java 类似语法创建非静态内部类实例
- [GROOVY-8558] - 添加 DGM `getLocation` 以获取包含指定类的 jar 的 url
- [GROOVY-8794] - 添加可选的 groovy-yaml 子项目以支持解析和构建 yaml
- [GROOVY-8808] - 添加 DGM `Throwable.asString`
- [GROOVY-8842] - 为 groovy 控制台编辑器实现智能高亮
- [GROOVY-8935] - 提供一个与 Lombok 的 NonNull 类似的 @NullCheck AST 转换
- [GROOVY-9128] - [PARROT] 为相同 (===) 和不相同 (!==) 运算符提供适当的支持
- [GROOVY-9129] - [PARROT] 支持列表/数组的安全索引操作,包括多维数组/嵌套列表访问
- [GROOVY-9145] - 为 `Thread` 添加 DGSM `dumpAll`
- [GROOVY-9196] - 我们应该提供一个类似于 Kotlin 的 shuffle(d) DGM 方法
- [GROOVY-9198] - 我们应该提供一个类似于 Kotlin 的 average/mean DGM 方法
- [GROOVY-9384] - Groovy 应该提供一个 Maven BOM
子任务
- [GROOVY-2773] - 传递链式方法 (methodA().methodB().etc()) 作为参数时的奇怪行为
- [GROOVY-3446] - 方法调用解析为静态导入方法而不是同名本地方法
- [GROOVY-4287] - CLONE - 外部 groovy 文件中静态嵌套类的导入已损坏
- [GROOVY-5852] - 按需静态导入解析大写引用
- [GROOVY-5961] - 静态方法中 AIC 的变量作用域未正确检查
- [GROOVY-8594] - DocGenerator 可以移动以避免拆分包 - 第 (2) 部分
- [GROOVY-8597] - SqlGroovyMethods 可以移动以避免拆分包 - 第 (2) 部分
- [GROOVY-8647] - 拆分包重命名第一阶段
- [GROOVY-8802] - GroovyObject 方法实现(由 Groovy 编译器提供)现已标记为 @Internal
- [GROOVY-8843] - 修复 o.c.g.vmplugin.v7.Java7 中的非法反射访问
- [GROOVY-9254] - 拆分包重命名第二阶段
任务
- [GROOVY-5299] - [PARROT] antlr 4 语法创建任务
- [GROOVY-8279] - 调整 groovysh 以使用新解析器 Parrot 进行编译
- [GROOVY-8664] - 从 findbugs 切换到 spotbugs
- [GROOVY-8691] - 删除旧位置中已弃用的 Jaxb 方法
- [GROOVY-8692] - 为 Groovy 3 删除 DirectFastStringServiceFactory
- [GROOVY-8864] - 特性的向后兼容性
- [GROOVY-9208] - 调整 groovysh 补全器以使用新解析器 Parrot
- [GROOVY-9380] - VMPlugin 重构:将 Java5 到 Java7 合并到 Java8 *
- [GROOVY-9423] - 管理 String#stripIndent() 与 jdk13 的冲突 *
测试
- [GROOVY-9164] - 添加 @Generated 注解的测试
* 潜在的重大更改(请阅读问题了解详情 - 即使是微小的差异有时也会被标记为潜在的重大更改)