Changelog for Groovy 5.0.0-alpha-3

Bug

  • [GROOVY-4487] - null.class inconsistent with null.getClass() [NullObject]
  • [GROOVY-5893] - Return type of "inject" is not inferred properly
  • [GROOVY-6567] - delegate is NullObject instance for closure metamethods invoked on null
  • [GROOVY-7861] - asType(null) called in @CompileStatic method returns a string 'null'
  • [GROOVY-8254] - Alias is ignored in constructor call *
  • [GROOVY-8488] - STC: floating-point literals no longer accepted as args to method with double parameter
  • [GROOVY-8875] - NullObject.metaClass
  • [GROOVY-8948] - BigDecimal to primitive conversion not working
  • [GROOVY-9154] - JSR308 info incomplete in bytecode
  • [GROOVY-9155] - JSR308 annotation attributes not being validated
  • [GROOVY-9367] - org.codehaus.groovy.runtime.MetaClassHelper#getClassWithNullAndWrapper should return NullObject when accept null
  • [GROOVY-11014] - CompileStatic & Elvis operator: Cannot assign literal value of type (java.lang.Number or java.lang.Comparable) to variable of type double
  • [GROOVY-11178] - JSR308 constructor call annotations not resolved or available
  • [GROOVY-11179] - JSR308 inline constants for annotations in class header
  • [GROOVY-11180] - Regression: STC loses track of package-scope constants
  • [GROOVY-11189] - STC LUB of List and Set is not Collection for Java 21
  • [GROOVY-11192] - Code that causes Groovy Compiler Crash
  • [GROOVY-11196] - ambiguous method error for tap on null receiver
  • [GROOVY-11198] - access to public static variable forbidden in enum
  • [GROOVY-11199] - inner class cannot set property of enclosing class that has a getter without a setter
  • [GROOVY-11206] - Concatenated strings not treated as compile-time constants
  • [GROOVY-11207] - STC rejects concatenated string as annotation parameter
  • [GROOVY-11209] - XmlUtil escapeControlCharacters escapes control characters 0-30 instead of 0-31
  • [GROOVY-11224] - Reconsider name duplication for groovysh *

Dependency upgrade

Improvement

  • [GROOVY-6260] - "Possible solutions" message is confusing because it doesn't reflect whether a property is read-only or write-only
  • [GROOVY-8064] - Confusing error message when trying to access a property which is actually a method
  • [GROOVY-8859] - fix trait private method consistency
  • [GROOVY-11184] - JSR308: improve support for explicit-this type annotations
  • [GROOVY-11203] - IllegalArgumentException: null argument for primitive parameter
  • [GROOVY-11213] - indexOf extension method for arrays
  • [GROOVY-11225] - shouldFail return type
  • [GROOVY-11230] - ProxyGenerator creates a lot of AtomicReference instances regardless of "groovy.adapter.cache.default.size" setting

New Feature

  • [GROOVY-11194] - groovyc missing features from the library compiler

Sub-task

Task

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