Changelog for Groovy 2.0.0-beta-2

Bug

  • [GROOVY-4415] - Error implementing a Java or Groovy generic interface
  • [GROOVY-4457] - generic type declarations leaking across all files in a build
  • [GROOVY-4645] - Convariant returns causes compiler to fail when generating property getters
  • [GROOVY-4958] - ConfigSlurper doesn't parse config files that contain $ signs in property values correctly
  • [GROOVY-4966] - VeryifyError in multi-dimensional array usage: Incompatible argument to function
  • [GROOVY-4967] - List to LinkedHashSet inconsistent conversion behavior vs List to HashSet
  • [GROOVY-4973] - Inconsistent numeric range types
  • [GROOVY-4986] - java.sql.Timestamp + int = java.util.Date
  • [GROOVY-5061] - Incorrect translation of class property which type has array as enclosed type argument
  • [GROOVY-5063] - Cannot set "-Werror" javac option when using Groovyc ant task.
  • [GROOVY-5080] - Inner type default constructors incorrectly tagged synthetic
  • [GROOVY-5101] - GroovyCastException occurs since 1.8.3
  • [GROOVY-5109] - inner class inheritance with outer class inheritance can't find constructor
  • [GROOVY-5122] - static fields on interface not getting initialized, when being initialized to an anonymous class instance
  • [GROOVY-5126] - Arrays.asList(2L,2L) returns incorrect inferred generic type
  • [GROOVY-5127] - Assignement to interface is wrongly marked as an error
  • [GROOVY-5129] - groovy.json.JsonSlurper failes to parse decimal numbers correctly
  • [GROOVY-5137] - MockFor.getInstance() fails for abstract classes
  • [GROOVY-5140] - ASTTransformationCustomizer uses wrong classloader to find transformer class from annotation
  • [GROOVY-5141] - The static type checker may be unable to choose between two "identical" methods from DGM
  • [GROOVY-5142] - collectMany should not use createSimilarCollection and instead behave like collect
  • [GROOVY-5145] - Return type inference doesn't handle closures properly
  • [GROOVY-5147] - Static type checker marks null assignments as invalid
  • [GROOVY-5148] - Static type checker should allow casts to character from single char strings
  • [GROOVY-5152] - object instanceof MyObject[] causes ClassDefNotFound exception within Closure
  • [GROOVY-5154] - Invalid Static Type Checking report on a method call with type parameters
  • [GROOVY-5156] - Strange method name in the StaticTypeCheckingVisitor class
  • [GROOVY-5160] - Assignments in if/else/for/while/ternary are not type checked properly
  • [GROOVY-5161] - MetaObjectProtocol.getMetaMethod doc for "args" is ambiguous
  • [GROOVY-5162] - JsonOutput fails with uninformative NPE when map has null key
  • [GROOVY-5165] - ASTNode#removeNodeMetaData may nullify metaData field
  • [GROOVY-5166] - Static type checker should handle closure shared variables properly
  • [GROOVY-5167] - GDK date methods not recognized by the static type checker
  • [GROOVY-5168] - Static type checker should not complain on methods w/ implicit object return type when last expression is void
  • [GROOVY-5171] - Change execution phase of static type checking
  • [GROOVY-5172] - Inferred generics parameter types could contain primitive types
  • [GROOVY-5173] - BigDecimals are incorrectly converted to Double after arithmetic operation (appears to be the same as [GROOVY-5102] - Unrelated changes cause BigDecimal division to return Double)
  • [GROOVY-5175] - Calling a method with a null argument's value when the parameter is an array
  • [GROOVY-5176] - incorrect handling of generics placeholders in JavaStubGenerator
  • [GROOVY-5177] - STC allows assign an array to any type which is not an array
  • [GROOVY-5178] - STC allows assign an array to any type which is not an array
  • [GROOVY-5181] - "static final" constructors should be a Compile-time error
  • [GROOVY-5184] - Static type checker doesn't handle divisions properly
  • [GROOVY-5193] - Compilation should always fail when two methods exist in the same class with the same name but differing access levels *
  • [GROOVY-5196] - Map#drop Javadoc breaks all following Javadoc
  • [GROOVY-5198] - using "as" to coerce a String to an Enum value results in a groovy.lang.MissingMethodException under high contention
  • [GROOVY-5199] - Expression#transformExpression should copy node metadata
  • [GROOVY-5210] - Problem converting primitive array to a Set

Improvement

  • [GROOVY-4783] - @ToString generated code does not need private instance field
  • [GROOVY-5132] - GroovyConsole should support adding multiple Jars at one time via the Menu.
  • [GROOVY-5135] - Implement a "lowest upper bound" algorithm
  • [GROOVY-5143] - We should provide a version of collect with no parameters that implicitly uses Closure.IDENTITY
  • [GROOVY-5146] - Disallow setting of type on VariableExpression if isClosureSharedVariable() returns true from AST transforms
  • [GROOVY-5149] - Groovy should default to LinkedHashSet when using 'as Set' to make default sets deterministic
  • [GROOVY-5150] - Switch to a primitive representation of constants
  • [GROOVY-5151] - Provide methods to specify owner, delegate and thisObject of closures
  • [GROOVY-5164] - LongMath does not make use of Long.valueOf() optimization
  • [GROOVY-5179] - Implement type inference for for loop variable types
  • [GROOVY-5182] - for consistency, DGM collectEntries should have a Closure.IDENTITY variant
  • [GROOVY-5190] - groovy -version could show more information about the JVM

Wish

  • [GROOVY-5123] - avoid getTypeClass() use in DelegateASTTransformation
  • [GROOVY-5133] - java.net.URL support in groovy.json.JsonBuilder

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