Changelog for Groovy 1.5.8

Bug

  • [GROOVY-1643] - Please use parser.getASTFactory().setASTNodeClass(GroovySourceAST.class)
  • [GROOVY-2271] - Mocks are not used by the delegate of a closure
  • [GROOVY-2352] - Late and superfluous setting of default values on primitives in subclasses
  • [GROOVY-2382] - 64K limit on strings -- Caught: java.lang.ClassFormatError: Unknown constant tag 84 in class file test
  • [GROOVY-2409] - Problems calling private static methods
  • [GROOVY-2487] - Strange behavior of category support
  • [GROOVY-2531] - VerifyError with -- var -- and (var--)--
  • [GROOVY-2582] - cannot extend java.util.Properties unless getProperty() is overridden
  • [GROOVY-2583] - "object is not an instance of declaring class" thrown invoking a method on Groovy class, wrapped in a Spring proxy
  • [GROOVY-2621] - Local variable shadows method in closure call, even if method is called with this keyword.
  • [GROOVY-2657] - Code: def Target = "releases$" returns error on line 0 / column 0
  • [GROOVY-2665] - static typing issue: adding a string to an Integer
  • [GROOVY-2687] - VerifyError on incorrect function call
  • [GROOVY-2736] - stub generator fails to generate stub for empty enum
  • [GROOVY-2746] - Static import of method with default parameter value: MissingMethodException
  • [GROOVY-2760] - groovyc compiles file, but running it fails with java.lang.VerifyError
  • [GROOVY-2779] - GPath evaluation problem for html with namespace
  • [GROOVY-2801] - Override toString in coerced Map fails for interfaces but is ok for concrete classes
  • [GROOVY-2836] - Misleading MissingMethodException thrown when this() is called inside a constructor
  • [GROOVY-2849] - A property name in a nested closure interferes with a class property when refering with "this.prop"
  • [GROOVY-2850] - VerifyError when using increment operator on value
  • [GROOVY-2887] - Default argument is not used
  • [GROOVY-2894] - Accessing the implicit parameter of a closure from an inner closure causes a Verify Error
  • [GROOVY-2918] - problem with default namespace in StreamingSAXBuilder
  • [GROOVY-2933] - List Parameter in Enum constructor with misbehavior
  • [GROOVY-2962] - groovyc ant task creates invalid stub
  • [GROOVY-2979] - Cannot launch Groovy on Windows with MSYS
  • [GROOVY-3033] - /= assignment operator breaks type system
  • [GROOVY-3038] - Cannot use "final" modifier on iterator in for (...) loops
  • [GROOVY-3043] - Command line arguments containing * (asterisk) not passed correctly
  • [GROOVY-3045] - JVM properties are not correctly used under Linux
  • [GROOVY-3054] - ClassFormatError: Illegal class name Exception when running a script from a folder with dot in its name
  • [GROOVY-3057] - SimpleTemplateEngine / TemplateEngine does not close Readers
  • [GROOVY-3069] - Closure does not have scope precedent over local method
  • [GROOVY-3079] - groovysh does not run when CLASSPATH includes embeddable/groovy-all.jar
  • [GROOVY-3084] - Groovy scripts can't access the 'args' property anymore to get the arguments from the command line
  • [GROOVY-3089] - compile error with covariant bridge method added for already existing method
  • [GROOVY-3090] - ObjectGraphBuilder does not set itself as delegate on closure strategies
  • [GROOVY-3102] - NPE with flatten() in case of null elements in the collection
  • [GROOVY-3115] - Shortcut notation for annotations for single value array parameter
  • [GROOVY-3120] - closure fails to call missingMethod in delegate
  • [GROOVY-3123] - while(true) {} could be optimized
  • [GROOVY-3124] - for(;;) {} does not behave the same as in Java
  • [GROOVY-3129] - Compile-error when implementing a method from a generic interface
  • [GROOVY-3135] - Incorrect array type created when calling vararg method
  • [GROOVY-3147] - memory leak in WeakDoubleKeyHashmap
  • [GROOVY-3156] - Within a nested closure, "this.method()" works incorrectly if parent closure and outermost class have closures/methods of the same name
  • [GROOVY-3161] - Wrong initialization order for static fields in enums
  • [GROOVY-3163] - static foo(Closure) hides super.foo(Bar)
  • [GROOVY-3170] - XmlNodePrinter does not handle attribute namespaces correctly
  • [GROOVY-3182] - Wrong line number on PropertyMissingException
  • [GROOVY-3184] - ClassExpression's of the form "SomeType.class" have wrong lastColumnNumber
  • [GROOVY-3187] - ServletBinding lies about what variables it can handle
  • [GROOVY-3200] - Map coercion should not throw an NPE for non implemented methods from the map
  • [GROOVY-3203] - ProxyGenerator.instantiateDelegate(Map, Class) behavior should align with ConvertedMap behavior
  • [GROOVY-3205] - Cannot override toString() in a "mapOfClosures as AClass" implementation
  • [GROOVY-3207] - XmlNodePointer does not handle namespace prefixes with repeated URNs
  • [GROOVY-3213] - DGM.unique(Collection, Closure) is broken for Sets
  • [GROOVY-3214] - Strange Groovy bug for Maps in a Enums method
  • [GROOVY-3219] - NamespaceBuilder does not create child nodes
  • [GROOVY-3220] - CLONE for 1.5.x -StackOverflowError with DOMCategory and missing property
  • [GROOVY-3226] - org.codehaus.groovy.tools.LoaderConfiguration fails to implement glob in expected fashion
  • [GROOVY-3229] - Can't subclass PrintWriter
  • [GROOVY-3235] - DGM.println(Object) and friends do a Writer.close() if the object is a writer. Should be flush() instead.
  • [GROOVY-3238] - String.valueOf(BigInteger) doesn't call String.valueOf(Object)
  • [GROOVY-3242] - metaclass and curry() gives MissingMethodException
  • [GROOVY-3245] - DGM.readLines(String) incorrectly loses empty lines.
  • [GROOVY-3248] - String.replaceAll(String, Closure) should quote the replacement string
  • [GROOVY-3264] - DGM#denormalize - Mac style line breaks and empty string
  • [GROOVY-3271] - Update antlib.xml and add to Groovy JAR
  • [GROOVY-3276] - Enums in 1.6-RC-1 no longer work with constructors with multiple parameters
  • [GROOVY-3281] - GroovyScriptEngine doesn't inherit CompilerConfiguration from parent classloader
  • [GROOVY-3283] - Can't "import static" more than one enum
  • [GROOVY-3284] - Call behavior on enums is inconsistent
  • [GROOVY-3297] - VerifyError on when a syntax error would be more appropriate
  • [GROOVY-3305] - Can't use list argument when The method's first argument class is int
  • [GROOVY-3317] - args passed from ant to groovy script: comes up blank
  • [GROOVY-3335] - Exception while evaluating classes with static toString() methods
  • [GROOVY-3345] - Proxy of a Proxy Fails
  • [GROOVY-3359] - GString.split() broken
  • [GROOVY-3370] - Generated Setter for boolean causes "Repetitive method name/signature..."
  • [GROOVY-3407] - lazyClassInit is called on proxy ClassNodes
  • [GROOVY-3611] - CLONE -Compile-error when implementing a method from a generic interface
  • [GROOVY-4804] - Command line arguments containing * (asterisk) not passed correctly

Improvement

  • [GROOVY-2547] - Parent is still set in Node after removing it from the tree
  • [GROOVY-2602] - TimeDuration should override toString
  • [GROOVY-2613] - add 'transform to platform newline' function to the GDK String API
  • [GROOVY-2853] - Unclear error message for syntax error when using generics and forget bracket
  • [GROOVY-2904] - [ [a:1, b:2, c:3] ].flatten() -> [ 1, 2, 3 ], but should be [ [a:1, b:2, c:3] ]
  • [GROOVY-2995] - GString: document or coerce
  • [GROOVY-3071] - include example of observing and editing compilation phase during class loading
  • [GROOVY-3086] - Class level TestNG Test annotation on a groovy class does not work as expected
  • [GROOVY-3091] - Allow setting String based strategies on ObjectGraphBuilder[IdentityResolver|ReferenceResolver]
  • [GROOVY-3092] - allow combinations() to work on Collections not just Lists
  • [GROOVY-3094] - ObjectGraphBuilder: allow references to be resolved lazily
  • [GROOVY-3112] - Occasional "Access is denied" message with <groovyc>
  • [GROOVY-3118] - Better Cobertura Support
  • [GROOVY-3119] - When accessing a property on a null object inside of a closure, the line number is not always reported in the stack trace.
  • [GROOVY-3132] - Groovydoc doesn't support multiple locations in sourcepath
  • [GROOVY-3162] - DGM.minus(Date, Date) is conspicuously missing
  • [GROOVY-3164] - Bring miscellaneous small changes from 1.6 into 1.5.
  • [GROOVY-3172] - Add setter for field MethodNode.name
  • [GROOVY-3221] - Open up AntrlParserPlugin for extension
  • [GROOVY-3285] - Implement String.replace(CharSequence, CharSequence), a JDK 1.5 method, for backwards compatibility
  • [GROOVY-3287] - Implement workaround for JDK 1.4 String.replaceAll bug.
  • [GROOVY-3290] - ProxyMetaClass.use method should return the result of the closure call
  • [GROOVY-3300] - Disallow try statements without catch or finally block
  • [GROOVY-3431] - New setters for Statement subclasses
  • [GROOVY-3445] - Provide better error message when an annotation member is set twice

New Feature

  • [GROOVY-1605] - Have a delete() method in File that deletes all subdirectories and contained files
  • [GROOVY-3106] - Provide a split(closure) DGM method on collections
  • [GROOVY-3246] - There should be a DGM.normalize(String) method which acts like readLines().join('\n')