Hello there

I am compiling standard Java code with Groovy (it works for the most part
with some exceptions) and want to call out some differences. Is there a way
for me to auto fix these discrepancies with say a text pre-processor or
some AST parsing modifications?

*Compile errors with new lines. *This snippet of code below will cause a
compile error with "Cannot find matching method
java.lang.String#positive()" on the line after the return statement. I
suppose this is because the parser thinks return blah is a statement by
itself

@Override
public String toString() {
    return "blah"
        + "blah blah";
}

*Unexpected behaviour with new lines.* This can cause other issues
unexpectedly. The following is valid java code, but it returns null in
Groovy instead of blah blah

 @Override
public String toString() {
    return
        "blah blah";
}

*Array constructs. *This is valid java code but will cause a compile error
in Groovy because arrays need to be created with [ ] instead of { }
enum MyEnum { ME, YOU, US }

@MyEnums(value = {ME, YOU})
void function1() { ... }


*Static type checking for stream constructs. *

class MyData ( String dataType; }
List<MyData> allMyData = []

// This is valid Java but wont compile in Groovy. The error is (getDataType
is not a valid method on Object)
Map<String, List<String>> myList =
allMyData.stream().collect(Collectors.groupingBy(data -> data.dataType ));
// It needs to be converted to this
Map<String, List<String>> myList =
allMyData.stream().collect(Collectors.groupingBy { MyData data ->
data.dataType } );

regards
Saravanan

Reply via email to