[1/2] groovy git commit: Minor refactoring: Create tuple instances via factory method

2018-11-24 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 825b781d2 -> 885d8f7ec


Minor refactoring: Create tuple instances via factory method


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6bb02b18
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6bb02b18
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6bb02b18

Branch: refs/heads/master
Commit: 6bb02b18c45681ad68bfab173322c11304426fdd
Parents: 825b781
Author: Daniel Sun 
Authored: Sat Nov 24 22:22:26 2018 +0800
Committer: Daniel Sun 
Committed: Sat Nov 24 22:22:26 2018 +0800

--
 .../apache/groovy/parser/antlr4/AstBuilder.java | 43 ++--
 .../antlr4/util/PositionConfigureUtils.java |  9 ++--
 2 files changed, 27 insertions(+), 25 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/6bb02b18/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 2b0dd50..13a862e 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -30,8 +30,8 @@ import org.antlr.v4.runtime.atn.PredictionMode;
 import org.antlr.v4.runtime.misc.ParseCancellationException;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.TerminalNode;
-import org.apache.groovy.parser.antlr4.internal.atnmanager.AtnManager;
 import org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy;
+import org.apache.groovy.parser.antlr4.internal.atnmanager.AtnManager;
 import org.apache.groovy.parser.antlr4.util.StringUtils;
 import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.GroovyBugError;
@@ -137,6 +137,7 @@ import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static groovy.lang.Tuple.tuple;
 import static org.apache.groovy.parser.antlr4.GroovyLangParser.ADD;
 import static org.apache.groovy.parser.antlr4.GroovyLangParser.AS;
 import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.AdditiveExprAltContext;
@@ -475,7 +476,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 this.configureScriptClassNode();
 
 if (null != this.numberFormatError) {
-throw 
createParsingFailedException(this.numberFormatError.getSecond().getMessage(), 
this.numberFormatError.getFirst());
+throw 
createParsingFailedException(this.numberFormatError.getV2().getMessage(), 
this.numberFormatError.getV1());
 }
 
 return moduleNode;
@@ -657,7 +658,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 Statement loopBlock = this.unpackStatement((Statement) 
this.visit(ctx.statement()));
 
 return configureAST(
-new ForStatement(controlTuple.getFirst(), 
controlTuple.getSecond(), asBoolean(loopBlock) ? loopBlock : 
EmptyStatement.INSTANCE),
+new ForStatement(controlTuple.getV1(), controlTuple.getV2(), 
asBoolean(loopBlock) ? loopBlock : EmptyStatement.INSTANCE),
 ctx);
 }
 
@@ -726,7 +727,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 // FIXME Groovy will ignore variableModifier of parameter in the for 
control
 // In order to make the new parser behave same with the old one, we do 
not process variableModifier*
 
-return new Tuple2<>(parameter, (Expression) 
this.visit(ctx.expression()));
+return tuple(parameter, (Expression) this.visit(ctx.expression()));
 }
 
 @Override
@@ -737,7 +738,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 closureListExpression.addExpression(asBoolean(ctx.expression()) ? 
(Expression) this.visit(ctx.expression()) : EmptyExpression.INSTANCE);
 
closureListExpression.addExpression(this.visitForUpdate(ctx.forUpdate()));
 
-return new Tuple2<>(ForStatement.FOR_LOOP_DUMMY, 
closureListExpression);
+return tuple(ForStatement.FOR_LOOP_DUMMY, closureListExpression);
 }
 
 @Override
@@ -974,16 +975,16 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 boolean isLast = labelCnt - 1 == statementList.size();
 
-switch (tuple.getFirst().getType()) {
+switch (tuple.getV1().getType()) {
 case CASE: {
 if (!asBoolean(statementList)) {
-   

[2/2] groovy git commit: Minor refactoring: Remove duplicated code in `AstBuilder`

2018-11-24 Thread sunlan
Minor refactoring: Remove duplicated code in `AstBuilder`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/885d8f7e
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/885d8f7e
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/885d8f7e

Branch: refs/heads/master
Commit: 885d8f7ece4c80bf08254431ac24ad14349140f5
Parents: 6bb02b1
Author: Daniel Sun 
Authored: Sat Nov 24 22:24:25 2018 +0800
Committer: Daniel Sun 
Committed: Sat Nov 24 22:24:25 2018 +0800

--
 .../apache/groovy/parser/antlr4/AstBuilder.java | 26 +++-
 1 file changed, 14 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/885d8f7e/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 13a862e..5671afc 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -305,6 +305,7 @@ import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.SUB;
 import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.ShiftExprAltContext;
 import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.StandardLambdaExpressionContext;
 import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.StandardLambdaParametersContext;
+import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.StatementContext;
 import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.StatementsContext;
 import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.StringLiteralAltContext;
 import static 
org.apache.groovy.parser.antlr4.GroovyLangParser.StringLiteralContext;
@@ -743,21 +744,24 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 @Override
 public WhileStatement visitWhileStmtAlt(WhileStmtAltContext ctx) {
-Expression conditionExpression = 
this.visitExpressionInPar(ctx.expressionInPar());
-BooleanExpression booleanExpression =
-configureAST(
-new BooleanExpression(conditionExpression), 
conditionExpression);
-
-Statement loopBlock = this.unpackStatement((Statement) 
this.visit(ctx.statement()));
+Tuple2 conditionAndBlock = 
createLoopConditionExpressionAndBlock(ctx.expressionInPar(), ctx.statement());
 
 return configureAST(
-new WhileStatement(booleanExpression, asBoolean(loopBlock) ? 
loopBlock : EmptyStatement.INSTANCE),
+new WhileStatement(conditionAndBlock.getV1(), 
asBoolean(conditionAndBlock.getV2()) ? conditionAndBlock.getV2() : 
EmptyStatement.INSTANCE),
 ctx);
 }
 
 @Override
 public DoWhileStatement visitDoWhileStmtAlt(DoWhileStmtAltContext ctx) {
-Expression conditionExpression = 
this.visitExpressionInPar(ctx.expressionInPar());
+Tuple2 conditionAndBlock = 
createLoopConditionExpressionAndBlock(ctx.expressionInPar(), ctx.statement());
+
+return configureAST(
+new DoWhileStatement(conditionAndBlock.getV1(), 
asBoolean(conditionAndBlock.getV2()) ? conditionAndBlock.getV2() : 
EmptyStatement.INSTANCE),
+ctx);
+}
+
+private Tuple2 
createLoopConditionExpressionAndBlock(ExpressionInParContext eipc, 
StatementContext sc) {
+Expression conditionExpression = this.visitExpressionInPar(eipc);
 
 BooleanExpression booleanExpression =
 configureAST(
@@ -765,11 +769,9 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 conditionExpression
 );
 
-Statement loopBlock = this.unpackStatement((Statement) 
this.visit(ctx.statement()));
+Statement loopBlock = this.unpackStatement((Statement) this.visit(sc));
 
-return configureAST(
-new DoWhileStatement(booleanExpression, asBoolean(loopBlock) ? 
loopBlock : EmptyStatement.INSTANCE),
-ctx);
+return tuple(booleanExpression, loopBlock);
 }
 
 @Override



[2/2] groovy git commit: Minor refactoring: extract method `resolveFromDefaultImports`

2018-10-20 Thread sunlan
Minor refactoring: extract method `resolveFromDefaultImports`

(cherry picked from commit 8545fed53b0964b567d7b7c00b00cb284bd51392)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2d1ef39e
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2d1ef39e
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2d1ef39e

Branch: refs/heads/GROOVY_2_5_X
Commit: 2d1ef39e2f85cbfdfb4d2342da59700755815cb1
Parents: 183fd9e
Author: Daniel Sun 
Authored: Sat Oct 20 21:58:38 2018 +0800
Committer: Daniel Sun 
Committed: Sat Oct 20 22:07:56 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 76 +++-
 1 file changed, 42 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/2d1ef39e/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 03acc62..35b51b1 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -500,6 +500,48 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return false;
 }
 
+private boolean resolveFromDefaultImports(final ClassNode type, boolean 
testDefaultImports) {
+// test default imports
+testDefaultImports &= !type.hasPackageName();
+// we do not resolve a vanilla name starting with a lower case letter
+// try to resolve against a default import, because we know that the
+// default packages do not contain classes like these
+testDefaultImports &= !(type instanceof LowerCaseClass);
+
+if (testDefaultImports) {
+if (resolveFromDefaultImports(type)) return true;
+
+final String typeName = type.getName();
+if (BIGINTEGER_STR.equals(typeName)) {
+type.setRedirect(ClassHelper.BigInteger_TYPE);
+return true;
+} else if (BIGDECIMAL_STR.equals(typeName)) {
+type.setRedirect(ClassHelper.BigDecimal_TYPE);
+return true;
+}
+}
+return false;
+}
+
+private boolean resolveFromDefaultImports(ClassNode type) {
+final String typeName = type.getName();
+
+Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.get(typeName);
+if (null != packagePrefixSet) {
+// if the type name was resolved before, we can try the 
successfully resolved packages first, which are much less and very likely 
successful to resolve.
+// As a result, we can avoid trying other default import packages 
and further resolving, which can improve the resolving performance to some 
extent.
+if (resolveFromDefaultImports(type, 
packagePrefixSet.toArray(EMPTY_STRING_ARRAY))) {
+return true;
+}
+}
+
+if (resolveFromDefaultImports(type, DEFAULT_IMPORTS)) {
+return true;
+}
+return false;
+}
+
+
 private static final EvictableCache> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE = new ConcurrentCommonCache<>();
 
 private boolean resolveFromDefaultImports(final ClassNode type, final 
String[] packagePrefixes) {
@@ -533,40 +575,6 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return false;
 }
 
-private boolean resolveFromDefaultImports(final ClassNode type, boolean 
testDefaultImports) {
-// test default imports
-testDefaultImports &= !type.hasPackageName();
-// we do not resolve a vanilla name starting with a lower case letter
-// try to resolve against a default import, because we know that the
-// default packages do not contain classes like these
-testDefaultImports &= !(type instanceof LowerCaseClass);
-final String typeName = type.getName();
-
-if (testDefaultImports) {
-Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.get(typeName);
-if (null != packagePrefixSet) {
-// if the type name was resolved before, we can try the 
successfully resolved packages first, which are much less and very likely 
successful to resolve.
-// As a result, we can avoid trying other default import 
packages and further resolving, which can improve the resolving performance to 
some extent.
-if (resolveFromDefaultImports(type, 
packagePrefixSet.toArray(EMPTY_STRING_ARRAY))) {
-return true;
-}
-}
-
-if (resolveFromDefaultImports(type, DEFAULT_IMPORTS)) {
-

groovy git commit: Minor refactoring: extract method `resolveFromDefaultImports`

2018-10-20 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master c4380a09b -> 8545fed53


Minor refactoring: extract method `resolveFromDefaultImports`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8545fed5
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8545fed5
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8545fed5

Branch: refs/heads/master
Commit: 8545fed53b0964b567d7b7c00b00cb284bd51392
Parents: c4380a0
Author: Daniel Sun 
Authored: Sat Oct 20 21:58:38 2018 +0800
Committer: Daniel Sun 
Committed: Sat Oct 20 21:58:38 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 76 +++-
 1 file changed, 42 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/8545fed5/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 21e05e4..db0e4e4 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -500,6 +500,48 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return false;
 }
 
+private boolean resolveFromDefaultImports(final ClassNode type, boolean 
testDefaultImports) {
+// test default imports
+testDefaultImports &= !type.hasPackageName();
+// we do not resolve a vanilla name starting with a lower case letter
+// try to resolve against a default import, because we know that the
+// default packages do not contain classes like these
+testDefaultImports &= !(type instanceof LowerCaseClass);
+
+if (testDefaultImports) {
+if (resolveFromDefaultImports(type)) return true;
+
+final String typeName = type.getName();
+if (BIGINTEGER_STR.equals(typeName)) {
+type.setRedirect(ClassHelper.BigInteger_TYPE);
+return true;
+} else if (BIGDECIMAL_STR.equals(typeName)) {
+type.setRedirect(ClassHelper.BigDecimal_TYPE);
+return true;
+}
+}
+return false;
+}
+
+private boolean resolveFromDefaultImports(ClassNode type) {
+final String typeName = type.getName();
+
+Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.get(typeName);
+if (null != packagePrefixSet) {
+// if the type name was resolved before, we can try the 
successfully resolved packages first, which are much less and very likely 
successful to resolve.
+// As a result, we can avoid trying other default import packages 
and further resolving, which can improve the resolving performance to some 
extent.
+if (resolveFromDefaultImports(type, 
packagePrefixSet.toArray(EMPTY_STRING_ARRAY))) {
+return true;
+}
+}
+
+if (resolveFromDefaultImports(type, DEFAULT_IMPORTS)) {
+return true;
+}
+return false;
+}
+
+
 private static final EvictableCache> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE = new UnlimitedConcurrentCache<>();
 
 private boolean resolveFromDefaultImports(final ClassNode type, final 
String[] packagePrefixes) {
@@ -528,40 +570,6 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return false;
 }
 
-private boolean resolveFromDefaultImports(final ClassNode type, boolean 
testDefaultImports) {
-// test default imports
-testDefaultImports &= !type.hasPackageName();
-// we do not resolve a vanilla name starting with a lower case letter
-// try to resolve against a default import, because we know that the
-// default packages do not contain classes like these
-testDefaultImports &= !(type instanceof LowerCaseClass);
-final String typeName = type.getName();
-
-if (testDefaultImports) {
-Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.get(typeName);
-if (null != packagePrefixSet) {
-// if the type name was resolved before, we can try the 
successfully resolved packages first, which are much less and very likely 
successful to resolve.
-// As a result, we can avoid trying other default import 
packages and further resolving, which can improve the resolving performance to 
some extent.
-if (resolveFromDefaultImports(type, 
packagePrefixSet.toArray(EMPTY_STRING_ARRAY))) {
-return true;
-}
-}
-
-if (resolveFromDefaultImports(type, DEFAULT_IMPORTS)

[3/4] groovy git commit: Minor refactoring: remove duplicated code of `MetaClassImpl`

2018-10-20 Thread sunlan
Minor refactoring: remove duplicated code of `MetaClassImpl`

(cherry picked from commit d0cd0538b88e844096aeae64bcb2bd138546f856)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/a3fe79a9
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/a3fe79a9
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/a3fe79a9

Branch: refs/heads/GROOVY_2_5_X
Commit: a3fe79a987a4ecf10756994fe4bf21b4bbfc91e2
Parents: 1c60dc6
Author: Daniel Sun 
Authored: Sat Oct 20 18:45:37 2018 +0800
Committer: Daniel Sun 
Committed: Sat Oct 20 19:18:01 2018 +0800

--
 src/main/groovy/groovy/lang/MetaClassImpl.java | 64 +
 1 file changed, 39 insertions(+), 25 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/a3fe79a9/src/main/groovy/groovy/lang/MetaClassImpl.java
--
diff --git a/src/main/groovy/groovy/lang/MetaClassImpl.java 
b/src/main/groovy/groovy/lang/MetaClassImpl.java
index f22c62f..73dcb94 100644
--- a/src/main/groovy/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/groovy/lang/MetaClassImpl.java
@@ -1130,17 +1130,11 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 }
 break;
 case Closure.DELEGATE_FIRST:
-if (method == null && delegate != closure && delegate != 
null) {
-MetaClass delegateMetaClass = 
lookupObjectMetaClass(delegate);
-method = delegateMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null)
-return delegateMetaClass.invokeMethod(delegate, 
methodName, originalArguments);
-}
-if (method == null && owner != closure) {
-MetaClass ownerMetaClass = 
lookupObjectMetaClass(owner);
-method = ownerMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null) return 
ownerMetaClass.invokeMethod(owner, methodName, originalArguments);
+Object result = invokeMethod(method, delegate, closure, 
methodName, argClasses, originalArguments, owner);
+if (InvokeMethodResult.NONE != result) {
+return result;
 }
+
 if (method == null && resolveStrategy != Closure.TO_SELF) {
 // still no methods found, test if delegate or owner 
are GroovyObjects
 // and invoke the method on them if so.
@@ -1164,17 +1158,11 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 
 break;
 default:
-if (method == null && delegate != closure && delegate != 
null) {
-MetaClass delegateMetaClass = 
lookupObjectMetaClass(delegate);
-method = delegateMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null)
-return delegateMetaClass.invokeMethod(delegate, 
methodName, originalArguments);
-}
-if (method == null && owner != closure) {
-MetaClass ownerMetaClass = 
lookupObjectMetaClass(owner);
-method = ownerMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null) return 
ownerMetaClass.invokeMethod(owner, methodName, originalArguments);
+Object r = invokeMethod(method, delegate, closure, 
methodName, argClasses, originalArguments, owner);
+if (InvokeMethodResult.NONE != r) {
+return r;
 }
+
 if (method == null && resolveStrategy != Closure.TO_SELF) {
 // still no methods found, test if delegate or owner 
are GroovyObjects
 // and invoke the method on them if so.
@@ -1844,7 +1832,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 // special cases
 
//--
 if (method == null) {
-/** todo these special cases should be special MetaClasses maybe */
+/* todo these special cases should be special MetaClasses maybe */
 if (theClass != Class.class && object instanceof Class) {
 MetaClass mc = registry.getMetaClass(Class.class);
 return mc.getProperty(Class.class, object, name, useSuper, 
false);
@@ -1957,7 +1945,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 
//-

[2/2] groovy git commit: Minor refactoring: remove duplicated code of `MetaClassImpl`

2018-10-20 Thread sunlan
Minor refactoring: remove duplicated code of `MetaClassImpl`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/d0cd0538
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/d0cd0538
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/d0cd0538

Branch: refs/heads/master
Commit: d0cd0538b88e844096aeae64bcb2bd138546f856
Parents: 4cb1c7c
Author: Daniel Sun 
Authored: Sat Oct 20 18:45:37 2018 +0800
Committer: Daniel Sun 
Committed: Sat Oct 20 18:45:37 2018 +0800

--
 src/main/groovy/groovy/lang/MetaClassImpl.java | 64 +
 1 file changed, 39 insertions(+), 25 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/d0cd0538/src/main/groovy/groovy/lang/MetaClassImpl.java
--
diff --git a/src/main/groovy/groovy/lang/MetaClassImpl.java 
b/src/main/groovy/groovy/lang/MetaClassImpl.java
index 28512a5..20a373b 100644
--- a/src/main/groovy/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/groovy/lang/MetaClassImpl.java
@@ -1191,17 +1191,11 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 }
 break;
 case Closure.DELEGATE_FIRST:
-if (method == null && delegate != closure && delegate != 
null) {
-MetaClass delegateMetaClass = 
lookupObjectMetaClass(delegate);
-method = delegateMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null)
-return delegateMetaClass.invokeMethod(delegate, 
methodName, originalArguments);
-}
-if (method == null && owner != closure) {
-MetaClass ownerMetaClass = 
lookupObjectMetaClass(owner);
-method = ownerMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null) return 
ownerMetaClass.invokeMethod(owner, methodName, originalArguments);
+Object result = invokeMethod(method, delegate, closure, 
methodName, argClasses, originalArguments, owner);
+if (InvokeMethodResult.NONE != result) {
+return result;
 }
+
 if (method == null && resolveStrategy != Closure.TO_SELF) {
 // still no methods found, test if delegate or owner 
are GroovyObjects
 // and invoke the method on them if so.
@@ -1225,17 +1219,11 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 
 break;
 default:
-if (method == null && delegate != closure && delegate != 
null) {
-MetaClass delegateMetaClass = 
lookupObjectMetaClass(delegate);
-method = delegateMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null)
-return delegateMetaClass.invokeMethod(delegate, 
methodName, originalArguments);
-}
-if (method == null && owner != closure) {
-MetaClass ownerMetaClass = 
lookupObjectMetaClass(owner);
-method = ownerMetaClass.pickMethod(methodName, 
argClasses);
-if (method != null) return 
ownerMetaClass.invokeMethod(owner, methodName, originalArguments);
+Object r = invokeMethod(method, delegate, closure, 
methodName, argClasses, originalArguments, owner);
+if (InvokeMethodResult.NONE != r) {
+return r;
 }
+
 if (method == null && resolveStrategy != Closure.TO_SELF) {
 // still no methods found, test if delegate or owner 
are GroovyObjects
 // and invoke the method on them if so.
@@ -1905,7 +1893,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 // special cases
 
//--
 if (method == null) {
-/** todo these special cases should be special MetaClasses maybe */
+/* todo these special cases should be special MetaClasses maybe */
 if (theClass != Class.class && object instanceof Class) {
 MetaClass mc = registry.getMetaClass(Class.class);
 return mc.getProperty(Class.class, object, name, useSuper, 
false);
@@ -2018,7 +2006,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 
//--
 // special cases
 
//

groovy git commit: Minor refactoring for atn managers

2018-09-21 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master be7d6aa4e -> 6cc11028c


Minor refactoring for atn managers


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6cc11028
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6cc11028
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6cc11028

Branch: refs/heads/master
Commit: 6cc11028c516fe4a5dcdfed8fdb41c56d0142c48
Parents: be7d6aa
Author: Daniel Sun 
Authored: Sat Sep 22 06:45:39 2018 +0800
Committer: Daniel Sun 
Committed: Sat Sep 22 06:45:39 2018 +0800

--
 subprojects/parser-antlr4/README.adoc   |   1 +
 .../apache/groovy/parser/antlr4/AstBuilder.java |   6 +-
 .../groovy/parser/antlr4/GroovyLangLexer.java   |  23 +---
 .../groovy/parser/antlr4/GroovyLangParser.java  |   4 +-
 .../parser/antlr4/internal/AtnManager.java  | 110 ---
 .../antlr4/internal/atnmanager/AtnManager.java  |  88 +++
 .../internal/atnmanager/LexerAtnManager.java|  31 ++
 .../internal/atnmanager/ParserAtnManager.java   |  24 
 8 files changed, 152 insertions(+), 135 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/6cc11028/subprojects/parser-antlr4/README.adoc
--
diff --git a/subprojects/parser-antlr4/README.adoc 
b/subprojects/parser-antlr4/README.adoc
index 4075afb..4d08312 100644
--- a/subprojects/parser-antlr4/README.adoc
+++ b/subprojects/parser-antlr4/README.adoc
@@ -57,6 +57,7 @@ groovyOptions.forkOptions.jvmArgs += ["-Dgroovy.antlr4=true"]
 === JVM system properties to control parsing
 
 * `groovy.antlr4.cache.threshold`: how frequently to clear DFA cache(default: 
64). **Notice:** The more frequently the DFA cache is cleared, the poorer 
parsing performance will be(you can not set the value that is less than the 
default value). But the DFA cache has to be cleared to avoid OutOfMemoryError's 
occurring.
+* `groovy.clear.lexer.dfa.cache`: whether to clear the dfa cache of 
lexer(default: false)
 * `groovy.attach.groovydoc`: whether to attach groovydoc to node as metadata 
while parsing groovy source code(default: false)
 * `groovy.attach.runtime.groovydoc`: whether to attach `@Groovydoc` annotation 
to all members which have groovydoc(i.e. `/** ... */`)
 * `groovy.extract.doc.comment`: whether to collect groovydoc while parsing 
groovy source code(default: false). **DEPRECATED, USE `groovy.attach.groovydoc` 
INSTEAD**

http://git-wip-us.apache.org/repos/asf/groovy/blob/6cc11028/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 98526a1..e3dd188 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -30,7 +30,7 @@ import org.antlr.v4.runtime.atn.PredictionMode;
 import org.antlr.v4.runtime.misc.ParseCancellationException;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.TerminalNode;
-import org.apache.groovy.parser.antlr4.internal.AtnManager;
+import org.apache.groovy.parser.antlr4.internal.atnmanager.AtnManager;
 import org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy;
 import org.apache.groovy.parser.antlr4.util.StringUtils;
 import org.apache.groovy.util.Maps;
@@ -391,7 +391,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 try {
 // parsing have to wait util clearing is complete.
-AtnManager.RRWL.readLock().lock();
+AtnManager.READ_LOCK.lock();
 try {
 result = buildCST(PredictionMode.SLL);
 } catch (Throwable t) {
@@ -402,7 +402,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 result = buildCST(PredictionMode.LL);
 } finally {
-AtnManager.RRWL.readLock().unlock();
+AtnManager.READ_LOCK.unlock();
 }
 } catch (Throwable t) {
 throw convertException(t);

http://git-wip-us.apache.org/repos/asf/groovy/blob/6cc11028/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovyLangLexer.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovyLangLexer.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/GroovyLangLexer.java
index d3b7538.

groovy git commit: minor refactoring

2018-09-13 Thread paulk
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_4_X 8a612adc6 -> e16728b91


minor refactoring


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/e16728b9
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/e16728b9
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/e16728b9

Branch: refs/heads/GROOVY_2_4_X
Commit: e16728b91601573ee18475ec5dee5355817f670c
Parents: 8a612ad
Author: Paul King 
Authored: Fri Sep 14 16:25:37 2018 +1000
Committer: Paul King 
Committed: Fri Sep 14 16:25:37 2018 +1000

--
 .../org/codehaus/groovy/ant/GroovycTest.java | 19 ++-
 1 file changed, 10 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/e16728b9/subprojects/groovy-ant/src/test/groovy/org/codehaus/groovy/ant/GroovycTest.java
--
diff --git 
a/subprojects/groovy-ant/src/test/groovy/org/codehaus/groovy/ant/GroovycTest.java
 
b/subprojects/groovy-ant/src/test/groovy/org/codehaus/groovy/ant/GroovycTest.java
index e5c2fa8..ad19109 100644
--- 
a/subprojects/groovy-ant/src/test/groovy/org/codehaus/groovy/ant/GroovycTest.java
+++ 
b/subprojects/groovy-ant/src/test/groovy/org/codehaus/groovy/ant/GroovycTest.java
@@ -97,29 +97,30 @@ public class GroovycTest extends GroovyTestCase {
 break;
 } catch (final FileNotFoundException fnfe) {
 String message = "File " + result.getName() + " should have 
been created but wasn't.";
-if (i == 0) {
-System.err.println(message);
-DefaultGroovyStaticMethods.sleep(this, 50L);
-} else fail(message);
+reportOrFail(i, message);
 } catch (final IOException ioe) {
 String message = "Error reading file " + result.getName() + 
".";
-fail(message);
-if (i == 0) System.err.println(message);
-else fail(message);
+reportOrFail(i, message);
 } finally {
 if (null != fr) {
 try {
 fr.close();
 } catch (IOException e) {
 String message = "Error closing file reader: " + 
result.getName() + ".";
-if (i == 0) System.err.println(message);
-else fail(message);
+reportOrFail(i, message);
 }
 }
 }
 }
 }
 
+private void reportOrFail(int i, String message) {
+if (i == 0) {
+System.err.println(message);
+DefaultGroovyStaticMethods.sleep(this, 50L);
+} else fail(message);
+}
+
 public void testGroovycTest1_NoFork_NoClasspath() {
 ensureExecutes("GroovycTest1_NoFork_NoClasspath");
 }



groovy git commit: Minor refactoring: remove duplicated code

2018-08-31 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X fdf753e6e -> 289848139


Minor refactoring: remove duplicated code

(cherry picked from commit 6ad26afbaed0c9aa68c405d0339ac5051c166dac)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/28984813
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/28984813
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/28984813

Branch: refs/heads/GROOVY_2_5_X
Commit: 2898481397a09ee527f12ca1fd7f8850eea802c4
Parents: fdf753e
Author: Daniel Sun 
Authored: Sat Sep 1 05:19:41 2018 +0800
Committer: Daniel Sun 
Committed: Sat Sep 1 05:42:09 2018 +0800

--
 .../groovy/util/slurpersupport/Attribute.java   | 20 +-
 .../groovy/util/slurpersupport/GPathResult.java | 22 +++
 .../groovy/util/slurpersupport/NodeChild.java   | 40 +---
 3 files changed, 25 insertions(+), 57 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/28984813/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
--
diff --git 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
index 9f5f15a..9d57662 100644
--- 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
+++ 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
@@ -111,25 +111,7 @@ public class Attribute extends GPathResult {
 }
 
 public Iterator nodeIterator() {
-return new Iterator() {
-private boolean hasNext = true;
-
-public boolean hasNext() {
-return this.hasNext;
-}
-
-public Object next() {
-try {
-return (this.hasNext) ? Attribute.this : null;
-} finally {
-this.hasNext = false;
-}
-}
-
-public void remove() {
-throw new UnsupportedOperationException();
-}
-};
+return createIterator(this);
 }
 
 public Writer writeTo(final Writer out) throws IOException {

http://git-wip-us.apache.org/repos/asf/groovy/blob/28984813/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
--
diff --git 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
index 65e24d1..5bf5a2a 100644
--- 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
+++ 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
@@ -687,4 +687,26 @@ public abstract class GPathResult extends 
GroovyObjectSupport implements Writabl
 public abstract GPathResult findAll(Closure closure);
 
 public abstract Iterator nodeIterator();
+
+protected Iterator createIterator(final Object obj) {
+return new Iterator() {
+private boolean hasNext = true;
+
+public boolean hasNext() {
+return this.hasNext;
+}
+
+public Object next() {
+try {
+return (this.hasNext) ? obj : null;
+} finally {
+this.hasNext = false;
+}
+}
+
+public void remove() {
+throw new UnsupportedOperationException();
+}
+};
+}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/28984813/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
--
diff --git 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
index 76617ea..2843262 100644
--- 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
+++ 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
@@ -100,47 +100,11 @@ public class NodeChild extends GPathResult {
 }
 
 public Iterator iterator() {
-return new Iterator() {
-private boolean hasNext = true;
-
-public boolean hasNext() {
-return this.hasNext;
-}
-
-public Object next() {
-try {
-return (this.hasNext) ? NodeChild.this : null;
-} finally {
-this.hasNext = false;
-}
-}
-
-public void remove() {
-  

groovy git commit: Minor refactoring: remove duplicated code

2018-08-31 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 8b02f983a -> 6ad26afba


Minor refactoring: remove duplicated code


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6ad26afb
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6ad26afb
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6ad26afb

Branch: refs/heads/master
Commit: 6ad26afbaed0c9aa68c405d0339ac5051c166dac
Parents: 8b02f98
Author: Daniel Sun 
Authored: Sat Sep 1 05:19:41 2018 +0800
Committer: Daniel Sun 
Committed: Sat Sep 1 05:19:41 2018 +0800

--
 .../groovy/util/slurpersupport/Attribute.java   | 20 +-
 .../groovy/util/slurpersupport/GPathResult.java | 22 +++
 .../groovy/util/slurpersupport/NodeChild.java   | 40 +---
 3 files changed, 25 insertions(+), 57 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/6ad26afb/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
--
diff --git 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
index 9f5f15a..9d57662 100644
--- 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
+++ 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/Attribute.java
@@ -111,25 +111,7 @@ public class Attribute extends GPathResult {
 }
 
 public Iterator nodeIterator() {
-return new Iterator() {
-private boolean hasNext = true;
-
-public boolean hasNext() {
-return this.hasNext;
-}
-
-public Object next() {
-try {
-return (this.hasNext) ? Attribute.this : null;
-} finally {
-this.hasNext = false;
-}
-}
-
-public void remove() {
-throw new UnsupportedOperationException();
-}
-};
+return createIterator(this);
 }
 
 public Writer writeTo(final Writer out) throws IOException {

http://git-wip-us.apache.org/repos/asf/groovy/blob/6ad26afb/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
--
diff --git 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
index 65e24d1..5bf5a2a 100644
--- 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
+++ 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/GPathResult.java
@@ -687,4 +687,26 @@ public abstract class GPathResult extends 
GroovyObjectSupport implements Writabl
 public abstract GPathResult findAll(Closure closure);
 
 public abstract Iterator nodeIterator();
+
+protected Iterator createIterator(final Object obj) {
+return new Iterator() {
+private boolean hasNext = true;
+
+public boolean hasNext() {
+return this.hasNext;
+}
+
+public Object next() {
+try {
+return (this.hasNext) ? obj : null;
+} finally {
+this.hasNext = false;
+}
+}
+
+public void remove() {
+throw new UnsupportedOperationException();
+}
+};
+}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/6ad26afb/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
--
diff --git 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
index 76617ea..2843262 100644
--- 
a/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
+++ 
b/subprojects/groovy-xml/src/main/java/groovy/util/slurpersupport/NodeChild.java
@@ -100,47 +100,11 @@ public class NodeChild extends GPathResult {
 }
 
 public Iterator iterator() {
-return new Iterator() {
-private boolean hasNext = true;
-
-public boolean hasNext() {
-return this.hasNext;
-}
-
-public Object next() {
-try {
-return (this.hasNext) ? NodeChild.this : null;
-} finally {
-this.hasNext = false;
-}
-}
-
-public void remove() {
-throw new UnsupportedOperationException();
-}
-};
+r

[2/5] groovy git commit: Minor refactoring: 'try finally' replaceable with 'try' with resources

2018-08-26 Thread sunlan
Minor refactoring: 'try finally' replaceable with 'try' with resources


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f396eb91
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f396eb91
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f396eb91

Branch: refs/heads/GROOVY_2_5_X
Commit: f396eb91ba2ec9f0847fc5969f553ecb337895ef
Parents: 8f9ec37
Author: Daniel Sun 
Authored: Sun Aug 26 17:44:44 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 18:05:28 2018 +0800

--
 .../java/org/codehaus/groovy/runtime/WritablePath.java| 10 +++---
 .../main/groovy/groovy/text/StreamingTemplateEngine.java  |  8 +---
 2 files changed, 4 insertions(+), 14 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/f396eb91/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
--
diff --git 
a/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
 
b/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
index 842872a..fa1157a 100644
--- 
a/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
+++ 
b/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
@@ -58,20 +58,16 @@ public class WritablePath implements Path, Writable {
 }
 
 public Writer writeTo(final Writer out) throws IOException {
-final Reader reader =
-(this.encoding == null)
-? new InputStreamReader(Files.newInputStream(this))
-: new InputStreamReader(Files.newInputStream(this), 
Charset.forName(this.encoding));
 
-try {
+try (Reader reader = (this.encoding == null)
+? new InputStreamReader(Files.newInputStream(this))
+: new InputStreamReader(Files.newInputStream(this), 
Charset.forName(this.encoding))) {
 int c = reader.read();
 
 while (c != -1) {
 out.write(c);
 c = reader.read();
 }
-} finally {
-reader.close();
 }
 return out;
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/f396eb91/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
index 8894978..23745cd 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
@@ -379,15 +379,9 @@ public class StreamingTemplateEngine extends 
TemplateEngine {
 private int getLinesInSource() throws IOException {
 int result = 0;
 
-LineNumberReader reader = null;
-try {
-reader = new LineNumberReader(new 
StringReader(templateSource.toString()));
+try (LineNumberReader reader = new LineNumberReader(new 
StringReader(templateSource.toString( {
 reader.skip(Long.MAX_VALUE);
 result = reader.getLineNumber();
-} finally {
-if (reader != null) {
-reader.close();
-}
 }
 
 return result;



[2/4] groovy git commit: Minor refactoring: 'try finally' replaceable with 'try' with resources

2018-08-26 Thread sunlan
Minor refactoring: 'try finally' replaceable with 'try' with resources


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8d2839aa
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8d2839aa
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8d2839aa

Branch: refs/heads/master
Commit: 8d2839aa7288c2ae9259e130b55b15b858217a73
Parents: cc3b001
Author: Daniel Sun 
Authored: Sun Aug 26 17:44:44 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 17:44:44 2018 +0800

--
 .../java/org/codehaus/groovy/runtime/WritablePath.java| 10 +++---
 .../main/groovy/groovy/text/StreamingTemplateEngine.java  |  8 +---
 2 files changed, 4 insertions(+), 14 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/8d2839aa/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
--
diff --git 
a/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
 
b/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
index 842872a..fa1157a 100644
--- 
a/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
+++ 
b/subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/WritablePath.java
@@ -58,20 +58,16 @@ public class WritablePath implements Path, Writable {
 }
 
 public Writer writeTo(final Writer out) throws IOException {
-final Reader reader =
-(this.encoding == null)
-? new InputStreamReader(Files.newInputStream(this))
-: new InputStreamReader(Files.newInputStream(this), 
Charset.forName(this.encoding));
 
-try {
+try (Reader reader = (this.encoding == null)
+? new InputStreamReader(Files.newInputStream(this))
+: new InputStreamReader(Files.newInputStream(this), 
Charset.forName(this.encoding))) {
 int c = reader.read();
 
 while (c != -1) {
 out.write(c);
 c = reader.read();
 }
-} finally {
-reader.close();
 }
 return out;
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/8d2839aa/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
index 8894978..23745cd 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
@@ -379,15 +379,9 @@ public class StreamingTemplateEngine extends 
TemplateEngine {
 private int getLinesInSource() throws IOException {
 int result = 0;
 
-LineNumberReader reader = null;
-try {
-reader = new LineNumberReader(new 
StringReader(templateSource.toString()));
+try (LineNumberReader reader = new LineNumberReader(new 
StringReader(templateSource.toString( {
 reader.skip(Long.MAX_VALUE);
 result = reader.getLineNumber();
-} finally {
-if (reader != null) {
-reader.close();
-}
 }
 
 return result;



[1/5] groovy git commit: Minor refactoring: Identical 'catch' branches in 'try' statement

2018-08-26 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 4e40942dc -> b89f6a3e4


Minor refactoring: Identical 'catch' branches in 'try' statement


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8f9ec372
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8f9ec372
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8f9ec372

Branch: refs/heads/GROOVY_2_5_X
Commit: 8f9ec372abf8a192eb06f00a5234a9013b6383af
Parents: 4e40942
Author: Daniel Sun 
Authored: Sun Aug 26 17:44:19 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 18:05:18 2018 +0800

--
 .../src/main/java/org/codehaus/groovy/ant/Groovy.java   |  4 +---
 .../groovy/tools/groovydoc/SimpleGroovyClassDoc.java| 12 +++-
 .../main/java/groovy/servlet/AbstractHttpServlet.java   |  3 +--
 .../src/main/java/groovy/servlet/GroovyServlet.java |  4 +---
 .../groovy-sql/src/main/java/groovy/sql/Sql.java|  8 +---
 .../org/codehaus/groovy/binding/PropertyBinding.java|  4 +---
 .../main/groovy/groovy/text/GStringTemplateEngine.java  |  4 +---
 .../groovy/groovy/text/StreamingTemplateEngine.java |  4 +---
 .../groovy-xml/src/main/java/groovy/util/XmlParser.java |  4 +---
 .../src/main/java/groovy/util/XmlSlurper.java   |  4 +---
 10 files changed, 12 insertions(+), 39 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/8f9ec372/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
--
diff --git 
a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java 
b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
index 7abe713..65ea13e 100644
--- a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
+++ b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
@@ -528,9 +528,7 @@ public class Groovy extends Java {
 shell.run(txt, scriptName, cmdline.getCommandline());
 }
 }
-catch (final CompilationFailedException e) {
-processError(e);
-} catch (IOException e) {
+catch (final CompilationFailedException | IOException e) {
 processError(e);
 }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f9ec372/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
--
diff --git 
a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
 
b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
index d9f40a5..b308b9b 100644
--- 
a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
+++ 
b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
@@ -640,9 +640,7 @@ public class SimpleGroovyClassDoc extends 
SimpleGroovyAbstractableElementDoc imp
 private Class resolveFromJavaLang(String name) {
 try {
 return Class.forName("java.lang." + name, false, 
getClass().getClassLoader());
-} catch (NoClassDefFoundError e) {
-// ignore
-} catch (ClassNotFoundException e) {
+} catch (NoClassDefFoundError | ClassNotFoundException e) {
 // ignore
 }
 return null;
@@ -693,9 +691,7 @@ public class SimpleGroovyClassDoc extends 
SimpleGroovyAbstractableElementDoc imp
 try {
 // TODO cache these??
 return Class.forName(candidate, false, 
getClass().getClassLoader());
-} catch (NoClassDefFoundError e) {
-// ignore
-} catch (ClassNotFoundException e) {
+} catch (NoClassDefFoundError | ClassNotFoundException e) {
 // ignore
 }
 }
@@ -708,9 +704,7 @@ public class SimpleGroovyClassDoc extends 
SimpleGroovyAbstractableElementDoc imp
 try {
 // TODO cache these??
 return Class.forName(candidate, false, 
getClass().getClassLoader());
-} catch (NoClassDefFoundError e) {
-// ignore
-} catch (ClassNotFoundException e) {
+} catch (NoClassDefFoundError | ClassNotFoundException e) {
 // ignore
 }
 return null;

http://git-wip-us.apache.org/repos/asf/groovy/blob/8f9ec372/subprojects/groovy-servlet/src/main/java/groovy/servlet/AbstractHttpServlet.java
--
diff --git 
a/subprojects/groovy-servlet/src/main/java/groovy/servlet/AbstractHttpServlet.j

[1/4] groovy git commit: Minor refactoring: Identical 'catch' branches in 'try' statement

2018-08-26 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 0395aff7e -> 688b3dc3b


Minor refactoring: Identical 'catch' branches in 'try' statement


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/cc3b001c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/cc3b001c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/cc3b001c

Branch: refs/heads/master
Commit: cc3b001ce5838259007c45b57ef2cf79462d2c88
Parents: 0395aff
Author: Daniel Sun 
Authored: Sun Aug 26 17:44:19 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 17:44:19 2018 +0800

--
 .../src/main/java/org/codehaus/groovy/ant/Groovy.java   |  4 +---
 .../groovy/tools/groovydoc/SimpleGroovyClassDoc.java| 12 +++-
 .../main/java/groovy/servlet/AbstractHttpServlet.java   |  3 +--
 .../src/main/java/groovy/servlet/GroovyServlet.java |  4 +---
 .../groovy-sql/src/main/java/groovy/sql/Sql.java|  8 +---
 .../org/codehaus/groovy/binding/PropertyBinding.java|  4 +---
 .../main/groovy/groovy/text/GStringTemplateEngine.java  |  4 +---
 .../groovy/groovy/text/StreamingTemplateEngine.java |  4 +---
 .../groovy-xml/src/main/java/groovy/util/XmlParser.java |  4 +---
 .../src/main/java/groovy/util/XmlSlurper.java   |  4 +---
 10 files changed, 12 insertions(+), 39 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/cc3b001c/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
--
diff --git 
a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java 
b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
index 7abe713..65ea13e 100644
--- a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
+++ b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovy.java
@@ -528,9 +528,7 @@ public class Groovy extends Java {
 shell.run(txt, scriptName, cmdline.getCommandline());
 }
 }
-catch (final CompilationFailedException e) {
-processError(e);
-} catch (IOException e) {
+catch (final CompilationFailedException | IOException e) {
 processError(e);
 }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/cc3b001c/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
--
diff --git 
a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
 
b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
index d9f40a5..b308b9b 100644
--- 
a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
+++ 
b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
@@ -640,9 +640,7 @@ public class SimpleGroovyClassDoc extends 
SimpleGroovyAbstractableElementDoc imp
 private Class resolveFromJavaLang(String name) {
 try {
 return Class.forName("java.lang." + name, false, 
getClass().getClassLoader());
-} catch (NoClassDefFoundError e) {
-// ignore
-} catch (ClassNotFoundException e) {
+} catch (NoClassDefFoundError | ClassNotFoundException e) {
 // ignore
 }
 return null;
@@ -693,9 +691,7 @@ public class SimpleGroovyClassDoc extends 
SimpleGroovyAbstractableElementDoc imp
 try {
 // TODO cache these??
 return Class.forName(candidate, false, 
getClass().getClassLoader());
-} catch (NoClassDefFoundError e) {
-// ignore
-} catch (ClassNotFoundException e) {
+} catch (NoClassDefFoundError | ClassNotFoundException e) {
 // ignore
 }
 }
@@ -708,9 +704,7 @@ public class SimpleGroovyClassDoc extends 
SimpleGroovyAbstractableElementDoc imp
 try {
 // TODO cache these??
 return Class.forName(candidate, false, 
getClass().getClassLoader());
-} catch (NoClassDefFoundError e) {
-// ignore
-} catch (ClassNotFoundException e) {
+} catch (NoClassDefFoundError | ClassNotFoundException e) {
 // ignore
 }
 return null;

http://git-wip-us.apache.org/repos/asf/groovy/blob/cc3b001c/subprojects/groovy-servlet/src/main/java/groovy/servlet/AbstractHttpServlet.java
--
diff --git 
a/subprojects/groovy-servlet/src/main/java/groovy/servlet/AbstractHttpServlet.java
 
b/subp

[4/4] groovy git commit: Minor refactoring: 'try finally' replaceable with 'try' with resources

2018-08-25 Thread sunlan
Minor refactoring: 'try finally' replaceable with 'try' with resources

(cherry picked from commit 80a8b199037258523deb52b429dcaf0a51c517f3)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6c615579
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6c615579
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6c615579

Branch: refs/heads/GROOVY_2_5_X
Commit: 6c615579f18d6ed439bba97cab6d8a07a3f524ba
Parents: 5b4de90
Author: Daniel Sun 
Authored: Sun Aug 26 00:38:03 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 00:47:23 2018 +0800

--
 src/main/groovy/groovy/util/CharsetToolkit.java | 13 +++---
 .../groovy/groovy/util/GroovyScriptEngine.java  | 11 +
 .../groovy/control/CompilationUnit.java | 12 +
 .../groovy/control/SourceExtensionHandler.java  |  6 +
 .../codehaus/groovy/runtime/WritableFile.java   | 11 +++--
 .../groovy/tools/LoaderConfiguration.java   |  5 +---
 .../groovy/tools/javac/JavaStubGenerator.java   | 26 +++-
 .../transform/ASTTransformationVisitor.java |  7 +-
 8 files changed, 20 insertions(+), 71 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/6c615579/src/main/groovy/groovy/util/CharsetToolkit.java
--
diff --git a/src/main/groovy/groovy/util/CharsetToolkit.java 
b/src/main/groovy/groovy/util/CharsetToolkit.java
index fd7893b..b5f5ee6 100644
--- a/src/main/groovy/groovy/util/CharsetToolkit.java
+++ b/src/main/groovy/groovy/util/CharsetToolkit.java
@@ -75,25 +75,18 @@ public class CharsetToolkit {
 this.file = file;
 this.defaultCharset = getDefaultSystemCharset();
 this.charset = null;
-InputStream input = new FileInputStream(file);
-try {
+try (InputStream input = new FileInputStream(file)) {
 byte[] bytes = new byte[4096];
 int bytesRead = input.read(bytes);
 if (bytesRead == -1) {
 this.buffer = EMPTY_BYTE_ARRAY;
-}
-else if (bytesRead < 4096) {
+} else if (bytesRead < 4096) {
 byte[] bytesToGuess = new byte[bytesRead];
 System.arraycopy(bytes, 0, bytesToGuess, 0, bytesRead);
 this.buffer = bytesToGuess;
-}
-else {
+} else {
 this.buffer = bytes;
 }
-} finally {
-try {input.close();} catch (IOException e){
-// IGNORE
-}
 }
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/6c615579/src/main/groovy/groovy/util/GroovyScriptEngine.java
--
diff --git a/src/main/groovy/groovy/util/GroovyScriptEngine.java 
b/src/main/groovy/groovy/util/GroovyScriptEngine.java
index 1bc79b4..c9e0c5b 100644
--- a/src/main/groovy/groovy/util/GroovyScriptEngine.java
+++ b/src/main/groovy/groovy/util/GroovyScriptEngine.java
@@ -450,16 +450,7 @@ public class GroovyScriptEngine implements 
ResourceConnector {
 }
 
 private static void verifyInputStream(URLConnection urlConnection) throws 
IOException {
-InputStream in = null;
-try {
-in = urlConnection.getInputStream();
-} finally {
-if (in != null) {
-try {
-in.close();
-} catch (IOException ignore) {
-}
-}
+try (InputStream in = urlConnection.getInputStream()) {
 }
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/6c615579/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java 
b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
index 8648a31..4a4f0ff 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
@@ -733,20 +733,10 @@ public class CompilationUnit extends ProcessingUnit {
 //
 byte[] bytes = gclass.getBytes();
 
-FileOutputStream stream = null;
-try {
-stream = new FileOutputStream(path);
+try (FileOutputStream stream = new FileOutputStream(path)) {
 stream.write(bytes, 0, bytes.length);
 } catch (IOException e) {
 getErrorCollector().addError(Message.create(e.getMessage(), 
CompilationUnit.this));
-} finally {
-if (stream != null) {
-try {
-stream.close();
-} catch (Exception e) {
-

[3/4] groovy git commit: Minor refactoring: Identical 'catch' branches in 'try' statement

2018-08-25 Thread sunlan
Minor refactoring: Identical 'catch' branches in 'try' statement

(cherry picked from commit 26436eb5eaeff73c11a47a8b03384b84ae79325f)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/5b4de90c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/5b4de90c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/5b4de90c

Branch: refs/heads/GROOVY_2_5_X
Commit: 5b4de90cbec00042de2983de78336f931e71896c
Parents: 841a08b
Author: Daniel Sun 
Authored: Sun Aug 26 00:35:28 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 00:47:12 2018 +0800

--
 src/main/groovy/groovy/grape/Grape.java   |  6 +-
 src/main/groovy/groovy/lang/Closure.java  | 12 +---
 src/main/groovy/groovy/lang/GroovyClassLoader.java|  8 +---
 src/main/groovy/groovy/lang/GroovyShell.java  |  6 +-
 src/main/groovy/groovy/lang/MetaClassImpl.java|  5 +
 .../org/codehaus/groovy/ast/tools/GenericsUtils.java  |  6 +-
 .../org/codehaus/groovy/control/CompilationUnit.java  |  4 +---
 .../org/codehaus/groovy/reflection/CachedMethod.java  |  4 +---
 .../org/codehaus/groovy/runtime/InvokerHelper.java| 12 ++--
 .../groovy/runtime/NumberAwareComparator.java |  6 +-
 .../groovy/runtime/ProxyGeneratorAdapter.java | 12 ++--
 .../runtime/m12n/StandardPropertiesModuleFactory.java |  4 +---
 .../runtime/metaclass/MetaClassRegistryImpl.java  |  3 +--
 .../runtime/metaclass/ReflectionMetaMethod.java   |  4 +---
 .../java/org/codehaus/groovy/tools/GroovyStarter.java | 14 +++---
 .../ASTTransformationCollectorCodeVisitor.java|  4 +---
 .../groovy/transform/ASTTransformationVisitor.java|  8 +---
 .../stc/GroovyTypeCheckingExtensionSupport.java   | 10 ++
 .../transform/stc/StaticTypeCheckingSupport.java  |  6 +-
 .../transform/stc/StaticTypeCheckingVisitor.java  | 12 ++--
 .../java/org/codehaus/groovy/vmplugin/v5/Java5.java   |  3 +--
 21 files changed, 27 insertions(+), 122 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/5b4de90c/src/main/groovy/groovy/grape/Grape.java
--
diff --git a/src/main/groovy/groovy/grape/Grape.java 
b/src/main/groovy/groovy/grape/Grape.java
index ad89a20..31ae2d0 100644
--- a/src/main/groovy/groovy/grape/Grape.java
+++ b/src/main/groovy/groovy/grape/Grape.java
@@ -119,11 +119,7 @@ public class Grape {
 // by default use GrapeIvy
 //TODO META-INF/services resolver?
 instance = (GrapeEngine) 
Class.forName("groovy.grape.GrapeIvy").newInstance();
-} catch (InstantiationException e) {
-//LOGME
-} catch (IllegalAccessException e) {
-//LOGME
-} catch (ClassNotFoundException e) {
+} catch (InstantiationException | ClassNotFoundException | 
IllegalAccessException e) {
 //LOGME
 }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/5b4de90c/src/main/groovy/groovy/lang/Closure.java
--
diff --git a/src/main/groovy/groovy/lang/Closure.java 
b/src/main/groovy/groovy/lang/Closure.java
index 9446186..a326ee7 100644
--- a/src/main/groovy/groovy/lang/Closure.java
+++ b/src/main/groovy/groovy/lang/Closure.java
@@ -318,7 +318,7 @@ public abstract class Closure extends 
GroovyObjectSupport implements Cloneabl
 // let's try getting the property on the first object
 return InvokerHelper.getProperty(firstTry, property);
 
-} catch (MissingPropertyException e1) {
+} catch (MissingPropertyException | MissingFieldException e1) {
 if (secondTry != null && firstTry != this && firstTry != 
secondTry) {
 try {
 // let's try getting the property on the second object
@@ -329,16 +329,6 @@ public abstract class Closure extends 
GroovyObjectSupport implements Cloneabl
 }
 throw e1;
 
-} catch (MissingFieldException e2)  { // see GROOVY-5875
-if (secondTry != null && firstTry != this && firstTry != 
secondTry) {
-try {
-// let's try getting the property on the second object
-return InvokerHelper.getProperty(secondTry, property);
-} catch (GroovyRuntimeException e3) {
-// ignore, we'll throw e2
-}
-}
-throw e2;
 }
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/5b4de90c/src/main/groovy/groovy/lang/GroovyClassLoader.java
--
diff --g

[5/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java 
b/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java
index 2ed8661..4697f03 100644
--- a/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java
@@ -33,7 +33,7 @@ import java.util.LinkedList;
  */
 public abstract class ClassGenerator extends ClassCodeVisitorSupport 
implements Opcodes {
 // inner classes created while generating bytecode
-protected LinkedList innerClasses = new LinkedList();
+protected LinkedList innerClasses = new LinkedList<>();
 
 public LinkedList getInnerClasses() {
 return innerClasses;

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/classgen/EnumCompletionVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/classgen/EnumCompletionVisitor.java 
b/src/main/java/org/codehaus/groovy/classgen/EnumCompletionVisitor.java
index 8ef3a04..f9829ed 100644
--- a/src/main/java/org/codehaus/groovy/classgen/EnumCompletionVisitor.java
+++ b/src/main/java/org/codehaus/groovy/classgen/EnumCompletionVisitor.java
@@ -81,7 +81,7 @@ public class EnumCompletionVisitor extends 
ClassCodeVisitorSupport {
 private static void addImplicitConstructors(ClassNode enumClass, boolean 
aic) {
 if (aic) {
 ClassNode sn = enumClass.getSuperClass();
-List sctors = new 
ArrayList(sn.getDeclaredConstructors());
+List sctors = new 
ArrayList<>(sn.getDeclaredConstructors());
 if (sctors.isEmpty()) {
 addMapConstructors(enumClass);
 } else {
@@ -127,7 +127,7 @@ public class EnumCompletionVisitor extends 
ClassCodeVisitorSupport {
 argsExprs.add(1, intVariable);
 } else {
 // add a super call
-List args = new ArrayList();
+List args = new ArrayList<>();
 args.add(stringVariable);
 args.add(intVariable);
 if (isAic) {

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/classgen/EnumVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/EnumVisitor.java 
b/src/main/java/org/codehaus/groovy/classgen/EnumVisitor.java
index 743801f..c9b47e1 100644
--- a/src/main/java/org/codehaus/groovy/classgen/EnumVisitor.java
+++ b/src/main/java/org/codehaus/groovy/classgen/EnumVisitor.java
@@ -317,10 +317,10 @@ public class EnumVisitor extends ClassCodeVisitorSupport {
 
 // static init
 List fields = enumClass.getFields();
-List arrayInit = new ArrayList();
+List arrayInit = new ArrayList<>();
 int value = -1;
 Token assign = Token.newSymbol(Types.ASSIGN, -1, -1);
-List block = new ArrayList();
+List block = new ArrayList<>();
 FieldNode tempMin = null;
 FieldNode tempMax = null;
 for (FieldNode field : fields) {
@@ -340,7 +340,7 @@ public class EnumVisitor extends ClassCodeVisitorSupport {
 }
 } else {
 ListExpression oldArgs = (ListExpression) 
field.getInitialExpression();
-List savedMapEntries = new 
ArrayList();
+List savedMapEntries = new ArrayList<>();
 for (Expression exp : oldArgs.getExpressions()) {
 if (exp instanceof MapEntryExpression) {
 savedMapEntries.add((MapEntryExpression) exp);

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/classgen/ExtendedVerifier.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/ExtendedVerifier.java 
b/src/main/java/org/codehaus/groovy/classgen/ExtendedVerifier.java
index 8b7ed89..f58026c 100644
--- a/src/main/java/org/codehaus/groovy/classgen/ExtendedVerifier.java
+++ b/src/main/java/org/codehaus/groovy/classgen/ExtendedVerifier.java
@@ -152,14 +152,14 @@ public class ExtendedVerifier extends 
ClassCodeVisitorSupport {
 addError("Annotations are not supported in the current runtime. " 
+ JVM_ERROR_MESSAGE, node);
 return;
 }
-Map> runtimeAnnotations = new 
LinkedHashMap>();
+Map> runtimeAnnotations = new 
LinkedHashMap<>();
 for (AnnotationNode unvisited : node.getAnnotations()) {
 AnnotationNode visited = visitAnnotation(unvisited);
 String name = visited.getClassNode().getName();
 if (visited.hasRuntimeRetention()) {
 List seen = runtimeAnnota

[7/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/apache/groovy/util/Maps.java
--
diff --git a/src/main/java/org/apache/groovy/util/Maps.java 
b/src/main/java/org/apache/groovy/util/Maps.java
index b560a4f..701ac55 100644
--- a/src/main/java/org/apache/groovy/util/Maps.java
+++ b/src/main/java/org/apache/groovy/util/Maps.java
@@ -29,7 +29,7 @@ import java.util.Map;
 public abstract class Maps {
 
 public static  Map of(K k1, V v1) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 
@@ -37,7 +37,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -46,7 +46,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -56,7 +56,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -67,7 +67,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -79,7 +79,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -92,7 +92,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -106,7 +106,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -121,7 +121,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -137,7 +137,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V 
v10) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -154,7 +154,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V 
v10, K k11, V v11) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -172,7 +172,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V 
v10, K k11, V v11, K k12, V v12) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -191,7 +191,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V 
v10, K k11, V v11, K k12, V v12, K k13, V v13) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -211,7 +211,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V 
v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14) {
-Map map = new LinkedHashMap();
+Map map = new LinkedHashMap<>();
 
 map.put(k1, v1);
 map.put(k2, v2);
@@ -232,7 +232,7 @@ public abstract class Maps {
 }
 
 public static  Map of(K k1, V v1, K k2, V v2, K k3, V v3, K 
k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7,

[1/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 80a8b1990 -> 72fd40785


http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/util/ManagedConcurrentMap.java
--
diff --git a/src/main/java/org/codehaus/groovy/util/ManagedConcurrentMap.java 
b/src/main/java/org/codehaus/groovy/util/ManagedConcurrentMap.java
index d1cf760..97e41ba 100644
--- a/src/main/java/org/codehaus/groovy/util/ManagedConcurrentMap.java
+++ b/src/main/java/org/codehaus/groovy/util/ManagedConcurrentMap.java
@@ -29,7 +29,7 @@ public class ManagedConcurrentMap extends 
AbstractConcurrentMap {
 protected Segment createSegment(Object segmentInfo, int cap) {
 ReferenceBundle bundle = (ReferenceBundle) segmentInfo;
 if (bundle==null) throw new IllegalArgumentException("bundle must not 
be null");
-return new ManagedConcurrentMap.Segment(bundle, cap);
+return new ManagedConcurrentMap.Segment<>(bundle, cap);
 }
 
 public static class Segment extends 
AbstractConcurrentMap.Segment{
@@ -44,7 +44,7 @@ public class ManagedConcurrentMap extends 
AbstractConcurrentMap {
 
 protected AbstractConcurrentMap.Entry createEntry(K key, int 
hash, V value) {
 if (bundle==null) throw new IllegalArgumentException("bundle must 
not be null");
-return new EntryWithValue(bundle, this, key, hash, value);
+return new EntryWithValue<>(bundle, this, key, hash, value);
 }
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/util/ManagedConcurrentValueMap.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/util/ManagedConcurrentValueMap.java 
b/src/main/java/org/codehaus/groovy/util/ManagedConcurrentValueMap.java
index f28ee68..c8c05fb 100644
--- a/src/main/java/org/codehaus/groovy/util/ManagedConcurrentValueMap.java
+++ b/src/main/java/org/codehaus/groovy/util/ManagedConcurrentValueMap.java
@@ -35,7 +35,7 @@ public class ManagedConcurrentValueMap {
 private ReferenceBundle bundle;
 public ManagedConcurrentValueMap(ReferenceBundle bundle){
 this.bundle = bundle;
-internalMap = new ConcurrentHashMap>();
+internalMap = new ConcurrentHashMap<>();
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/util/ManagedLinkedList.java
--
diff --git a/src/main/java/org/codehaus/groovy/util/ManagedLinkedList.java 
b/src/main/java/org/codehaus/groovy/util/ManagedLinkedList.java
index 17fa266..ff1e42e 100644
--- a/src/main/java/org/codehaus/groovy/util/ManagedLinkedList.java
+++ b/src/main/java/org/codehaus/groovy/util/ManagedLinkedList.java
@@ -101,7 +101,7 @@ public class ManagedLinkedList {
  * @param value the value
  */
 public void add(T value) {
-Element element = new Element(bundle, value);
+Element element = new Element<>(bundle, value);
 element.previous = tail;
 if (tail != null) tail.next = element;
 tail = element;
@@ -126,7 +126,7 @@ public class ManagedLinkedList {
  * @return the array
  */
 public T[] toArray(T[] tArray) {
-List array = new ArrayList(100);
+List array = new ArrayList<>(100);
 for (Iterator it = iterator(); it.hasNext();) {
 T val = it.next();
 if (val != null) array.add(val);

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/util/ReferenceManager.java
--
diff --git a/src/main/java/org/codehaus/groovy/util/ReferenceManager.java 
b/src/main/java/org/codehaus/groovy/util/ReferenceManager.java
index 6ab6d56..da73d39 100644
--- a/src/main/java/org/codehaus/groovy/util/ReferenceManager.java
+++ b/src/main/java/org/codehaus/groovy/util/ReferenceManager.java
@@ -79,7 +79,7 @@ public class ReferenceManager {
 private static class CallBackedManager extends ReferenceManager {
 
 private static final ConcurrentHashMap queuesInProcess =
-new ConcurrentHashMap(4, 
0.9f, 2);
+new ConcurrentHashMap<>(4, 0.9f, 2);
 
 public CallBackedManager(ReferenceQueue queue) {
 super(queue);

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyArrayAccess.java
--
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyArrayAccess.java 
b/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyArrayAccess.java
index 92ce658..bf1f8dc 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyArrayAccess.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyArrayAccess.java
@@

[4/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java 
b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index d54e405..6b1aab4 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -212,7 +212,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
 //NioGroovyMethods.class
 };
 private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
-private static final NumberAwareComparator 
COMPARABLE_NUMBER_AWARE_COMPARATOR = new NumberAwareComparator();
+private static final NumberAwareComparator 
COMPARABLE_NUMBER_AWARE_COMPARATOR = new NumberAwareComparator<>();
 
 /**
  * Identity check. Since == is overridden in Groovy with the meaning of 
equality
@@ -510,7 +510,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
 public static List getMetaPropertyValues(Object self) {
 MetaClass metaClass = InvokerHelper.getMetaClass(self);
 List mps = metaClass.getProperties();
-List props = new ArrayList(mps.size());
+List props = new ArrayList<>(mps.size());
 for (MetaProperty mp : mps) {
 props.add(new PropertyValue(self, mp));
 }
@@ -528,7 +528,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
  */
 public static Map getProperties(Object self) {
 List metaProps = getMetaPropertyValues(self);
-Map props = new LinkedHashMap(metaProps.size());
+Map props = new LinkedHashMap<>(metaProps.size());
 
 for (PropertyValue mp : metaProps) {
 try {
@@ -679,7 +679,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
 } catch (ClassCastException e) {
 throw new IllegalArgumentException("Expecting a Closure to be the 
last argument");
 }
-List list = new ArrayList(array.length - 1);
+List list = new ArrayList<>(array.length - 1);
 for (int i = 0; i < array.length - 1; ++i) {
 Class categoryClass;
 try {
@@ -1172,7 +1172,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
  * @since 1.5.5
  */
 public static  Iterator unique(Iterator self) {
-return uniqueItems(new 
IteratorIterableAdapter(self)).listIterator();
+return uniqueItems(new IteratorIterableAdapter<>(self)).listIterator();
 }
 
 /**
@@ -1232,7 +1232,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
 }
 
 private static  List uniqueItems(Iterable self) {
-List answer = new ArrayList();
+List answer = new ArrayList<>();
 for (T t : self) {
 boolean duplicated = false;
 for (T t2 : answer) {
@@ -1302,8 +1302,8 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
  */
 public static  Iterator unique(Iterator self, 
@ClosureParams(value=FromString.class, options={"T","T,T"}) Closure condition) {
 Comparator comparator = condition.getMaximumNumberOfParameters() == 
1
-? new OrderBy(condition, true)
-: new ClosureComparator(condition);
+? new OrderBy<>(condition, true)
+: new ClosureComparator<>(condition);
 return unique(self, comparator);
 }
 
@@ -1386,9 +1386,9 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
 // use a comparator of one item or two
 int params = closure.getMaximumNumberOfParameters();
 if (params == 1) {
-self = unique(self, mutate, new OrderBy(closure, true));
+self = unique(self, mutate, new OrderBy<>(closure, true));
 } else {
-self = unique(self, mutate, new ClosureComparator(closure));
+self = unique(self, mutate, new ClosureComparator<>(closure));
 }
 return self;
 }
@@ -1435,7 +1435,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
  * @since 1.5.5
  */
 public static  Iterator unique(Iterator self, Comparator 
comparator) {
-return uniqueItems(new IteratorIterableAdapter(self), 
comparator).listIterator();
+return uniqueItems(new IteratorIterableAdapter<>(self), 
comparator).listIterator();
 }
 
 private static final class IteratorIterableAdapter implements 
Iterable {
@@ -1610,7 +1610,7 @@ public class DefaultGroovyMethods extends 
DefaultGroovyMethodsSupport {
 }
 
 private static  List uniqueItems(Iterable self, Comparator 
comparator) {
-List answer = new ArrayList();
+List answer = new ArrayList<>();
  

[2/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
 
b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
index d421a47..6e99694 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
@@ -97,7 +97,7 @@ public class TupleConstructorASTTransformation extends 
AbstractASTTransformation
 static {
 final ConstantExpression zero = constX(0);
 final ConstantExpression zeroDecimal = constX(.0);
-primitivesInitialValues = new HashMap, Expression>();
+primitivesInitialValues = new HashMap<>();
 primitivesInitialValues.put(int.class, zero);
 primitivesInitialValues.put(long.class, zero);
 primitivesInitialValues.put(short.class, zero);
@@ -171,12 +171,12 @@ public class TupleConstructorASTTransformation extends 
AbstractASTTransformation
 boolean callSuper = xform.memberHasValue(anno, "callSuper", true);
 boolean force = xform.memberHasValue(anno, "force", true);
 boolean defaults = !xform.memberHasValue(anno, "defaults", false);
-Set names = new HashSet();
+Set names = new HashSet<>();
 List superList;
 if (includeSuperProperties || includeSuperFields) {
 superList = getAllProperties(names, cNode.getSuperClass(), 
includeSuperProperties, includeSuperFields, false, allProperties, true, true);
 } else {
-superList = new ArrayList();
+superList = new ArrayList<>();
 }
 
 List list = getAllProperties(names, cNode, 
includeProperties, includeFields, false, allProperties, false, true);
@@ -188,8 +188,8 @@ public class TupleConstructorASTTransformation extends 
AbstractASTTransformation
 // no processing if existing constructors found unless forced or 
ImmutableBase in play
 if (hasExplicitConstructor(null, cNode) && !force && !makeImmutable) 
return;
 
-final List params = new ArrayList();
-final List superParams = new ArrayList();
+final List params = new ArrayList<>();
+final List superParams = new ArrayList<>();
 final BlockStatement preBody = new BlockStatement();
 boolean superInPre = false;
 if (pre != null) {
@@ -202,7 +202,7 @@ public class TupleConstructorASTTransformation extends 
AbstractASTTransformation
 
 final BlockStatement body = new BlockStatement();
 
-List tempList = new ArrayList(list);
+List tempList = new ArrayList<>(list);
 tempList.addAll(superList);
 if (!handler.validateProperties(xform, body, cNode, tempList)) {
 return;

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/transform/sc/ListOfExpressionsExpression.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/sc/ListOfExpressionsExpression.java
 
b/src/main/java/org/codehaus/groovy/transform/sc/ListOfExpressionsExpression.java
index 0c4a56c..355ff66 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/sc/ListOfExpressionsExpression.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/sc/ListOfExpressionsExpression.java
@@ -36,7 +36,7 @@ public class ListOfExpressionsExpression extends Expression {
 private final List expressions;
 
 public ListOfExpressionsExpression() {
-expressions = new LinkedList();
+expressions = new LinkedList<>();
 }
 
 public ListOfExpressionsExpression(final List expressions) {

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java 
b/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java
index f66b24a..39972d3 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/sc/StaticCompilationVisitor.java
@@ -241,8 +241,8 @@ public class StaticCompilationVisitor extends 
StaticTypeCheckingVisitor {
 return;
 }
 int acc = -1;
-privateFieldAccessors = accessedFields != null ? new HashMap() : null;
-privateFieldMutators = mutatedFields != null ? new HashMap() : null;
+privateFieldAccessors = accessedFields != null ? new HashMap<>() : 
null;
+privateFieldMutators = mutatedFields != null ? new HashMap<>() : null;
 final int access = Opcodes.A

[6/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
--
diff --git 
a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
 
b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
index d2ab237..23c9943 100644
--- 
a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
+++ 
b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
@@ -220,15 +220,15 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
 // The data store and its maximum capacity
 concurrencyLevel = builder.concurrencyLevel;
 capacity = new AtomicLong(Math.min(builder.capacity, MAXIMUM_CAPACITY));
-data = new ConcurrentHashMap>(builder.initialCapacity, 
0.75f, concurrencyLevel);
+data = new ConcurrentHashMap<>(builder.initialCapacity, 0.75f, 
concurrencyLevel);
 
 // The eviction support
 weigher = builder.weigher;
 evictionLock = new ReentrantLock();
 weightedSize = new AtomicLong();
-evictionDeque = new LinkedDeque>();
-writeBuffer = new ConcurrentLinkedQueue();
-drainStatus = new AtomicReference(IDLE);
+evictionDeque = new LinkedDeque<>();
+writeBuffer = new ConcurrentLinkedQueue<>();
+drainStatus = new AtomicReference<>(IDLE);
 
 readBufferReadCount = new long[NUMBER_OF_READ_BUFFERS];
 readBufferWriteCount = new AtomicLong[NUMBER_OF_READ_BUFFERS];
@@ -239,7 +239,7 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
   readBufferDrainAtWriteCount[i] = new AtomicLong();
   readBuffers[i] = new AtomicReference[READ_BUFFER_SIZE];
   for (int j = 0; j < READ_BUFFER_SIZE; j++) {
-readBuffers[i][j] = new AtomicReference>();
+readBuffers[i][j] = new AtomicReference<>();
   }
 }
 
@@ -247,7 +247,7 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
 listener = builder.listener;
 pendingNotifications = (listener == DiscardingListener.INSTANCE)
 ? (Queue>) DISCARDING_QUEUE
-: new ConcurrentLinkedQueue>();
+: new ConcurrentLinkedQueue<>();
   }
 
   /** Ensures that the object is not null. */
@@ -493,7 +493,7 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
*/
   boolean tryToRetire(Node node, WeightedValue expect) {
 if (expect.isAlive()) {
-  final WeightedValue retired = new WeightedValue(expect.value, 
-expect.weight);
+  final WeightedValue retired = new WeightedValue<>(expect.value, 
-expect.weight);
   return node.compareAndSet(expect, retired);
 }
 return false;
@@ -511,7 +511,7 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
   if (!current.isAlive()) {
 return;
   }
-  final WeightedValue retired = new WeightedValue(current.value, 
-current.weight);
+  final WeightedValue retired = new WeightedValue<>(current.value, 
-current.weight);
   if (node.compareAndSet(current, retired)) {
 return;
   }
@@ -528,7 +528,7 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
   void makeDead(Node node) {
 for (;;) {
   WeightedValue current = node.get();
-  WeightedValue dead = new WeightedValue(current.value, 0);
+  WeightedValue dead = new WeightedValue<>(current.value, 0);
   if (node.compareAndSet(current, dead)) {
 weightedSize.lazySet(weightedSize.get() - Math.abs(current.weight));
 return;
@@ -720,8 +720,8 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
 checkNotNull(value);
 
 final int weight = weigher.weightOf(key, value);
-final WeightedValue weightedValue = new WeightedValue(value, weight);
-final Node node = new Node(key, weightedValue);
+final WeightedValue weightedValue = new WeightedValue<>(value, weight);
+final Node node = new Node<>(key, weightedValue);
 
 for (;;) {
   final Node prior = data.putIfAbsent(node.key, node);
@@ -782,7 +782,7 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
 checkNotNull(key);
 checkNotNull(mappingFunction);
 
-final ObjectHolder> objectHolder = new ObjectHolder>();
+final ObjectHolder> objectHolder = new ObjectHolder<>();
 
 for (;;) {
   Function> f = k -> {
@@ -791,8 +791,8 @@ public final class ConcurrentLinkedHashMap extends 
AbstractMap
 checkNotNull(value);
 
 final int weight = weigher.weightOf(key, value);
-final WeightedValue weightedValue = new WeightedValue(value, 
weight);
-final Node node = new Node(key, weightedValue);
+final WeightedValue weightedValue = new WeightedValue<>(value, 
weight);
+final Node node = new Node<>(key, weightedValue);
 
 objectHolder.setObject(node);
 
@@ -804,8 +804,8 @@ public final c

[3/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java 
b/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java
index 10c1fd3..d8bcdb6 100644
--- a/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java
+++ b/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java
@@ -68,9 +68,9 @@ public class MetaInfExtensionModule extends 
SimpleExtensionModule {
 throw new GroovyRuntimeException("Module file hasn't set the 
module version using key [" + PropertiesModuleFactory.MODULE_VERSION_KEY + "]");
 String[] extensionClasses = 
properties.getProperty(MODULE_INSTANCE_CLASSES_KEY, "").trim().split("[,; ]");
 String[] staticExtensionClasses = 
properties.getProperty(MODULE_STATIC_CLASSES_KEY, "").trim().split("[,; ]");
-List instanceClasses = new 
ArrayList(extensionClasses.length);
-List staticClasses = new 
ArrayList(staticExtensionClasses.length);
-List errors = new LinkedList();
+List instanceClasses = new ArrayList<>(extensionClasses.length);
+List staticClasses = new 
ArrayList<>(staticExtensionClasses.length);
+List errors = new LinkedList<>();
 loadExtensionClass(loader, extensionClasses, instanceClasses, errors);
 loadExtensionClass(loader, staticExtensionClasses, staticClasses, 
errors);
 if (!errors.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java 
b/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java
index af5df54..09432ab 100644
--- a/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java
+++ b/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java
@@ -95,7 +95,7 @@ public abstract class SimpleExtensionModule extends 
ExtensionModule {
 
 @Override
 public List getMetaMethods() {
-List metaMethods = new LinkedList();
+List metaMethods = new LinkedList<>();
 List extensionClasses = getInstanceMethodsExtensionClasses();
 for (Class extensionClass : extensionClasses) {
 try {

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java
--
diff --git a/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java
index 0f7fb75..868f104 100644
--- a/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java
+++ b/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java
@@ -53,7 +53,7 @@ public class CommonCache implements EvictableCache, ValueConvertable
  * Constructs a cache with unlimited size
  */
 public CommonCache() {
-this(new LinkedHashMap());
+this(new LinkedHashMap<>());
 }
 
 /**
@@ -212,7 +212,7 @@ public class CommonCache implements EvictableCache, ValueConvertable
  */
 @Override
 public Map clearAll() {
-Map result = new LinkedHashMap(map);
+Map result = new LinkedHashMap<>(map);
 map.clear();
 return result;
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/72fd4078/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
index 7032889..bcb5ea5 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
@@ -45,7 +45,7 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  * Constructs a cache with unlimited size
  */
 public ConcurrentCommonCache() {
-commonCache = new CommonCache();
+commonCache = new CommonCache<>();
 }
 
 /**
@@ -56,7 +56,7 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  * @param evictionStrategy LRU or FIFO, see {@link 
org.codehaus.groovy.runtime.memoize.EvictableCache.EvictionStrategy}
  */
 public ConcurrentCommonCache(int initialCapacity, int maxSize, 
EvictionStrategy evictionStrategy) {
-commonCache = new CommonCache(initialCapacity, maxSize, 
evictionStrategy);
+commonCache = new CommonCache<>(initialCapacity, maxSize, 

[8/8] groovy git commit: Minor refactoring: Explicit type can be replaced with <>

2018-08-25 Thread sunlan
Minor refactoring: Explicit type can be replaced with <>


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/72fd4078
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/72fd4078
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/72fd4078

Branch: refs/heads/master
Commit: 72fd40785c0e83972a4daf2ee941fd0cdd1f7c96
Parents: 80a8b19
Author: Daniel Sun 
Authored: Sun Aug 26 00:43:55 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 00:43:56 2018 +0800

--
 .../grape/GrabAnnotationTransformation.java |  42 +--
 src/main/groovy/groovy/lang/Closure.java|  18 +-
 src/main/groovy/groovy/lang/EmptyRange.java |   2 +-
 .../groovy/groovy/lang/ExpandoMetaClass.java|  16 +-
 .../groovy/groovy/lang/GroovyClassLoader.java   |   6 +-
 src/main/groovy/groovy/lang/IntRange.java   |   4 +-
 .../groovy/groovy/lang/ListWithDefault.java |   6 +-
 src/main/groovy/groovy/lang/MapWithDefault.java |   2 +-
 src/main/groovy/groovy/lang/MetaClassImpl.java  |  20 +-
 src/main/groovy/groovy/lang/NumberRange.java|   2 +-
 src/main/groovy/groovy/lang/ObjectRange.java|   2 +-
 .../groovy/groovy/lang/TrampolineClosure.java   |   2 +-
 .../transform/builder/DefaultStrategy.java  |   4 +-
 .../transform/builder/ExternalStrategy.java |   4 +-
 .../transform/builder/InitializerStrategy.java  |  14 +-
 .../transform/builder/SimpleStrategy.java   |   4 +-
 .../transform/stc/FromAbstractTypeMethods.java  |   2 +-
 .../groovy/groovy/transform/stc/FromString.java |   2 +-
 src/main/groovy/groovy/ui/GroovyMain.java   |   8 +-
 .../groovy/util/FactoryBuilderSupport.java  |  34 +--
 .../groovy/groovy/util/GroovyCollections.java   |  12 +-
 .../groovy/groovy/util/GroovyScriptEngine.java  |  16 +-
 src/main/groovy/groovy/util/Node.java   |  10 +-
 .../groovy/groovy/util/ObjectGraphBuilder.java  |   4 +-
 src/main/groovy/groovy/util/ObservableMap.java  |   2 +-
 src/main/groovy/groovy/util/ObservableSet.java  |  14 +-
 src/main/groovy/groovy/util/OrderBy.java|   8 +-
 .../groovy/util/PermutationGenerator.java   |   4 +-
 src/main/groovy/groovy/util/ProxyGenerator.java |   6 +-
 .../apache/groovy/ast/tools/ClassNodeUtils.java |   4 +-
 .../ast/tools/ImmutablePropertyUtils.java   |   6 +-
 src/main/java/org/apache/groovy/util/Maps.java  | 200 ++---
 .../ConcurrentLinkedHashMap.java|  52 ++--
 .../util/concurrentlinkedhashmap/Weighers.java  |   2 +-
 .../groovy/antlr/AntlrParserPlugin.java |  56 ++--
 .../codehaus/groovy/antlr/GroovySourceAST.java  |   2 +-
 .../org/codehaus/groovy/antlr/SourceBuffer.java |   2 +-
 .../antlr/treewalker/SourceCodeTraversal.java   |   2 +-
 .../antlr/treewalker/TraversalHelper.java   |   2 +-
 .../org/codehaus/groovy/ast/AnnotatedNode.java  |   4 +-
 .../org/codehaus/groovy/ast/AnnotationNode.java |   2 +-
 .../org/codehaus/groovy/ast/ClassHelper.java|   4 +-
 .../java/org/codehaus/groovy/ast/ClassNode.java |  36 +--
 .../org/codehaus/groovy/ast/CompileUnit.java|  10 +-
 .../org/codehaus/groovy/ast/GenericsType.java   |   4 +-
 .../org/codehaus/groovy/ast/InnerClassNode.java |   2 +-
 .../org/codehaus/groovy/ast/ModuleNode.java |  24 +-
 .../org/codehaus/groovy/ast/VariableScope.java  |  12 +-
 .../ast/builder/AstBuilderTransformation.java   |   4 +-
 .../groovy/ast/decompiled/AsmDecompiler.java|  14 +-
 .../ast/decompiled/ClassSignatureParser.java|   2 +-
 .../groovy/ast/decompiled/ClassStub.java|   4 +-
 .../ast/decompiled/FormalParameterParser.java   |   4 +-
 .../ast/decompiled/TypeSignatureParser.java |   2 +-
 .../groovy/ast/expr/ClosureListExpression.java  |   2 +-
 .../codehaus/groovy/ast/expr/Expression.java|   4 +-
 .../groovy/ast/expr/GStringExpression.java  |   4 +-
 .../groovy/ast/expr/ListExpression.java |   2 +-
 .../codehaus/groovy/ast/expr/MapExpression.java |   2 +-
 .../groovy/ast/expr/TupleExpression.java|   2 +-
 .../groovy/ast/stmt/BlockStatement.java |   4 +-
 .../org/codehaus/groovy/ast/stmt/Statement.java |   4 +-
 .../groovy/ast/stmt/SwitchStatement.java|   2 +-
 .../groovy/ast/stmt/TryCatchStatement.java  |   4 +-
 .../codehaus/groovy/ast/tools/BeanUtils.java|   6 +-
 .../codehaus/groovy/ast/tools/GeneralUtils.java |  26 +-
 .../groovy/ast/tools/GenericsUtils.java |  12 +-
 .../groovy/ast/tools/WideningCategories.java|  22 +-
 .../groovy/classgen/AsmClassGenerator.java  |  10 +-
 .../classgen/ClassCompletionVerifier.java   |   4 +-
 .../groovy/classgen/ClassGenerator.java |   2 +-
 .../groovy/classgen/EnumCompletionVisitor.java  |   4 +-
 .../codehaus/groovy/classgen/EnumVisitor.java   |   6 +-
 .../groovy/classgen/ExtendedVerifier.java   |   8 +-
 .../groovy/classgen/FinalVariableAnalyzer.java  |  16 +-
 .../groovy/classge

groovy git commit: Minor refactoring: 'try finally' replaceable with 'try' with resources

2018-08-25 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 26436eb5e -> 80a8b1990


Minor refactoring: 'try finally' replaceable with 'try' with resources


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/80a8b199
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/80a8b199
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/80a8b199

Branch: refs/heads/master
Commit: 80a8b199037258523deb52b429dcaf0a51c517f3
Parents: 26436eb
Author: Daniel Sun 
Authored: Sun Aug 26 00:38:03 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 00:41:14 2018 +0800

--
 src/main/groovy/groovy/util/CharsetToolkit.java | 13 +++---
 .../groovy/groovy/util/GroovyScriptEngine.java  | 11 +
 .../groovy/control/CompilationUnit.java | 12 +
 .../groovy/control/SourceExtensionHandler.java  |  6 +
 .../codehaus/groovy/runtime/WritableFile.java   | 11 +++--
 .../groovy/tools/LoaderConfiguration.java   |  5 +---
 .../groovy/tools/javac/JavaStubGenerator.java   | 26 +++-
 .../transform/ASTTransformationVisitor.java |  7 +-
 8 files changed, 20 insertions(+), 71 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/80a8b199/src/main/groovy/groovy/util/CharsetToolkit.java
--
diff --git a/src/main/groovy/groovy/util/CharsetToolkit.java 
b/src/main/groovy/groovy/util/CharsetToolkit.java
index fd7893b..b5f5ee6 100644
--- a/src/main/groovy/groovy/util/CharsetToolkit.java
+++ b/src/main/groovy/groovy/util/CharsetToolkit.java
@@ -75,25 +75,18 @@ public class CharsetToolkit {
 this.file = file;
 this.defaultCharset = getDefaultSystemCharset();
 this.charset = null;
-InputStream input = new FileInputStream(file);
-try {
+try (InputStream input = new FileInputStream(file)) {
 byte[] bytes = new byte[4096];
 int bytesRead = input.read(bytes);
 if (bytesRead == -1) {
 this.buffer = EMPTY_BYTE_ARRAY;
-}
-else if (bytesRead < 4096) {
+} else if (bytesRead < 4096) {
 byte[] bytesToGuess = new byte[bytesRead];
 System.arraycopy(bytes, 0, bytesToGuess, 0, bytesRead);
 this.buffer = bytesToGuess;
-}
-else {
+} else {
 this.buffer = bytes;
 }
-} finally {
-try {input.close();} catch (IOException e){
-// IGNORE
-}
 }
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/80a8b199/src/main/groovy/groovy/util/GroovyScriptEngine.java
--
diff --git a/src/main/groovy/groovy/util/GroovyScriptEngine.java 
b/src/main/groovy/groovy/util/GroovyScriptEngine.java
index 1bc79b4..c9e0c5b 100644
--- a/src/main/groovy/groovy/util/GroovyScriptEngine.java
+++ b/src/main/groovy/groovy/util/GroovyScriptEngine.java
@@ -450,16 +450,7 @@ public class GroovyScriptEngine implements 
ResourceConnector {
 }
 
 private static void verifyInputStream(URLConnection urlConnection) throws 
IOException {
-InputStream in = null;
-try {
-in = urlConnection.getInputStream();
-} finally {
-if (in != null) {
-try {
-in.close();
-} catch (IOException ignore) {
-}
-}
+try (InputStream in = urlConnection.getInputStream()) {
 }
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/80a8b199/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java 
b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
index 8648a31..4a4f0ff 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
@@ -733,20 +733,10 @@ public class CompilationUnit extends ProcessingUnit {
 //
 byte[] bytes = gclass.getBytes();
 
-FileOutputStream stream = null;
-try {
-stream = new FileOutputStream(path);
+try (FileOutputStream stream = new FileOutputStream(path)) {
 stream.write(bytes, 0, bytes.length);
 } catch (IOException e) {
 getErrorCollector().addError(Message.create(e.getMessage(), 
CompilationUnit.this));
-} finally {
-if (stream != null) {
-try {
-stream.close();
-} catch (Exception e) {

[2/2] groovy git commit: Minor refactoring: Identical 'catch' branches in 'try' statement

2018-08-25 Thread sunlan
Minor refactoring: Identical 'catch' branches in 'try' statement


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/26436eb5
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/26436eb5
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/26436eb5

Branch: refs/heads/master
Commit: 26436eb5eaeff73c11a47a8b03384b84ae79325f
Parents: 9d2c490
Author: Daniel Sun 
Authored: Sun Aug 26 00:35:28 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 26 00:35:28 2018 +0800

--
 src/main/groovy/groovy/grape/Grape.java   |  6 +-
 src/main/groovy/groovy/lang/Closure.java  | 12 +---
 src/main/groovy/groovy/lang/GroovyClassLoader.java|  8 +---
 src/main/groovy/groovy/lang/GroovyShell.java  |  6 +-
 src/main/groovy/groovy/lang/MetaClassImpl.java|  5 +
 .../org/codehaus/groovy/ast/tools/GenericsUtils.java  |  6 +-
 .../org/codehaus/groovy/control/CompilationUnit.java  |  4 +---
 .../org/codehaus/groovy/reflection/CachedMethod.java  |  4 +---
 .../org/codehaus/groovy/runtime/InvokerHelper.java| 12 ++--
 .../groovy/runtime/NumberAwareComparator.java |  6 +-
 .../groovy/runtime/ProxyGeneratorAdapter.java | 12 ++--
 .../runtime/m12n/StandardPropertiesModuleFactory.java |  4 +---
 .../runtime/metaclass/MetaClassRegistryImpl.java  |  3 +--
 .../runtime/metaclass/ReflectionMetaMethod.java   |  4 +---
 .../java/org/codehaus/groovy/tools/GroovyStarter.java | 14 +++---
 .../ASTTransformationCollectorCodeVisitor.java|  4 +---
 .../groovy/transform/ASTTransformationVisitor.java|  8 +---
 .../stc/GroovyTypeCheckingExtensionSupport.java   | 10 ++
 .../transform/stc/StaticTypeCheckingSupport.java  |  6 +-
 .../transform/stc/StaticTypeCheckingVisitor.java  | 12 ++--
 .../java/org/codehaus/groovy/vmplugin/v5/Java5.java   |  3 +--
 21 files changed, 27 insertions(+), 122 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/26436eb5/src/main/groovy/groovy/grape/Grape.java
--
diff --git a/src/main/groovy/groovy/grape/Grape.java 
b/src/main/groovy/groovy/grape/Grape.java
index ad89a20..31ae2d0 100644
--- a/src/main/groovy/groovy/grape/Grape.java
+++ b/src/main/groovy/groovy/grape/Grape.java
@@ -119,11 +119,7 @@ public class Grape {
 // by default use GrapeIvy
 //TODO META-INF/services resolver?
 instance = (GrapeEngine) 
Class.forName("groovy.grape.GrapeIvy").newInstance();
-} catch (InstantiationException e) {
-//LOGME
-} catch (IllegalAccessException e) {
-//LOGME
-} catch (ClassNotFoundException e) {
+} catch (InstantiationException | ClassNotFoundException | 
IllegalAccessException e) {
 //LOGME
 }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/26436eb5/src/main/groovy/groovy/lang/Closure.java
--
diff --git a/src/main/groovy/groovy/lang/Closure.java 
b/src/main/groovy/groovy/lang/Closure.java
index 9446186..a326ee7 100644
--- a/src/main/groovy/groovy/lang/Closure.java
+++ b/src/main/groovy/groovy/lang/Closure.java
@@ -318,7 +318,7 @@ public abstract class Closure extends 
GroovyObjectSupport implements Cloneabl
 // let's try getting the property on the first object
 return InvokerHelper.getProperty(firstTry, property);
 
-} catch (MissingPropertyException e1) {
+} catch (MissingPropertyException | MissingFieldException e1) {
 if (secondTry != null && firstTry != this && firstTry != 
secondTry) {
 try {
 // let's try getting the property on the second object
@@ -329,16 +329,6 @@ public abstract class Closure extends 
GroovyObjectSupport implements Cloneabl
 }
 throw e1;
 
-} catch (MissingFieldException e2)  { // see GROOVY-5875
-if (secondTry != null && firstTry != this && firstTry != 
secondTry) {
-try {
-// let's try getting the property on the second object
-return InvokerHelper.getProperty(secondTry, property);
-} catch (GroovyRuntimeException e3) {
-// ignore, we'll throw e2
-}
-}
-throw e2;
 }
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/26436eb5/src/main/groovy/groovy/lang/GroovyClassLoader.java
--
diff --git a/src/main/groovy/groovy/lang/GroovyClassLoader.java 
b/src/main/groovy/g

groovy git commit: Minor refactoring: Use `UnlimitedConcurrentCache` instead for better performance

2018-08-11 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 8fc0e4be4 -> ec7b147b4


Minor refactoring: Use `UnlimitedConcurrentCache` instead for better performance


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/ec7b147b
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/ec7b147b
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/ec7b147b

Branch: refs/heads/master
Commit: ec7b147b4b90c55e1d117f3bac63b060eeb79386
Parents: 8fc0e4b
Author: Daniel Sun 
Authored: Sun Aug 12 00:42:11 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 12 00:42:11 2018 +0800

--
 src/main/java/org/codehaus/groovy/control/ResolveVisitor.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/ec7b147b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index b5f108f..1c93351 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -59,8 +59,8 @@ import org.codehaus.groovy.ast.stmt.CatchStatement;
 import org.codehaus.groovy.ast.stmt.ForStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
 import org.codehaus.groovy.control.ClassNodeResolver.LookupResult;
-import org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache;
 import org.codehaus.groovy.runtime.memoize.EvictableCache;
+import org.codehaus.groovy.runtime.memoize.UnlimitedConcurrentCache;
 import org.codehaus.groovy.syntax.Types;
 import org.codehaus.groovy.transform.trait.Traits;
 import org.objectweb.asm.Opcodes;
@@ -504,7 +504,7 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return false;
 }
 
-private static final EvictableCache> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE = new ConcurrentCommonCache<>();
+private static final EvictableCache> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE = new UnlimitedConcurrentCache<>();
 
 private boolean resolveFromDefaultImports(final ClassNode type, final 
String[] packagePrefixes) {
 final String typeName = type.getName();
@@ -521,7 +521,7 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 type.setRedirect(tmp.redirect());
 
 if (DEFAULT_IMPORTS == packagePrefixes) { // Only the 
non-cached type and packages should be cached
-Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.getAndPut(typeName, new 
ConcurrentCommonCache.ValueProvider>() {
+Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.getAndPut(typeName, new 
UnlimitedConcurrentCache.ValueProvider>() {
 @Override
 public Set provide(String key) {
 return new HashSet<>(2);



groovy git commit: Minor refactoring: Use `ConcurrentCommonCache` to cache resolved type and packages

2018-08-11 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X c58023cd9 -> dd988bf40


Minor refactoring: Use `ConcurrentCommonCache` to cache resolved type and 
packages

(cherry picked from commit 8fc0e4be4e03a4dd4d82c18d47e613e78d22ca85)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/dd988bf4
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/dd988bf4
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/dd988bf4

Branch: refs/heads/GROOVY_2_5_X
Commit: dd988bf4099a32e6472fa6ee00a3c83eff965318
Parents: c58023c
Author: Daniel Sun 
Authored: Sun Aug 12 00:26:02 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 12 00:27:04 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java| 17 ++---
 1 file changed, 10 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/dd988bf4/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 30d847c..b5f108f 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -59,6 +59,8 @@ import org.codehaus.groovy.ast.stmt.CatchStatement;
 import org.codehaus.groovy.ast.stmt.ForStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
 import org.codehaus.groovy.control.ClassNodeResolver.LookupResult;
+import org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache;
+import org.codehaus.groovy.runtime.memoize.EvictableCache;
 import org.codehaus.groovy.syntax.Types;
 import org.codehaus.groovy.transform.trait.Traits;
 import org.objectweb.asm.Opcodes;
@@ -502,7 +504,7 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return false;
 }
 
-private static final Map> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP = new HashMap<>();
+private static final EvictableCache> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE = new ConcurrentCommonCache<>();
 
 private boolean resolveFromDefaultImports(final ClassNode type, final 
String[] packagePrefixes) {
 final String typeName = type.getName();
@@ -519,11 +521,12 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 type.setRedirect(tmp.redirect());
 
 if (DEFAULT_IMPORTS == packagePrefixes) { // Only the 
non-cached type and packages should be cached
-Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP.get(typeName);
-if (null == packagePrefixSet) {
-packagePrefixSet = new HashSet<>(2);
-DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP.put(typeName, 
packagePrefixSet);
-}
+Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.getAndPut(typeName, new 
ConcurrentCommonCache.ValueProvider>() {
+@Override
+public Set provide(String key) {
+return new HashSet<>(2);
+}
+});
 packagePrefixSet.add(packagePrefix);
 }
 
@@ -544,7 +547,7 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 final String typeName = type.getName();
 
 if (testDefaultImports) {
-Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP.get(typeName);
+Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.get(typeName);
 if (null != packagePrefixSet) {
 // if the type name was resolved before, we can try the 
successfully resolved packages first, which are much less and very likely 
successful to resolve.
 // As a result, we can avoid trying other default import 
packages and further resolving, which can improve the resolving performance to 
some extent.



groovy git commit: Minor refactoring: Use `ConcurrentCommonCache` to cache resolved type and packages

2018-08-11 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master b5bffc908 -> 8fc0e4be4


Minor refactoring: Use `ConcurrentCommonCache` to cache resolved type and 
packages


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8fc0e4be
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8fc0e4be
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8fc0e4be

Branch: refs/heads/master
Commit: 8fc0e4be4e03a4dd4d82c18d47e613e78d22ca85
Parents: b5bffc9
Author: Daniel Sun 
Authored: Sun Aug 12 00:26:02 2018 +0800
Committer: Daniel Sun 
Committed: Sun Aug 12 00:26:02 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java| 17 ++---
 1 file changed, 10 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/8fc0e4be/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 30d847c..b5f108f 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -59,6 +59,8 @@ import org.codehaus.groovy.ast.stmt.CatchStatement;
 import org.codehaus.groovy.ast.stmt.ForStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
 import org.codehaus.groovy.control.ClassNodeResolver.LookupResult;
+import org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache;
+import org.codehaus.groovy.runtime.memoize.EvictableCache;
 import org.codehaus.groovy.syntax.Types;
 import org.codehaus.groovy.transform.trait.Traits;
 import org.objectweb.asm.Opcodes;
@@ -502,7 +504,7 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return false;
 }
 
-private static final Map> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP = new HashMap<>();
+private static final EvictableCache> 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE = new ConcurrentCommonCache<>();
 
 private boolean resolveFromDefaultImports(final ClassNode type, final 
String[] packagePrefixes) {
 final String typeName = type.getName();
@@ -519,11 +521,12 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 type.setRedirect(tmp.redirect());
 
 if (DEFAULT_IMPORTS == packagePrefixes) { // Only the 
non-cached type and packages should be cached
-Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP.get(typeName);
-if (null == packagePrefixSet) {
-packagePrefixSet = new HashSet<>(2);
-DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP.put(typeName, 
packagePrefixSet);
-}
+Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.getAndPut(typeName, new 
ConcurrentCommonCache.ValueProvider>() {
+@Override
+public Set provide(String key) {
+return new HashSet<>(2);
+}
+});
 packagePrefixSet.add(packagePrefix);
 }
 
@@ -544,7 +547,7 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 final String typeName = type.getName();
 
 if (testDefaultImports) {
-Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_MAP.get(typeName);
+Set packagePrefixSet = 
DEFAULT_IMPORT_CLASS_AND_PACKAGES_CACHE.get(typeName);
 if (null != packagePrefixSet) {
 // if the type name was resolved before, we can try the 
successfully resolved packages first, which are much less and very likely 
successful to resolve.
 // As a result, we can avoid trying other default import 
packages and further resolving, which can improve the resolving performance to 
some extent.



groovy git commit: Minor refactoring: move implementation of enhanced ARM to its relevant class

2018-07-12 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 209fe3f98 -> 06e72374a


Minor refactoring: move implementation of enhanced ARM to its relevant class

(cherry picked from commit 2c0ece2)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/06e72374
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/06e72374
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/06e72374

Branch: refs/heads/GROOVY_2_6_X
Commit: 06e72374ae67866323b1aaba4cb3940d8ee9842a
Parents: 209fe3f
Author: sunlan 
Authored: Fri Jul 13 07:59:53 2018 +0800
Committer: sunlan 
Committed: Fri Jul 13 08:00:30 2018 +0800

--
 .../apache/groovy/parser/antlr4/AstBuilder.java | 24 +-
 .../TryWithResourcesASTTransformation.java  | 33 ++--
 2 files changed, 31 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/06e72374/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 9ffa660..02fef29 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -860,24 +860,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 if (isVariableDeclaration) {
 assignmentExpression = (BinaryExpression) expression;
 } else if (isVariableAccess) {
-/* See 
https://docs.oracle.com/javase/specs/jls/se9/html/jls-14.html
- * 14.20.3.1. Basic try-with-resources
- *
- * If a basic try-with-resource statement is of the form:
- * try (VariableAccess ...)
- *  Block
- *
- * then the resource is first converted to a local variable 
declaration by the following translation:
- * try (T #r = VariableAccess ...) {
- *  Block
- * }
- */
-assignmentExpression =
-new BinaryExpression(
-new VariableExpression(genResourceName()),
-
org.codehaus.groovy.syntax.Token.newSymbol(Types.ASSIGN, -1, -1),
-expression
-);
+assignmentExpression = 
tryWithResourcesASTTransformation.transformResourceAccess(expression);
 } else {
 throw createParsingFailedException("Unsupported resource 
declaration", ctx);
 }
@@ -899,11 +882,6 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 throw createParsingFailedException("Unsupported resource declaration: 
" + ctx.getText(), ctx);
 }
 
-private int resourceCnt = 0;
-private String genResourceName() {
-return "__$$resource" + resourceCnt++;
-}
-
 /**
  * Multi-catch(1..*) clause will be unpacked to several normal catch 
clauses, so the return type is List
  *

http://git-wip-us.apache.org/repos/asf/groovy/blob/06e72374/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
index 52b7f36..963979c 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
@@ -43,6 +43,7 @@ import java.util.Collections;
 import java.util.List;
 
 import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean;
+import static org.codehaus.groovy.syntax.Token.newSymbol;
 
 /**
  * Transform try-with-resources to try-catch-finally
@@ -206,7 +207,7 @@ public class TryWithResourcesASTTransformation {
 new ExpressionStatement(
 new DeclarationExpression(
 new VariableExpression(primaryExcName, 
ClassHelper.make(Throwable.class)),
-
org.codehaus.groovy.syntax.Token.newSymbol(Types.ASSIGN, -1, -1),
+newSymbol(Types.ASSIGN, -1, -1),
 

groovy git commit: Minor refactoring: move implementation of enhanced ARM to its relevant class

2018-07-12 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master fbe4b529c -> 2c0ece2c9


Minor refactoring: move implementation of enhanced ARM to its relevant class


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2c0ece2c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2c0ece2c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2c0ece2c

Branch: refs/heads/master
Commit: 2c0ece2c92ef130d134bdedaa0cc9ba5f5305b4b
Parents: fbe4b52
Author: sunlan 
Authored: Fri Jul 13 07:59:53 2018 +0800
Committer: sunlan 
Committed: Fri Jul 13 07:59:53 2018 +0800

--
 .../apache/groovy/parser/antlr4/AstBuilder.java | 24 +-
 .../TryWithResourcesASTTransformation.java  | 34 ++--
 2 files changed, 32 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/2c0ece2c/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 47863f0..bab6b17 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -843,24 +843,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 if (isVariableDeclaration) {
 assignmentExpression = (BinaryExpression) expression;
 } else if (isVariableAccess) {
-/* See 
https://docs.oracle.com/javase/specs/jls/se9/html/jls-14.html
- * 14.20.3.1. Basic try-with-resources
- *
- * If a basic try-with-resource statement is of the form:
- * try (VariableAccess ...)
- *  Block
- *
- * then the resource is first converted to a local variable 
declaration by the following translation:
- * try (T #r = VariableAccess ...) {
- *  Block
- * }
- */
-assignmentExpression =
-new BinaryExpression(
-new VariableExpression(genResourceName()),
-
org.codehaus.groovy.syntax.Token.newSymbol(Types.ASSIGN, -1, -1),
-expression
-);
+assignmentExpression = 
tryWithResourcesASTTransformation.transformResourceAccess(expression);
 } else {
 throw createParsingFailedException("Unsupported resource 
declaration", ctx);
 }
@@ -882,11 +865,6 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 throw createParsingFailedException("Unsupported resource declaration: 
" + ctx.getText(), ctx);
 }
 
-private int resourceCnt = 0;
-private String genResourceName() {
-return "__$$resource" + resourceCnt++;
-}
-
 /**
  * Multi-catch(1..*) clause will be unpacked to several normal catch 
clauses, so the return type is List
  *

http://git-wip-us.apache.org/repos/asf/groovy/blob/2c0ece2c/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
index cbe3697..4ec500b 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/TryWithResourcesASTTransformation.java
@@ -25,6 +25,7 @@ import org.codehaus.groovy.ast.expr.BinaryExpression;
 import org.codehaus.groovy.ast.expr.BooleanExpression;
 import org.codehaus.groovy.ast.expr.ConstantExpression;
 import org.codehaus.groovy.ast.expr.DeclarationExpression;
+import org.codehaus.groovy.ast.expr.Expression;
 import org.codehaus.groovy.ast.expr.MethodCallExpression;
 import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
@@ -42,6 +43,7 @@ import java.util.Collections;
 import java.util.List;
 
 import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean;
+import static org.codehaus.groovy.syntax.Token.newSymbol;
 
 /**
  * Transform try-with-resources to try-catch-finally
@@ -202,7 +204,7 @@ public cl

groovy git commit: Minor refactoring: move generics helper methods to `GenericsUtils`

2018-05-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 96677dafe -> f81c3b1de


Minor refactoring: move generics helper methods to `GenericsUtils`

(cherry picked from commit b2b1bdf)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f81c3b1d
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f81c3b1d
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f81c3b1d

Branch: refs/heads/GROOVY_2_5_X
Commit: f81c3b1de9eb84ce320a86db6d41b0ddd7cf7e03
Parents: 96677da
Author: sunlan 
Authored: Mon May 28 08:23:03 2018 +0800
Committer: sunlan 
Committed: Mon May 28 08:28:21 2018 +0800

--
 .../codehaus/groovy/ast/tools/GeneralUtils.java | 51 --
 .../groovy/ast/tools/GenericsUtils.java | 54 
 .../stc/StaticTypeCheckingSupport.java  |  5 +-
 .../stc/StaticTypeCheckingVisitor.java  |  4 +-
 4 files changed, 58 insertions(+), 56 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/f81c3b1d/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
index b8ab51d..698fb8c 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -24,7 +24,6 @@ import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
-import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.PackageNode;
 import org.codehaus.groovy.ast.Parameter;
@@ -69,7 +68,6 @@ import 
org.codehaus.groovy.transform.AbstractASTTransformation;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -872,53 +870,4 @@ public class GeneralUtils {
 firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
 }
 
-/**
- * map declaring generics type to actual generics type, e.g. GROOVY-7204:
- * declaring generics types:  T,  S extends Serializable
- * actual generics types   : String,  Long
- *
- * the result map is [
- *  T: String,
- *  S: Long
- * ]
- *
- * The resolved types can not help us to choose methods correctly if the 
argument is a string:  T: Object, S: Serializable
- * so we need actual types:  T: String, S: Long
- */
-public static Map 
makeDeclaringAndActualGenericsTypeMap(ClassNode declaringClass, ClassNode 
actualReceiver) {
-ClassNode parameterizedType = 
GenericsUtils.findParameterizedTypeFromCache(declaringClass, actualReceiver);
-
-if (null == parameterizedType) {
-return Collections.emptyMap();
-}
-
-GenericsType[] declaringGenericsTypes = 
declaringClass.getGenericsTypes();
-GenericsType[] actualGenericsTypes = 
parameterizedType.getGenericsTypes();
-
-Map result = new LinkedHashMap<>();
-for (int i = 0, n = declaringGenericsTypes.length; i < n; i++) {
-result.put(declaringGenericsTypes[i], actualGenericsTypes[i]);
-}
-
-return result;
-}
-
-/**
- * Get the actual type according to the placeholder name
- *
- * @param placeholderName the placeholder name, e.g. T, E
- * @param genericsPlaceholderAndTypeMap the result of {@link 
#makeDeclaringAndActualGenericsTypeMap(ClassNode, ClassNode}
- * @return the actual type
- */
-public static ClassNode findActualTypeByGenericsPlaceholderName(String 
placeholderName, Map genericsPlaceholderAndTypeMap) 
{
-for (Map.Entry entry : 
genericsPlaceholderAndTypeMap.entrySet()) {
-GenericsType declaringGenericsType = entry.getKey();
-
-if (placeholderName.equals(declaringGenericsType.getName())) {
-return entry.getValue().getType().redirect();
-}
-}
-
-return null;
-}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/f81c3b1d/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 906aab6..3ddbabe 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tool

groovy git commit: Minor refactoring: move generics helper methods to `GenericsUtils`

2018-05-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 4a327f2b1 -> b2b1bdf5d


Minor refactoring: move generics helper methods to `GenericsUtils`

(cherry picked from commit 968da9e)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/b2b1bdf5
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b2b1bdf5
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b2b1bdf5

Branch: refs/heads/GROOVY_2_6_X
Commit: b2b1bdf5d6df3b4e360e12ca84e761133144dde4
Parents: 4a327f2
Author: sunlan 
Authored: Mon May 28 08:23:03 2018 +0800
Committer: sunlan 
Committed: Mon May 28 08:26:16 2018 +0800

--
 .../codehaus/groovy/ast/tools/GeneralUtils.java | 51 --
 .../groovy/ast/tools/GenericsUtils.java | 54 
 .../stc/StaticTypeCheckingSupport.java  |  5 +-
 .../stc/StaticTypeCheckingVisitor.java  |  4 +-
 4 files changed, 58 insertions(+), 56 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/b2b1bdf5/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
index c0082bf..0fa8063 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -24,7 +24,6 @@ import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
-import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.PackageNode;
 import org.codehaus.groovy.ast.Parameter;
@@ -69,7 +68,6 @@ import 
org.codehaus.groovy.transform.AbstractASTTransformation;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -879,53 +877,4 @@ public class GeneralUtils {
 firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
 }
 
-/**
- * map declaring generics type to actual generics type, e.g. GROOVY-7204:
- * declaring generics types:  T,  S extends Serializable
- * actual generics types   : String,  Long
- *
- * the result map is [
- *  T: String,
- *  S: Long
- * ]
- *
- * The resolved types can not help us to choose methods correctly if the 
argument is a string:  T: Object, S: Serializable
- * so we need actual types:  T: String, S: Long
- */
-public static Map 
makeDeclaringAndActualGenericsTypeMap(ClassNode declaringClass, ClassNode 
actualReceiver) {
-ClassNode parameterizedType = 
GenericsUtils.findParameterizedTypeFromCache(declaringClass, actualReceiver);
-
-if (null == parameterizedType) {
-return Collections.emptyMap();
-}
-
-GenericsType[] declaringGenericsTypes = 
declaringClass.getGenericsTypes();
-GenericsType[] actualGenericsTypes = 
parameterizedType.getGenericsTypes();
-
-Map result = new LinkedHashMap<>();
-for (int i = 0, n = declaringGenericsTypes.length; i < n; i++) {
-result.put(declaringGenericsTypes[i], actualGenericsTypes[i]);
-}
-
-return result;
-}
-
-/**
- * Get the actual type according to the placeholder name
- *
- * @param placeholderName the placeholder name, e.g. T, E
- * @param genericsPlaceholderAndTypeMap the result of {@link 
#makeDeclaringAndActualGenericsTypeMap(ClassNode, ClassNode}
- * @return the actual type
- */
-public static ClassNode findActualTypeByGenericsPlaceholderName(String 
placeholderName, Map genericsPlaceholderAndTypeMap) 
{
-for (Map.Entry entry : 
genericsPlaceholderAndTypeMap.entrySet()) {
-GenericsType declaringGenericsType = entry.getKey();
-
-if (placeholderName.equals(declaringGenericsType.getName())) {
-return entry.getValue().getType().redirect();
-}
-}
-
-return null;
-}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/b2b1bdf5/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 906aab6..3ddbabe 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tool

groovy git commit: Minor refactoring: move generics helper methods to `GenericsUtils`

2018-05-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 72e530db3 -> 968da9edc


Minor refactoring: move generics helper methods to `GenericsUtils`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/968da9ed
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/968da9ed
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/968da9ed

Branch: refs/heads/master
Commit: 968da9edc79ca5b0545118d9a671af65b57bbd78
Parents: 72e530d
Author: sunlan 
Authored: Mon May 28 08:23:03 2018 +0800
Committer: sunlan 
Committed: Mon May 28 08:23:03 2018 +0800

--
 .../codehaus/groovy/ast/tools/GeneralUtils.java | 51 ---
 .../groovy/ast/tools/GenericsUtils.java | 52 
 .../stc/StaticTypeCheckingSupport.java  |  5 +-
 .../stc/StaticTypeCheckingVisitor.java  |  4 +-
 4 files changed, 56 insertions(+), 56 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/968da9ed/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
index c0082bf..0fa8063 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -24,7 +24,6 @@ import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
-import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.PackageNode;
 import org.codehaus.groovy.ast.Parameter;
@@ -69,7 +68,6 @@ import 
org.codehaus.groovy.transform.AbstractASTTransformation;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -879,53 +877,4 @@ public class GeneralUtils {
 firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
 }
 
-/**
- * map declaring generics type to actual generics type, e.g. GROOVY-7204:
- * declaring generics types:  T,  S extends Serializable
- * actual generics types   : String,  Long
- *
- * the result map is [
- *  T: String,
- *  S: Long
- * ]
- *
- * The resolved types can not help us to choose methods correctly if the 
argument is a string:  T: Object, S: Serializable
- * so we need actual types:  T: String, S: Long
- */
-public static Map 
makeDeclaringAndActualGenericsTypeMap(ClassNode declaringClass, ClassNode 
actualReceiver) {
-ClassNode parameterizedType = 
GenericsUtils.findParameterizedTypeFromCache(declaringClass, actualReceiver);
-
-if (null == parameterizedType) {
-return Collections.emptyMap();
-}
-
-GenericsType[] declaringGenericsTypes = 
declaringClass.getGenericsTypes();
-GenericsType[] actualGenericsTypes = 
parameterizedType.getGenericsTypes();
-
-Map result = new LinkedHashMap<>();
-for (int i = 0, n = declaringGenericsTypes.length; i < n; i++) {
-result.put(declaringGenericsTypes[i], actualGenericsTypes[i]);
-}
-
-return result;
-}
-
-/**
- * Get the actual type according to the placeholder name
- *
- * @param placeholderName the placeholder name, e.g. T, E
- * @param genericsPlaceholderAndTypeMap the result of {@link 
#makeDeclaringAndActualGenericsTypeMap(ClassNode, ClassNode}
- * @return the actual type
- */
-public static ClassNode findActualTypeByGenericsPlaceholderName(String 
placeholderName, Map genericsPlaceholderAndTypeMap) 
{
-for (Map.Entry entry : 
genericsPlaceholderAndTypeMap.entrySet()) {
-GenericsType declaringGenericsType = entry.getKey();
-
-if (placeholderName.equals(declaringGenericsType.getName())) {
-return entry.getValue().getType().redirect();
-}
-}
-
-return null;
-}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/968da9ed/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 3d99e53..606cf63 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
@@ -45,6 +45,7 @@ import ja

groovy git commit: Minor refactoring: use another extracting placeholder logic(closes #726)

2018-05-25 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 5fb47466d -> 2d80894de


Minor refactoring: use another extracting placeholder logic(closes #726)

(cherry picked from commit ea462f1)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2d80894d
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2d80894d
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2d80894d

Branch: refs/heads/GROOVY_2_5_X
Commit: 2d80894dee427a13f1f881ca81de8d2db5e0e628
Parents: 5fb4746
Author: sunlan 
Authored: Sat May 26 14:50:20 2018 +0800
Committer: sunlan 
Committed: Sat May 26 14:59:13 2018 +0800

--
 .../codehaus/groovy/ast/tools/GeneralUtils.java | 52 +++
 .../stc/StaticTypeCheckingSupport.java  | 55 +---
 .../stc/StaticTypeCheckingVisitor.java  | 19 +++---
 src/test/groovy/bugs/Groovy7204Bug.groovy   | 69 ++--
 4 files changed, 115 insertions(+), 80 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/2d80894d/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
index 9f9ecb9..b8ab51d 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -24,6 +24,7 @@ import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
+import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.PackageNode;
 import org.codehaus.groovy.ast.Parameter;
@@ -68,6 +69,7 @@ import 
org.codehaus.groovy.transform.AbstractASTTransformation;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -869,4 +871,54 @@ public class GeneralUtils {
 return ((firstPackage == null && secondPackage == null) ||
 firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
 }
+
+/**
+ * map declaring generics type to actual generics type, e.g. GROOVY-7204:
+ * declaring generics types:  T,  S extends Serializable
+ * actual generics types   : String,  Long
+ *
+ * the result map is [
+ *  T: String,
+ *  S: Long
+ * ]
+ *
+ * The resolved types can not help us to choose methods correctly if the 
argument is a string:  T: Object, S: Serializable
+ * so we need actual types:  T: String, S: Long
+ */
+public static Map 
makeDeclaringAndActualGenericsTypeMap(ClassNode declaringClass, ClassNode 
actualReceiver) {
+ClassNode parameterizedType = 
GenericsUtils.findParameterizedTypeFromCache(declaringClass, actualReceiver);
+
+if (null == parameterizedType) {
+return Collections.emptyMap();
+}
+
+GenericsType[] declaringGenericsTypes = 
declaringClass.getGenericsTypes();
+GenericsType[] actualGenericsTypes = 
parameterizedType.getGenericsTypes();
+
+Map result = new LinkedHashMap<>();
+for (int i = 0, n = declaringGenericsTypes.length; i < n; i++) {
+result.put(declaringGenericsTypes[i], actualGenericsTypes[i]);
+}
+
+return result;
+}
+
+/**
+ * Get the actual type according to the placeholder name
+ *
+ * @param placeholderName the placeholder name, e.g. T, E
+ * @param genericsPlaceholderAndTypeMap the result of {@link 
#makeDeclaringAndActualGenericsTypeMap(ClassNode, ClassNode}
+ * @return the actual type
+ */
+public static ClassNode findActualTypeByGenericsPlaceholderName(String 
placeholderName, Map genericsPlaceholderAndTypeMap) 
{
+for (Map.Entry entry : 
genericsPlaceholderAndTypeMap.entrySet()) {
+GenericsType declaringGenericsType = entry.getKey();
+
+if (placeholderName.equals(declaringGenericsType.getName())) {
+return entry.getValue().getType().redirect();
+}
+}
+
+return null;
+}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/2d80894d/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index 5

groovy git commit: Minor refactoring: use another extracting placeholder logic(closes #726)

2018-05-25 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 9aad5a50a -> f9b4befc3


Minor refactoring: use another extracting placeholder logic(closes #726)

(cherry picked from commit ea462f1)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f9b4befc
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f9b4befc
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f9b4befc

Branch: refs/heads/GROOVY_2_6_X
Commit: f9b4befc3963b8b43f83032771b94098e4c4cb19
Parents: 9aad5a5
Author: sunlan 
Authored: Sat May 26 14:50:20 2018 +0800
Committer: sunlan 
Committed: Sat May 26 14:58:19 2018 +0800

--
 .../codehaus/groovy/ast/tools/GeneralUtils.java | 52 +++
 .../stc/StaticTypeCheckingSupport.java  | 55 +---
 .../stc/StaticTypeCheckingVisitor.java  | 19 +++---
 src/test/groovy/bugs/Groovy7204Bug.groovy   | 69 ++--
 4 files changed, 115 insertions(+), 80 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/f9b4befc/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
index b45952e..c0082bf 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -24,6 +24,7 @@ import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
+import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.PackageNode;
 import org.codehaus.groovy.ast.Parameter;
@@ -68,6 +69,7 @@ import 
org.codehaus.groovy.transform.AbstractASTTransformation;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -876,4 +878,54 @@ public class GeneralUtils {
 return ((firstPackage == null && secondPackage == null) ||
 firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
 }
+
+/**
+ * map declaring generics type to actual generics type, e.g. GROOVY-7204:
+ * declaring generics types:  T,  S extends Serializable
+ * actual generics types   : String,  Long
+ *
+ * the result map is [
+ *  T: String,
+ *  S: Long
+ * ]
+ *
+ * The resolved types can not help us to choose methods correctly if the 
argument is a string:  T: Object, S: Serializable
+ * so we need actual types:  T: String, S: Long
+ */
+public static Map 
makeDeclaringAndActualGenericsTypeMap(ClassNode declaringClass, ClassNode 
actualReceiver) {
+ClassNode parameterizedType = 
GenericsUtils.findParameterizedTypeFromCache(declaringClass, actualReceiver);
+
+if (null == parameterizedType) {
+return Collections.emptyMap();
+}
+
+GenericsType[] declaringGenericsTypes = 
declaringClass.getGenericsTypes();
+GenericsType[] actualGenericsTypes = 
parameterizedType.getGenericsTypes();
+
+Map result = new LinkedHashMap<>();
+for (int i = 0, n = declaringGenericsTypes.length; i < n; i++) {
+result.put(declaringGenericsTypes[i], actualGenericsTypes[i]);
+}
+
+return result;
+}
+
+/**
+ * Get the actual type according to the placeholder name
+ *
+ * @param placeholderName the placeholder name, e.g. T, E
+ * @param genericsPlaceholderAndTypeMap the result of {@link 
#makeDeclaringAndActualGenericsTypeMap(ClassNode, ClassNode}
+ * @return the actual type
+ */
+public static ClassNode findActualTypeByGenericsPlaceholderName(String 
placeholderName, Map genericsPlaceholderAndTypeMap) 
{
+for (Map.Entry entry : 
genericsPlaceholderAndTypeMap.entrySet()) {
+GenericsType declaringGenericsType = entry.getKey();
+
+if (placeholderName.equals(declaringGenericsType.getName())) {
+return entry.getValue().getType().redirect();
+}
+}
+
+return null;
+}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/f9b4befc/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index a

groovy git commit: Minor refactoring: use another extracting placeholder logic(closes #726)

2018-05-25 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 3460faf0f -> ea462f1e9


Minor refactoring: use another extracting placeholder logic(closes #726)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/ea462f1e
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/ea462f1e
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/ea462f1e

Branch: refs/heads/master
Commit: ea462f1e97fa9a607b3e659e89c89f447d24664c
Parents: 3460faf
Author: sunlan 
Authored: Sat May 26 14:50:20 2018 +0800
Committer: sunlan 
Committed: Sat May 26 14:56:28 2018 +0800

--
 .../codehaus/groovy/ast/tools/GeneralUtils.java | 52 +++
 .../stc/StaticTypeCheckingSupport.java  | 55 +---
 .../stc/StaticTypeCheckingVisitor.java  | 19 +++---
 src/test/groovy/bugs/Groovy7204Bug.groovy   | 69 ++--
 4 files changed, 115 insertions(+), 80 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/ea462f1e/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
index b45952e..c0082bf 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -24,6 +24,7 @@ import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.FieldNode;
+import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.PackageNode;
 import org.codehaus.groovy.ast.Parameter;
@@ -68,6 +69,7 @@ import 
org.codehaus.groovy.transform.AbstractASTTransformation;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -876,4 +878,54 @@ public class GeneralUtils {
 return ((firstPackage == null && secondPackage == null) ||
 firstPackage != null && secondPackage != null && 
firstPackage.getName().equals(secondPackage.getName()));
 }
+
+/**
+ * map declaring generics type to actual generics type, e.g. GROOVY-7204:
+ * declaring generics types:  T,  S extends Serializable
+ * actual generics types   : String,  Long
+ *
+ * the result map is [
+ *  T: String,
+ *  S: Long
+ * ]
+ *
+ * The resolved types can not help us to choose methods correctly if the 
argument is a string:  T: Object, S: Serializable
+ * so we need actual types:  T: String, S: Long
+ */
+public static Map 
makeDeclaringAndActualGenericsTypeMap(ClassNode declaringClass, ClassNode 
actualReceiver) {
+ClassNode parameterizedType = 
GenericsUtils.findParameterizedTypeFromCache(declaringClass, actualReceiver);
+
+if (null == parameterizedType) {
+return Collections.emptyMap();
+}
+
+GenericsType[] declaringGenericsTypes = 
declaringClass.getGenericsTypes();
+GenericsType[] actualGenericsTypes = 
parameterizedType.getGenericsTypes();
+
+Map result = new LinkedHashMap<>();
+for (int i = 0, n = declaringGenericsTypes.length; i < n; i++) {
+result.put(declaringGenericsTypes[i], actualGenericsTypes[i]);
+}
+
+return result;
+}
+
+/**
+ * Get the actual type according to the placeholder name
+ *
+ * @param placeholderName the placeholder name, e.g. T, E
+ * @param genericsPlaceholderAndTypeMap the result of {@link 
#makeDeclaringAndActualGenericsTypeMap(ClassNode, ClassNode}
+ * @return the actual type
+ */
+public static ClassNode findActualTypeByGenericsPlaceholderName(String 
placeholderName, Map genericsPlaceholderAndTypeMap) 
{
+for (Map.Entry entry : 
genericsPlaceholderAndTypeMap.entrySet()) {
+GenericsType declaringGenericsType = entry.getKey();
+
+if (placeholderName.equals(declaringGenericsType.getName())) {
+return entry.getValue().getType().redirect();
+}
+}
+
+return null;
+}
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/ea462f1e/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index 6a5245b..c5ee2fe 100644
--- 
a/src/main/java/org/c

groovy git commit: Minor refactoring: remove duplicated code

2018-05-18 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 3c9d5b2b1 -> 96f57f730


Minor refactoring: remove duplicated code

(cherry picked from commit 86e27aa)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/96f57f73
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/96f57f73
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/96f57f73

Branch: refs/heads/GROOVY_2_5_X
Commit: 96f57f730bfe9ae82f0b1e21eb9fd86f2315a6fa
Parents: 3c9d5b2
Author: sunlan 
Authored: Fri May 18 22:47:19 2018 +0800
Committer: sunlan 
Committed: Fri May 18 22:48:56 2018 +0800

--
 .../codehaus/groovy/ast/tools/GenericsUtils.java   |  9 -
 .../transform/stc/StaticTypeCheckingVisitor.java   | 17 ++---
 2 files changed, 10 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/96f57f73/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 27f2bd9..2e8a103 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
@@ -198,13 +198,12 @@ public class GenericsUtils {
 }
 }
 
-private static String toGenericTypesString(GenericsType[] genericsTypes) {
+public static String toGenericTypesString(GenericsType[] genericsTypes) {
 if (genericsTypes == null) return "";
 StringBuilder sb = new StringBuilder("<");
-for (int i = 0; i < genericsTypes.length; i++) {
-final GenericsType genericsType = genericsTypes[i];
-sb.append(genericsType.toString());
-if (i < genericsTypes.length - 1) {
+for (int i = 0, n = genericsTypes.length; i < n; i++) {
+sb.append(genericsTypes[i].toString());
+if (i < n - 1) {
 sb.append(",");
 }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/96f57f73/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index ad8c6e6..d82b414 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -169,6 +169,7 @@ import static 
org.codehaus.groovy.ast.tools.GeneralUtils.binX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.castX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
+import static org.codehaus.groovy.ast.tools.GenericsUtils.toGenericTypesString;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.LowestUpperBoundClassNode;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.isBigDecCategory;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.isBigIntCategory;
@@ -5099,17 +5100,11 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 
 private static String toMethodGenericTypesString(MethodNode node) {
 GenericsType[] genericsTypes = node.getGenericsTypes();
-if (genericsTypes == null) return "";
-StringBuilder sb = new StringBuilder("<");
-for (int i = 0; i < genericsTypes.length; i++) {
-final GenericsType genericsType = genericsTypes[i];
-sb.append(genericsType.toString());
-if (i < genericsTypes.length - 1) {
-sb.append(",");
-}
-}
-sb.append("> ");
-return sb.toString();
+
+if (genericsTypes == null)
+return "";
+
+return toGenericTypesString(genericsTypes);
 }
 
 protected static String formatArgumentList(ClassNode[] nodes) {



groovy git commit: Minor refactoring: remove duplicated code

2018-05-18 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 8291749bb -> 1f380d2a5


Minor refactoring: remove duplicated code

(cherry picked from commit 86e27aa)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/1f380d2a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/1f380d2a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/1f380d2a

Branch: refs/heads/GROOVY_2_6_X
Commit: 1f380d2a58e8ebd59a44a0fcb6b6ae838f44bda1
Parents: 8291749
Author: sunlan 
Authored: Fri May 18 22:47:19 2018 +0800
Committer: sunlan 
Committed: Fri May 18 22:48:18 2018 +0800

--
 .../codehaus/groovy/ast/tools/GenericsUtils.java   |  9 -
 .../transform/stc/StaticTypeCheckingVisitor.java   | 17 ++---
 2 files changed, 10 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/1f380d2a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 27f2bd9..2e8a103 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
@@ -198,13 +198,12 @@ public class GenericsUtils {
 }
 }
 
-private static String toGenericTypesString(GenericsType[] genericsTypes) {
+public static String toGenericTypesString(GenericsType[] genericsTypes) {
 if (genericsTypes == null) return "";
 StringBuilder sb = new StringBuilder("<");
-for (int i = 0; i < genericsTypes.length; i++) {
-final GenericsType genericsType = genericsTypes[i];
-sb.append(genericsType.toString());
-if (i < genericsTypes.length - 1) {
+for (int i = 0, n = genericsTypes.length; i < n; i++) {
+sb.append(genericsTypes[i].toString());
+if (i < n - 1) {
 sb.append(",");
 }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/1f380d2a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 5369ffe..8b0f70e 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -169,6 +169,7 @@ import static 
org.codehaus.groovy.ast.tools.GeneralUtils.binX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.castX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
+import static org.codehaus.groovy.ast.tools.GenericsUtils.toGenericTypesString;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.LowestUpperBoundClassNode;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.isBigDecCategory;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.isBigIntCategory;
@@ -5167,17 +5168,11 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 
 private static String toMethodGenericTypesString(MethodNode node) {
 GenericsType[] genericsTypes = node.getGenericsTypes();
-if (genericsTypes == null) return "";
-StringBuilder sb = new StringBuilder("<");
-for (int i = 0; i < genericsTypes.length; i++) {
-final GenericsType genericsType = genericsTypes[i];
-sb.append(genericsType.toString());
-if (i < genericsTypes.length - 1) {
-sb.append(",");
-}
-}
-sb.append("> ");
-return sb.toString();
+
+if (genericsTypes == null)
+return "";
+
+return toGenericTypesString(genericsTypes);
 }
 
 protected static String formatArgumentList(ClassNode[] nodes) {



groovy git commit: Minor refactoring: remove duplicated code

2018-05-18 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master a3d97de47 -> 86e27aa39


Minor refactoring: remove duplicated code


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/86e27aa3
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/86e27aa3
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/86e27aa3

Branch: refs/heads/master
Commit: 86e27aa393931cb622d33b15ddf1c846fff47a6b
Parents: a3d97de
Author: sunlan 
Authored: Fri May 18 22:47:19 2018 +0800
Committer: sunlan 
Committed: Fri May 18 22:47:36 2018 +0800

--
 .../codehaus/groovy/ast/tools/GenericsUtils.java   |  9 -
 .../transform/stc/StaticTypeCheckingVisitor.java   | 17 ++---
 2 files changed, 10 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/86e27aa3/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java 
b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 27f2bd9..2e8a103 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
@@ -198,13 +198,12 @@ public class GenericsUtils {
 }
 }
 
-private static String toGenericTypesString(GenericsType[] genericsTypes) {
+public static String toGenericTypesString(GenericsType[] genericsTypes) {
 if (genericsTypes == null) return "";
 StringBuilder sb = new StringBuilder("<");
-for (int i = 0; i < genericsTypes.length; i++) {
-final GenericsType genericsType = genericsTypes[i];
-sb.append(genericsType.toString());
-if (i < genericsTypes.length - 1) {
+for (int i = 0, n = genericsTypes.length; i < n; i++) {
+sb.append(genericsTypes[i].toString());
+if (i < n - 1) {
 sb.append(",");
 }
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/86e27aa3/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index de8af20..c28604a 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -169,6 +169,7 @@ import static 
org.codehaus.groovy.ast.tools.GeneralUtils.binX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.castX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
+import static org.codehaus.groovy.ast.tools.GenericsUtils.toGenericTypesString;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.LowestUpperBoundClassNode;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.isBigDecCategory;
 import static 
org.codehaus.groovy.ast.tools.WideningCategories.isBigIntCategory;
@@ -5167,17 +5168,11 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 
 private static String toMethodGenericTypesString(MethodNode node) {
 GenericsType[] genericsTypes = node.getGenericsTypes();
-if (genericsTypes == null) return "";
-StringBuilder sb = new StringBuilder("<");
-for (int i = 0; i < genericsTypes.length; i++) {
-final GenericsType genericsType = genericsTypes[i];
-sb.append(genericsType.toString());
-if (i < genericsTypes.length - 1) {
-sb.append(",");
-}
-}
-sb.append("> ");
-return sb.toString();
+
+if (genericsTypes == null)
+return "";
+
+return toGenericTypesString(genericsTypes);
 }
 
 protected static String formatArgumentList(ClassNode[] nodes) {



groovy git commit: Minor refactoring: check whether visiting return statement

2018-05-14 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X bfc866927 -> 6daeadbc5


Minor refactoring: check whether visiting return statement

(cherry picked from commit 1f0c0ac)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6daeadbc
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6daeadbc
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6daeadbc

Branch: refs/heads/GROOVY_2_5_X
Commit: 6daeadbc5bf43befbaed43964506f5804563a758
Parents: bfc8669
Author: sunlan 
Authored: Tue May 15 12:17:21 2018 +0800
Committer: sunlan 
Committed: Tue May 15 12:22:32 2018 +0800

--
 .../stc/StaticTypeCheckingVisitor.java  | 11 +++-
 .../transform/stc/TypeCheckingContext.java  | 29 
 2 files changed, 33 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/6daeadbc/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 65ab493..b1f8f8b 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1985,22 +1985,19 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 super.visitConstructorOrMethod(node, isConstructor);
 }
 if (!isConstructor) {
-returnAdder.visitMethod(node); // return statement added after 
visitConstructorOrMethod finished... we can not count these auto-generated 
return statements(GROOVY-7753), see `this.visitingReturnStatementCnt`
+returnAdder.visitMethod(node); // return statement added after 
visitConstructorOrMethod finished... we can not count these auto-generated 
return statements(GROOVY-7753), see 
`typeCheckingContext.pushEnclosingReturnStatement`
 }
 typeCheckingContext.popEnclosingMethod();
 }
 
-// GROOVY-7753 return statement added after visitConstructorOrMethod 
finished... current solution can not solve auto return
-private int visitingReturnStatementCnt = 0;
-
 @Override
 public void visitReturnStatement(ReturnStatement statement) {
-visitingReturnStatementCnt++;
+typeCheckingContext.pushEnclosingReturnStatement(statement);
 try {
 super.visitReturnStatement(statement);
 returnListener.returnStatementAdded(statement);
 } finally {
-visitingReturnStatementCnt--;
+typeCheckingContext.popEnclosingReturnStatement();
 }
 }
 
@@ -3242,7 +3239,7 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 if 
(typeCheckMethodsWithGenericsOrFail(chosenReceiver.getType(), args, mn.get(0), 
call)) {
 returnType = 
adjustWithTraits(directMethodCallCandidate, chosenReceiver.getType(), args, 
returnType);
 
-if (1 == visitingReturnStatementCnt) { // the 
method call is within return statement, we can try to infer type further
+if (null != 
typeCheckingContext.getEnclosingReturnStatement()) { // the method call is 
within return statement, we can try to infer type further
 ClassNode inferredType = infer(returnType, 
typeCheckingContext.getEnclosingMethod().getReturnType());
 if (null != inferredType) {
 returnType = inferredType;

http://git-wip-us.apache.org/repos/asf/groovy/blob/6daeadbc/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java 
b/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
index 057403f..13588d0 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
@@ -28,6 +28,7 @@ import org.codehaus.groovy.ast.expr.MethodCallExpression;
 import org.codehaus.groovy.ast.expr.StaticMethodCallExpression;
 import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
+import org.codehaus.groovy.ast.stmt.ReturnStatement;
 import org.codehaus.groovy.control.CompilationUnit;
 import org.codehaus.groovy.control.ErrorCollector;
 import org.codehaus.groovy.control.SourceUnit;
@@ -54,6 +55,7 @@ public class TypeCheckingContext {
 protected final 

groovy git commit: Minor refactoring: check whether visiting return statement

2018-05-14 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 1e264d7c6 -> 89bb874c1


Minor refactoring: check whether visiting return statement

(cherry picked from commit 1f0c0ac)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/89bb874c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/89bb874c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/89bb874c

Branch: refs/heads/GROOVY_2_6_X
Commit: 89bb874c13fd48404df349b8133a8bdf22d814eb
Parents: 1e264d7
Author: sunlan 
Authored: Tue May 15 12:17:21 2018 +0800
Committer: sunlan 
Committed: Tue May 15 12:21:37 2018 +0800

--
 .../stc/StaticTypeCheckingVisitor.java  | 11 +++-
 .../transform/stc/TypeCheckingContext.java  | 29 
 2 files changed, 33 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/89bb874c/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index bafc9d5..679100d 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1986,22 +1986,19 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 super.visitConstructorOrMethod(node, isConstructor);
 }
 if (!isConstructor) {
-returnAdder.visitMethod(node); // return statement added after 
visitConstructorOrMethod finished... we can not count these auto-generated 
return statements(GROOVY-7753), see `this.visitingReturnStatementCnt`
+returnAdder.visitMethod(node); // return statement added after 
visitConstructorOrMethod finished... we can not count these auto-generated 
return statements(GROOVY-7753), see 
`typeCheckingContext.pushEnclosingReturnStatement`
 }
 typeCheckingContext.popEnclosingMethod();
 }
 
-// GROOVY-7753 return statement added after visitConstructorOrMethod 
finished... current solution can not solve auto return
-private int visitingReturnStatementCnt = 0;
-
 @Override
 public void visitReturnStatement(ReturnStatement statement) {
-visitingReturnStatementCnt++;
+typeCheckingContext.pushEnclosingReturnStatement(statement);
 try {
 super.visitReturnStatement(statement);
 returnListener.returnStatementAdded(statement);
 } finally {
-visitingReturnStatementCnt--;
+typeCheckingContext.popEnclosingReturnStatement();
 }
 }
 
@@ -3245,7 +3242,7 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 if 
(typeCheckMethodsWithGenericsOrFail(chosenReceiver.getType(), args, mn.get(0), 
call)) {
 returnType = 
adjustWithTraits(directMethodCallCandidate, chosenReceiver.getType(), args, 
returnType);
 
-if (1 == visitingReturnStatementCnt) { // the 
method call is within return statement, we can try to infer type further
+if (null != 
typeCheckingContext.getEnclosingReturnStatement()) { // the method call is 
within return statement, we can try to infer type further
 ClassNode inferredType = infer(returnType, 
typeCheckingContext.getEnclosingMethod().getReturnType());
 if (null != inferredType) {
 returnType = inferredType;

http://git-wip-us.apache.org/repos/asf/groovy/blob/89bb874c/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java 
b/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
index 057403f..13588d0 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
@@ -28,6 +28,7 @@ import org.codehaus.groovy.ast.expr.MethodCallExpression;
 import org.codehaus.groovy.ast.expr.StaticMethodCallExpression;
 import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
+import org.codehaus.groovy.ast.stmt.ReturnStatement;
 import org.codehaus.groovy.control.CompilationUnit;
 import org.codehaus.groovy.control.ErrorCollector;
 import org.codehaus.groovy.control.SourceUnit;
@@ -54,6 +55,7 @@ public class TypeCheckingContext {
 protected final 

groovy git commit: Minor refactoring: check whether visiting return statement

2018-05-14 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 71c9616c6 -> 1f0c0ac6e


Minor refactoring: check whether visiting return statement


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/1f0c0ac6
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/1f0c0ac6
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/1f0c0ac6

Branch: refs/heads/master
Commit: 1f0c0ac6ece046e56c8f8d3aefe09c4ca3c60af4
Parents: 71c9616
Author: sunlan 
Authored: Tue May 15 12:17:21 2018 +0800
Committer: sunlan 
Committed: Tue May 15 12:17:21 2018 +0800

--
 .../stc/StaticTypeCheckingVisitor.java  | 11 +++-
 .../transform/stc/TypeCheckingContext.java  | 29 
 2 files changed, 33 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/1f0c0ac6/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 72cce39..0ab1ac5 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1986,22 +1986,19 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 super.visitConstructorOrMethod(node, isConstructor);
 }
 if (!isConstructor) {
-returnAdder.visitMethod(node); // return statement added after 
visitConstructorOrMethod finished... we can not count these auto-generated 
return statements(GROOVY-7753), see `this.visitingReturnStatementCnt`
+returnAdder.visitMethod(node); // return statement added after 
visitConstructorOrMethod finished... we can not count these auto-generated 
return statements(GROOVY-7753), see 
`typeCheckingContext.pushEnclosingReturnStatement`
 }
 typeCheckingContext.popEnclosingMethod();
 }
 
-// GROOVY-7753 return statement added after visitConstructorOrMethod 
finished... current solution can not solve auto return
-private int visitingReturnStatementCnt = 0;
-
 @Override
 public void visitReturnStatement(ReturnStatement statement) {
-visitingReturnStatementCnt++;
+typeCheckingContext.pushEnclosingReturnStatement(statement);
 try {
 super.visitReturnStatement(statement);
 returnListener.returnStatementAdded(statement);
 } finally {
-visitingReturnStatementCnt--;
+typeCheckingContext.popEnclosingReturnStatement();
 }
 }
 
@@ -3245,7 +3242,7 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 if 
(typeCheckMethodsWithGenericsOrFail(chosenReceiver.getType(), args, mn.get(0), 
call)) {
 returnType = 
adjustWithTraits(directMethodCallCandidate, chosenReceiver.getType(), args, 
returnType);
 
-if (1 == visitingReturnStatementCnt) { // the 
method call is within return statement, we can try to infer type further
+if (null != 
typeCheckingContext.getEnclosingReturnStatement()) { // the method call is 
within return statement, we can try to infer type further
 ClassNode inferredType = infer(returnType, 
typeCheckingContext.getEnclosingMethod().getReturnType());
 if (null != inferredType) {
 returnType = inferredType;

http://git-wip-us.apache.org/repos/asf/groovy/blob/1f0c0ac6/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java 
b/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
index 057403f..13588d0 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/TypeCheckingContext.java
@@ -28,6 +28,7 @@ import org.codehaus.groovy.ast.expr.MethodCallExpression;
 import org.codehaus.groovy.ast.expr.StaticMethodCallExpression;
 import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
+import org.codehaus.groovy.ast.stmt.ReturnStatement;
 import org.codehaus.groovy.control.CompilationUnit;
 import org.codehaus.groovy.control.ErrorCollector;
 import org.codehaus.groovy.control.SourceUnit;
@@ -54,6 +55,7 @@ public class TypeCheckingContext {
 protected final LinkedList enclosingMethods = new 
LinkedList();

[2/2] groovy git commit: Minor refactoring: reuse `findActualTypeByPlaceholderName`

2018-05-13 Thread sunlan
Minor refactoring: reuse `findActualTypeByPlaceholderName`

(cherry picked from commit b8b5bd5)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/b8fb3bec
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b8fb3bec
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b8fb3bec

Branch: refs/heads/GROOVY_2_5_X
Commit: b8fb3beca97da3babc70d00fc84961791b40f9a9
Parents: bfe91af
Author: sunlan 
Authored: Mon May 14 00:00:34 2018 +0800
Committer: sunlan 
Committed: Mon May 14 00:06:54 2018 +0800

--
 .../groovy/transform/stc/StaticTypeCheckingSupport.java | 12 
 .../groovy/transform/stc/StaticTypeCheckingVisitor.java |  8 
 2 files changed, 8 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/b8fb3bec/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index b3ca258..5843aa3 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1183,14 +1183,10 @@ public abstract class StaticTypeCheckingSupport {
 return isExtensionMethodNode ? 0 : 1;
 }
 
-private static ClassNode findGenericsTypeByPlaceholderName(String 
placeholderName, Map placeholderInfo) {
-for (Map.Entry entry : 
placeholderInfo.entrySet()) {
-if (placeholderName.equals(entry.getKey())) {
-return entry.getValue().getType();
-}
-}
+public static ClassNode findActualTypeByPlaceholderName(String 
placeholderName, Map placeholderInfo) {
+GenericsType gt = placeholderInfo.get(placeholderName);
 
-return null;
+return null == gt ? null : gt.getType().redirect();
 }
 
 private static Parameter[] makeRawTypes(Parameter[] params, ClassNode 
declaringClassForDistance, ClassNode actualReceiverForDistance) {
@@ -1200,7 +1196,7 @@ public abstract class StaticTypeCheckingSupport {
 for (int i = 0; i < params.length; i++) {
 Parameter oldP = params[i];
 
-ClassNode actualType = 
findGenericsTypeByPlaceholderName(oldP.getType().getUnresolvedName(), 
placeholderInfo);
+ClassNode actualType = 
findActualTypeByPlaceholderName(oldP.getType().getUnresolvedName(), 
placeholderInfo);
 Parameter newP = new Parameter(makeRawType(null == actualType ? 
oldP.getType() : actualType), oldP.getName());
 newParam[i] = newP;
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/b8fb3bec/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index b7ad3fe..e7d 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -217,6 +217,7 @@ import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.choose
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.evaluateExpression;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsConnections;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsParameterMapOfThis;
+import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findActualTypeByPlaceholderName;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findDGMMethodsByNameAndArguments;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findSetters;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findTargetVariable;
@@ -594,11 +595,10 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 ClassNode parameterizedType = 
GenericsUtils.findParameterizedType(fieldNode.getDeclaringClass(), 
typeCheckingContext.getEnclosingClassNode());
 if (null != parameterizedType) {
 ClassNode originalType = fieldNode.getOriginType();
-GenericsType gt = 
GenericsUtils.extractPlaceholders(parameterizedType).get(originalType.getUnresolvedName());
+ClassNode actualType = 
findActualTypeByPlaceholderName(originalType.getUnresolvedName(), 
GenericsUtils.extractPlaceholders(parameteri

[2/2] groovy git commit: Minor refactoring: reuse `findActualTypeByPlaceholderName`

2018-05-13 Thread sunlan
Minor refactoring: reuse `findActualTypeByPlaceholderName`

(cherry picked from commit b8b5bd5)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/0a0f05e2
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/0a0f05e2
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/0a0f05e2

Branch: refs/heads/GROOVY_2_6_X
Commit: 0a0f05e22ef8b2c4c8b013d9fcbac504048eadc1
Parents: f76c36a
Author: sunlan 
Authored: Mon May 14 00:00:34 2018 +0800
Committer: sunlan 
Committed: Mon May 14 00:04:50 2018 +0800

--
 .../groovy/transform/stc/StaticTypeCheckingSupport.java | 12 
 .../groovy/transform/stc/StaticTypeCheckingVisitor.java |  8 
 2 files changed, 8 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/0a0f05e2/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index c88f0d6..aa1745b 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1189,14 +1189,10 @@ public abstract class StaticTypeCheckingSupport {
 return isExtensionMethodNode ? 0 : 1;
 }
 
-private static ClassNode findGenericsTypeByPlaceholderName(String 
placeholderName, Map placeholderInfo) {
-for (Map.Entry entry : 
placeholderInfo.entrySet()) {
-if (placeholderName.equals(entry.getKey())) {
-return entry.getValue().getType();
-}
-}
+public static ClassNode findActualTypeByPlaceholderName(String 
placeholderName, Map placeholderInfo) {
+GenericsType gt = placeholderInfo.get(placeholderName);
 
-return null;
+return null == gt ? null : gt.getType().redirect();
 }
 
 private static Parameter[] makeRawTypes(Parameter[] params, ClassNode 
declaringClassForDistance, ClassNode actualReceiverForDistance) {
@@ -1206,7 +1202,7 @@ public abstract class StaticTypeCheckingSupport {
 for (int i = 0; i < params.length; i++) {
 Parameter oldP = params[i];
 
-ClassNode actualType = 
findGenericsTypeByPlaceholderName(oldP.getType().getUnresolvedName(), 
placeholderInfo);
+ClassNode actualType = 
findActualTypeByPlaceholderName(oldP.getType().getUnresolvedName(), 
placeholderInfo);
 Parameter newP = new Parameter(makeRawType(null == actualType ? 
oldP.getType() : actualType), oldP.getName());
 newParam[i] = newP;
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/0a0f05e2/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index d08136b..b3f0cc0 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -217,6 +217,7 @@ import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.choose
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.evaluateExpression;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsConnections;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsParameterMapOfThis;
+import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findActualTypeByPlaceholderName;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findDGMMethodsByNameAndArguments;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findSetters;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findTargetVariable;
@@ -598,11 +599,10 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 ClassNode parameterizedType = 
GenericsUtils.findParameterizedType(fieldNode.getDeclaringClass(), 
typeCheckingContext.getEnclosingClassNode());
 if (null != parameterizedType) {
 ClassNode originalType = fieldNode.getOriginType();
-GenericsType gt = 
GenericsUtils.extractPlaceholders(parameterizedType).get(originalType.getUnresolvedName());
+ClassNode actualType = 
findActualTypeByPlaceholderName(originalType.getUnresolvedName(), 
GenericsUtils.extractPlaceholders(parameteri

groovy git commit: Minor refactoring: reuse `findActualTypeByPlaceholderName`

2018-05-13 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 009c42c1e -> b8b5bd567


Minor refactoring: reuse `findActualTypeByPlaceholderName`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/b8b5bd56
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b8b5bd56
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b8b5bd56

Branch: refs/heads/master
Commit: b8b5bd567410203b4bb9f86f3d5f54668e1c3a90
Parents: 009c42c
Author: sunlan 
Authored: Mon May 14 00:00:34 2018 +0800
Committer: sunlan 
Committed: Mon May 14 00:00:34 2018 +0800

--
 .../groovy/transform/stc/StaticTypeCheckingSupport.java | 12 
 .../groovy/transform/stc/StaticTypeCheckingVisitor.java |  8 
 2 files changed, 8 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/b8b5bd56/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index 3ea9764..316953b 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1189,14 +1189,10 @@ public abstract class StaticTypeCheckingSupport {
 return isExtensionMethodNode ? 0 : 1;
 }
 
-private static ClassNode findGenericsTypeByPlaceholderName(String 
placeholderName, Map placeholderInfo) {
-for (Map.Entry entry : 
placeholderInfo.entrySet()) {
-if (placeholderName.equals(entry.getKey())) {
-return entry.getValue().getType();
-}
-}
+public static ClassNode findActualTypeByPlaceholderName(String 
placeholderName, Map placeholderInfo) {
+GenericsType gt = placeholderInfo.get(placeholderName);
 
-return null;
+return null == gt ? null : gt.getType().redirect();
 }
 
 private static Parameter[] makeRawTypes(Parameter[] params, ClassNode 
declaringClassForDistance, ClassNode actualReceiverForDistance) {
@@ -1206,7 +1202,7 @@ public abstract class StaticTypeCheckingSupport {
 for (int i = 0; i < params.length; i++) {
 Parameter oldP = params[i];
 
-ClassNode actualType = 
findGenericsTypeByPlaceholderName(oldP.getType().getUnresolvedName(), 
placeholderInfo);
+ClassNode actualType = 
findActualTypeByPlaceholderName(oldP.getType().getUnresolvedName(), 
placeholderInfo);
 Parameter newP = new Parameter(makeRawType(null == actualType ? 
oldP.getType() : actualType), oldP.getName());
 newParam[i] = newP;
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/b8b5bd56/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 34b95df..e474286 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -217,6 +217,7 @@ import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.choose
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.evaluateExpression;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsConnections;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsParameterMapOfThis;
+import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findActualTypeByPlaceholderName;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findDGMMethodsByNameAndArguments;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findSetters;
 import static 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findTargetVariable;
@@ -598,11 +599,10 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 ClassNode parameterizedType = 
GenericsUtils.findParameterizedType(fieldNode.getDeclaringClass(), 
typeCheckingContext.getEnclosingClassNode());
 if (null != parameterizedType) {
 ClassNode originalType = fieldNode.getOriginType();
-GenericsType gt = 
GenericsUtils.extractPlaceholders(parameterizedType).get(originalType.getUnresolvedName());
+ClassNode actualType = 
findActualTypeByPlaceholderName(originalType.getUnresolvedName(), 
Gener

groovy git commit: Minor refactoring: simplify the logic of `filterMethodsByVisibility`

2018-05-11 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 8df09980d -> 3a0696ee3


Minor refactoring: simplify the logic of `filterMethodsByVisibility`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/3a0696ee
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/3a0696ee
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/3a0696ee

Branch: refs/heads/master
Commit: 3a0696ee3181184b84cf5975b6e0be072c6ce6d7
Parents: 8df0998
Author: danielsun1106 
Authored: Sat May 12 02:40:54 2018 +0800
Committer: danielsun1106 
Committed: Sat May 12 02:40:54 2018 +0800

--
 .../stc/StaticTypeCheckingVisitor.java  | 30 ++--
 src/test/groovy/bugs/Groovy7883Bug.groovy   |  2 ++
 2 files changed, 11 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/3a0696ee/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index cb211d5..85daa8c 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -4357,7 +4357,7 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 
 // lookup in DGM methods too
 findDGMMethodsByNameAndArguments(getTransformLoader(), receiver, name, 
args, methods);
-methods = filterMethodsByVisibility(receiver, methods);
+methods = filterMethodsByVisibility(methods);
 List chosen = chooseBestMethod(receiver, methods, args);
 if (!chosen.isEmpty()) return chosen;
 
@@ -4384,31 +4384,19 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 return EMPTY_METHODNODE_LIST;
 }
 
-private List filterMethodsByVisibility(ClassNode receiver, 
List methods) {
+private List filterMethodsByVisibility(List 
methods) {
 List result = new LinkedList<>();
 
 ClassNode enclosingClassNode = 
typeCheckingContext.getEnclosingClassNode();
-if (enclosingClassNode.equals(receiver)) {
-for (MethodNode methodNode : methods) {
-if (methodNode.isPrivate() && 
!enclosingClassNode.equals(methodNode.getDeclaringClass())) {
-continue;
-}
-
-result.add(methodNode);
+for (MethodNode methodNode : methods) {
+if (methodNode.isPrivate() && 
!enclosingClassNode.equals(methodNode.getDeclaringClass())) {
+continue;
 }
-} else {
-boolean isDerived = enclosingClassNode.isDerivedFrom(receiver);
-for (MethodNode methodNode : methods) {
-if (methodNode.isPrivate()) {
-continue;
-}
-
-if (!isDerived && methodNode.isProtected()) {
-continue;
-}
-
-result.add(methodNode);
+if (methodNode.isProtected() && 
!enclosingClassNode.isDerivedFrom(methodNode.getDeclaringClass())) {
+continue;
 }
+
+result.add(methodNode);
 }
 
 return result;

http://git-wip-us.apache.org/repos/asf/groovy/blob/3a0696ee/src/test/groovy/bugs/Groovy7883Bug.groovy
--
diff --git a/src/test/groovy/bugs/Groovy7883Bug.groovy 
b/src/test/groovy/bugs/Groovy7883Bug.groovy
index d632141..c164118 100644
--- a/src/test/groovy/bugs/Groovy7883Bug.groovy
+++ b/src/test/groovy/bugs/Groovy7883Bug.groovy
@@ -98,6 +98,7 @@ class Groovy7883Bug extends GroovyTestCase {
 class A {
 protected void doIt() { doIt2() }
 private void doIt2() {}
+public void doIt3() { doIt() }
 }
 
 @groovy.transform.CompileStatic
@@ -106,6 +107,7 @@ class Groovy7883Bug extends GroovyTestCase {
 }
 
 new B().m()
+new B().doIt3()
 '''
 }
 



groovy git commit: Minor refactoring: remove duplicated code of `Inspector`

2018-04-19 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 1bc34417b -> a3d86ac63


Minor refactoring: remove duplicated code of `Inspector`

(cherry picked from commit 923f788)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/a3d86ac6
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/a3d86ac6
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/a3d86ac6

Branch: refs/heads/GROOVY_2_5_X
Commit: a3d86ac63319764dcbd1652a1e5ae6a257f02015
Parents: 1bc3441
Author: sunlan 
Authored: Thu Apr 19 13:55:14 2018 +0800
Committer: sunlan 
Committed: Thu Apr 19 15:18:19 2018 +0800

--
 src/main/groovy/groovy/inspect/Inspector.java | 12 +---
 1 file changed, 1 insertion(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/a3d86ac6/src/main/groovy/groovy/inspect/Inspector.java
--
diff --git a/src/main/groovy/groovy/inspect/Inspector.java 
b/src/main/groovy/groovy/inspect/Inspector.java
index b8ad561..6fff2a1 100644
--- a/src/main/groovy/groovy/inspect/Inspector.java
+++ b/src/main/groovy/groovy/inspect/Inspector.java
@@ -22,7 +22,6 @@ import groovy.lang.GroovyObject;
 import groovy.lang.MetaClass;
 import groovy.lang.MetaMethod;
 import groovy.lang.PropertyValue;
-import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.runtime.DefaultGroovyMethods;
 import org.codehaus.groovy.runtime.InvokerHelper;
 
@@ -280,16 +279,7 @@ public class Inspector {
 result[MEMBER_DECLARER_IDX] = 
shortName(method.getDeclaringClass().getTheClass());
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
 result[MEMBER_NAME_IDX] = method.getName();
-CachedClass[] params = method.getParameterTypes();
-
-// TODO reuse `makeParamsInfo`
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j].getTheClass()));
-if (j < (params.length - 1)) sb.append(", ");
-}
-
-result[MEMBER_PARAMS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = 
makeParamsInfo(method.getNativeParameterTypes());
 result[MEMBER_EXCEPTIONS_IDX] = NOT_APPLICABLE; // no exception info 
for Groovy MetaMethods
 return withoutNulls(result);
 }



groovy git commit: Minor refactoring: remove duplicated code of `Inspector`

2018-04-19 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 8b019cd87 -> 2148a2fda


Minor refactoring: remove duplicated code of `Inspector`

(cherry picked from commit 923f788)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2148a2fd
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2148a2fd
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2148a2fd

Branch: refs/heads/GROOVY_2_6_X
Commit: 2148a2fdab6c9923baba38ec61bf10e08a707a08
Parents: 8b019cd
Author: sunlan 
Authored: Thu Apr 19 13:55:14 2018 +0800
Committer: sunlan 
Committed: Thu Apr 19 15:17:55 2018 +0800

--
 src/main/groovy/groovy/inspect/Inspector.java | 12 +---
 1 file changed, 1 insertion(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/2148a2fd/src/main/groovy/groovy/inspect/Inspector.java
--
diff --git a/src/main/groovy/groovy/inspect/Inspector.java 
b/src/main/groovy/groovy/inspect/Inspector.java
index b8ad561..6fff2a1 100644
--- a/src/main/groovy/groovy/inspect/Inspector.java
+++ b/src/main/groovy/groovy/inspect/Inspector.java
@@ -22,7 +22,6 @@ import groovy.lang.GroovyObject;
 import groovy.lang.MetaClass;
 import groovy.lang.MetaMethod;
 import groovy.lang.PropertyValue;
-import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.runtime.DefaultGroovyMethods;
 import org.codehaus.groovy.runtime.InvokerHelper;
 
@@ -280,16 +279,7 @@ public class Inspector {
 result[MEMBER_DECLARER_IDX] = 
shortName(method.getDeclaringClass().getTheClass());
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
 result[MEMBER_NAME_IDX] = method.getName();
-CachedClass[] params = method.getParameterTypes();
-
-// TODO reuse `makeParamsInfo`
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j].getTheClass()));
-if (j < (params.length - 1)) sb.append(", ");
-}
-
-result[MEMBER_PARAMS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = 
makeParamsInfo(method.getNativeParameterTypes());
 result[MEMBER_EXCEPTIONS_IDX] = NOT_APPLICABLE; // no exception info 
for Groovy MetaMethods
 return withoutNulls(result);
 }



groovy git commit: Minor refactoring: remove duplicated code of `Inspector`

2018-04-18 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master cc6ff27d1 -> 923f788f8


Minor refactoring: remove duplicated code of `Inspector`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/923f788f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/923f788f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/923f788f

Branch: refs/heads/master
Commit: 923f788f81f0308458c6210121c5edd63073ba98
Parents: cc6ff27
Author: sunlan 
Authored: Thu Apr 19 13:55:14 2018 +0800
Committer: sunlan 
Committed: Thu Apr 19 13:55:14 2018 +0800

--
 src/main/groovy/groovy/inspect/Inspector.java | 12 +---
 1 file changed, 1 insertion(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/923f788f/src/main/groovy/groovy/inspect/Inspector.java
--
diff --git a/src/main/groovy/groovy/inspect/Inspector.java 
b/src/main/groovy/groovy/inspect/Inspector.java
index b8ad561..6fff2a1 100644
--- a/src/main/groovy/groovy/inspect/Inspector.java
+++ b/src/main/groovy/groovy/inspect/Inspector.java
@@ -22,7 +22,6 @@ import groovy.lang.GroovyObject;
 import groovy.lang.MetaClass;
 import groovy.lang.MetaMethod;
 import groovy.lang.PropertyValue;
-import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.runtime.DefaultGroovyMethods;
 import org.codehaus.groovy.runtime.InvokerHelper;
 
@@ -280,16 +279,7 @@ public class Inspector {
 result[MEMBER_DECLARER_IDX] = 
shortName(method.getDeclaringClass().getTheClass());
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
 result[MEMBER_NAME_IDX] = method.getName();
-CachedClass[] params = method.getParameterTypes();
-
-// TODO reuse `makeParamsInfo`
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j].getTheClass()));
-if (j < (params.length - 1)) sb.append(", ");
-}
-
-result[MEMBER_PARAMS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = 
makeParamsInfo(method.getNativeParameterTypes());
 result[MEMBER_EXCEPTIONS_IDX] = NOT_APPLICABLE; // no exception info 
for Groovy MetaMethods
 return withoutNulls(result);
 }



groovy git commit: Minor refactoring: remove duplicated code of `Inspector`

2018-04-18 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X a943a95ac -> 0fc93ef46


Minor refactoring: remove duplicated code of `Inspector`

(cherry picked from commit ca44609)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/0fc93ef4
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/0fc93ef4
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/0fc93ef4

Branch: refs/heads/GROOVY_2_5_X
Commit: 0fc93ef4630e16677a3f21f621f920b4fd4c8892
Parents: a943a95
Author: sunlan 
Authored: Wed Apr 18 19:06:14 2018 +0800
Committer: sunlan 
Committed: Wed Apr 18 19:08:23 2018 +0800

--
 src/main/groovy/groovy/inspect/Inspector.java | 61 ++
 1 file changed, 29 insertions(+), 32 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/0fc93ef4/src/main/groovy/groovy/inspect/Inspector.java
--
diff --git a/src/main/groovy/groovy/inspect/Inspector.java 
b/src/main/groovy/groovy/inspect/Inspector.java
index f0c94a7..b8ad561 100644
--- a/src/main/groovy/groovy/inspect/Inspector.java
+++ b/src/main/groovy/groovy/inspect/Inspector.java
@@ -228,53 +228,47 @@ public class Inspector {
 return className;
 }
 
+private static String makeTypesInfo(Class[] types) {
+StringBuilder sb = new StringBuilder(32);
+for (int k = 0; k < types.length; k++) {
+sb.append(shortName(types[k]));
+if (k < (types.length - 1)) sb.append(", ");
+}
+
+return sb.toString();
+}
+
+private static String makeParamsInfo(Class[] params) {
+return makeTypesInfo(params);
+}
+
+private static String makeExceptionInfo(Class[] exceptions) {
+return makeTypesInfo(exceptions);
+}
+
 protected String[] methodInfo(Method method) {
 String[] result = new String[MEMBER_EXCEPTIONS_IDX + 1];
-int mod = method.getModifiers();
 result[MEMBER_ORIGIN_IDX] = JAVA;
 result[MEMBER_DECLARER_IDX] = shortName(method.getDeclaringClass());
-result[MEMBER_MODIFIER_IDX] = Modifier.toString(mod);
+result[MEMBER_MODIFIER_IDX] = Modifier.toString(method.getModifiers());
 result[MEMBER_NAME_IDX] = method.getName();
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
-Class[] params = method.getParameterTypes();
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j]));
-if (j < (params.length - 1)) sb.append(", ");
-}
-result[MEMBER_PARAMS_IDX] = sb.toString();
-sb.setLength(0);
-Class[] exceptions = method.getExceptionTypes();
-for (int k = 0; k < exceptions.length; k++) {
-sb.append(shortName(exceptions[k]));
-if (k < (exceptions.length - 1)) sb.append(", ");
-}
-result[MEMBER_EXCEPTIONS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = makeParamsInfo(method.getParameterTypes());
+result[MEMBER_EXCEPTIONS_IDX] = 
makeExceptionInfo(method.getExceptionTypes());
+
 return withoutNulls(result);
 }
 
 protected String[] methodInfo(Constructor ctor) {
 String[] result = new String[MEMBER_EXCEPTIONS_IDX + 1];
-int mod = ctor.getModifiers();
 result[MEMBER_ORIGIN_IDX] = JAVA;
-result[MEMBER_MODIFIER_IDX] = Modifier.toString(mod);
+result[MEMBER_MODIFIER_IDX] = Modifier.toString(ctor.getModifiers());
 result[MEMBER_DECLARER_IDX] = shortName(ctor.getDeclaringClass());
 result[MEMBER_TYPE_IDX] = shortName(ctor.getDeclaringClass());
 result[MEMBER_NAME_IDX] = ctor.getName();
-Class[] params = ctor.getParameterTypes();
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j]));
-if (j < (params.length - 1)) sb.append(", ");
-}
-result[MEMBER_PARAMS_IDX] = sb.toString();
-sb.setLength(0);
-Class[] exceptions = ctor.getExceptionTypes();
-for (int k = 0; k < exceptions.length; k++) {
-sb.append(shortName(exceptions[k]));
-if (k < (exceptions.length - 1)) sb.append(", ");
-}
-result[MEMBER_EXCEPTIONS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = makeParamsInfo(ctor.getParameterTypes());
+result[MEMBER_EXCEPTIONS_IDX] = 
makeExceptionInfo(ctor.getExceptionTypes());
+
 return withoutNulls(result);
 }
 
@@ -287,11 +281,14 @@ public class Inspector {
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
 result[MEMBER_NAME_IDX] = method.getName();
 CachedClass[] params = method.getPara

groovy git commit: Minor refactoring: remove duplicated code of `Inspector`

2018-04-18 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 39e84c11f -> 44a08a0f6


Minor refactoring: remove duplicated code of `Inspector`

(cherry picked from commit ca44609)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/44a08a0f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/44a08a0f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/44a08a0f

Branch: refs/heads/GROOVY_2_6_X
Commit: 44a08a0f6d22b444975097bd02b6cc1d7178de3b
Parents: 39e84c1
Author: sunlan 
Authored: Wed Apr 18 19:06:14 2018 +0800
Committer: sunlan 
Committed: Wed Apr 18 19:07:47 2018 +0800

--
 src/main/groovy/groovy/inspect/Inspector.java | 61 ++
 1 file changed, 29 insertions(+), 32 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/44a08a0f/src/main/groovy/groovy/inspect/Inspector.java
--
diff --git a/src/main/groovy/groovy/inspect/Inspector.java 
b/src/main/groovy/groovy/inspect/Inspector.java
index f0c94a7..b8ad561 100644
--- a/src/main/groovy/groovy/inspect/Inspector.java
+++ b/src/main/groovy/groovy/inspect/Inspector.java
@@ -228,53 +228,47 @@ public class Inspector {
 return className;
 }
 
+private static String makeTypesInfo(Class[] types) {
+StringBuilder sb = new StringBuilder(32);
+for (int k = 0; k < types.length; k++) {
+sb.append(shortName(types[k]));
+if (k < (types.length - 1)) sb.append(", ");
+}
+
+return sb.toString();
+}
+
+private static String makeParamsInfo(Class[] params) {
+return makeTypesInfo(params);
+}
+
+private static String makeExceptionInfo(Class[] exceptions) {
+return makeTypesInfo(exceptions);
+}
+
 protected String[] methodInfo(Method method) {
 String[] result = new String[MEMBER_EXCEPTIONS_IDX + 1];
-int mod = method.getModifiers();
 result[MEMBER_ORIGIN_IDX] = JAVA;
 result[MEMBER_DECLARER_IDX] = shortName(method.getDeclaringClass());
-result[MEMBER_MODIFIER_IDX] = Modifier.toString(mod);
+result[MEMBER_MODIFIER_IDX] = Modifier.toString(method.getModifiers());
 result[MEMBER_NAME_IDX] = method.getName();
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
-Class[] params = method.getParameterTypes();
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j]));
-if (j < (params.length - 1)) sb.append(", ");
-}
-result[MEMBER_PARAMS_IDX] = sb.toString();
-sb.setLength(0);
-Class[] exceptions = method.getExceptionTypes();
-for (int k = 0; k < exceptions.length; k++) {
-sb.append(shortName(exceptions[k]));
-if (k < (exceptions.length - 1)) sb.append(", ");
-}
-result[MEMBER_EXCEPTIONS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = makeParamsInfo(method.getParameterTypes());
+result[MEMBER_EXCEPTIONS_IDX] = 
makeExceptionInfo(method.getExceptionTypes());
+
 return withoutNulls(result);
 }
 
 protected String[] methodInfo(Constructor ctor) {
 String[] result = new String[MEMBER_EXCEPTIONS_IDX + 1];
-int mod = ctor.getModifiers();
 result[MEMBER_ORIGIN_IDX] = JAVA;
-result[MEMBER_MODIFIER_IDX] = Modifier.toString(mod);
+result[MEMBER_MODIFIER_IDX] = Modifier.toString(ctor.getModifiers());
 result[MEMBER_DECLARER_IDX] = shortName(ctor.getDeclaringClass());
 result[MEMBER_TYPE_IDX] = shortName(ctor.getDeclaringClass());
 result[MEMBER_NAME_IDX] = ctor.getName();
-Class[] params = ctor.getParameterTypes();
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j]));
-if (j < (params.length - 1)) sb.append(", ");
-}
-result[MEMBER_PARAMS_IDX] = sb.toString();
-sb.setLength(0);
-Class[] exceptions = ctor.getExceptionTypes();
-for (int k = 0; k < exceptions.length; k++) {
-sb.append(shortName(exceptions[k]));
-if (k < (exceptions.length - 1)) sb.append(", ");
-}
-result[MEMBER_EXCEPTIONS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = makeParamsInfo(ctor.getParameterTypes());
+result[MEMBER_EXCEPTIONS_IDX] = 
makeExceptionInfo(ctor.getExceptionTypes());
+
 return withoutNulls(result);
 }
 
@@ -287,11 +281,14 @@ public class Inspector {
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
 result[MEMBER_NAME_IDX] = method.getName();
 CachedClass[] params = method.getPara

groovy git commit: Minor refactoring: remove duplicated code of `Inspector`

2018-04-18 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 264985f7f -> ca44609c4


Minor refactoring: remove duplicated code of `Inspector`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/ca44609c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/ca44609c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/ca44609c

Branch: refs/heads/master
Commit: ca44609c4dfa33b17a974689fe7abcbc2dad8bcc
Parents: 264985f
Author: sunlan 
Authored: Wed Apr 18 19:06:14 2018 +0800
Committer: sunlan 
Committed: Wed Apr 18 19:06:14 2018 +0800

--
 src/main/groovy/groovy/inspect/Inspector.java | 61 ++
 1 file changed, 29 insertions(+), 32 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/ca44609c/src/main/groovy/groovy/inspect/Inspector.java
--
diff --git a/src/main/groovy/groovy/inspect/Inspector.java 
b/src/main/groovy/groovy/inspect/Inspector.java
index f0c94a7..b8ad561 100644
--- a/src/main/groovy/groovy/inspect/Inspector.java
+++ b/src/main/groovy/groovy/inspect/Inspector.java
@@ -228,53 +228,47 @@ public class Inspector {
 return className;
 }
 
+private static String makeTypesInfo(Class[] types) {
+StringBuilder sb = new StringBuilder(32);
+for (int k = 0; k < types.length; k++) {
+sb.append(shortName(types[k]));
+if (k < (types.length - 1)) sb.append(", ");
+}
+
+return sb.toString();
+}
+
+private static String makeParamsInfo(Class[] params) {
+return makeTypesInfo(params);
+}
+
+private static String makeExceptionInfo(Class[] exceptions) {
+return makeTypesInfo(exceptions);
+}
+
 protected String[] methodInfo(Method method) {
 String[] result = new String[MEMBER_EXCEPTIONS_IDX + 1];
-int mod = method.getModifiers();
 result[MEMBER_ORIGIN_IDX] = JAVA;
 result[MEMBER_DECLARER_IDX] = shortName(method.getDeclaringClass());
-result[MEMBER_MODIFIER_IDX] = Modifier.toString(mod);
+result[MEMBER_MODIFIER_IDX] = Modifier.toString(method.getModifiers());
 result[MEMBER_NAME_IDX] = method.getName();
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
-Class[] params = method.getParameterTypes();
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j]));
-if (j < (params.length - 1)) sb.append(", ");
-}
-result[MEMBER_PARAMS_IDX] = sb.toString();
-sb.setLength(0);
-Class[] exceptions = method.getExceptionTypes();
-for (int k = 0; k < exceptions.length; k++) {
-sb.append(shortName(exceptions[k]));
-if (k < (exceptions.length - 1)) sb.append(", ");
-}
-result[MEMBER_EXCEPTIONS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = makeParamsInfo(method.getParameterTypes());
+result[MEMBER_EXCEPTIONS_IDX] = 
makeExceptionInfo(method.getExceptionTypes());
+
 return withoutNulls(result);
 }
 
 protected String[] methodInfo(Constructor ctor) {
 String[] result = new String[MEMBER_EXCEPTIONS_IDX + 1];
-int mod = ctor.getModifiers();
 result[MEMBER_ORIGIN_IDX] = JAVA;
-result[MEMBER_MODIFIER_IDX] = Modifier.toString(mod);
+result[MEMBER_MODIFIER_IDX] = Modifier.toString(ctor.getModifiers());
 result[MEMBER_DECLARER_IDX] = shortName(ctor.getDeclaringClass());
 result[MEMBER_TYPE_IDX] = shortName(ctor.getDeclaringClass());
 result[MEMBER_NAME_IDX] = ctor.getName();
-Class[] params = ctor.getParameterTypes();
-StringBuilder sb = new StringBuilder();
-for (int j = 0; j < params.length; j++) {
-sb.append(shortName(params[j]));
-if (j < (params.length - 1)) sb.append(", ");
-}
-result[MEMBER_PARAMS_IDX] = sb.toString();
-sb.setLength(0);
-Class[] exceptions = ctor.getExceptionTypes();
-for (int k = 0; k < exceptions.length; k++) {
-sb.append(shortName(exceptions[k]));
-if (k < (exceptions.length - 1)) sb.append(", ");
-}
-result[MEMBER_EXCEPTIONS_IDX] = sb.toString();
+result[MEMBER_PARAMS_IDX] = makeParamsInfo(ctor.getParameterTypes());
+result[MEMBER_EXCEPTIONS_IDX] = 
makeExceptionInfo(ctor.getExceptionTypes());
+
 return withoutNulls(result);
 }
 
@@ -287,11 +281,14 @@ public class Inspector {
 result[MEMBER_TYPE_IDX] = shortName(method.getReturnType());
 result[MEMBER_NAME_IDX] = method.getName();
 CachedClass[] params = method.getParameterTypes();
+
+// TODO reuse `makeParam

[1/3] groovy git commit: Minor refactoring: remove duplicated code of `ResolveVisitor`

2018-04-05 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X e6be8292a -> d270c7db2


Minor refactoring: remove duplicated code of `ResolveVisitor`

(cherry picked from commit 24114e0)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/9a64ed4a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/9a64ed4a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/9a64ed4a

Branch: refs/heads/GROOVY_2_5_X
Commit: 9a64ed4a9bb070651d44e4a3fa30a7801f389228
Parents: e6be829
Author: danielsun1106 
Authored: Fri Apr 6 12:54:59 2018 +0800
Committer: danielsun1106 
Committed: Fri Apr 6 14:15:22 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 50 +---
 1 file changed, 23 insertions(+), 27 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/9a64ed4a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 43a1dc1..2f82009 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -790,19 +790,8 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return null;
 }
 String varName = ve.getName();
-if (doInitialClassTest) {
-// we are at the first name part. This is the right most 
part.
-// If this part is in lower case, then we do not need a 
class
-// check. other parts of the property expression will be 
tested
-// by a different method call to this method, so 
foo.Bar.bar
-// can still be resolved to the class foo.Bar and the 
static
-// field bar.
-if (!testVanillaNameForClass(varName)) return null;
-doInitialClassTest = false;
-name = new StringBuilder(varName);
-} else {
-name.insert(0, varName + ".");
-}
+name = getClassName(doInitialClassTest, name, varName);
+if (name == null) return null;
 break;
 }
 // anything other than PropertyExpressions or
@@ -816,25 +805,32 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 if (propertyPart == null || propertyPart.equals("class")) {
 return null;
 }
-if (doInitialClassTest) {
-// we are at the first name part. This is the right most 
part.
-// If this part is in lower case, then we do not need a 
class
-// check. other parts of the property expression will be 
tested
-// by a different method call to this method, so 
foo.Bar.bar
-// can still be resolved to the class foo.Bar and the 
static
-// field bar.
-if (!testVanillaNameForClass(propertyPart)) return null;
-doInitialClassTest= false;
-name = new StringBuilder(propertyPart);
-} else {
-name.insert(0, propertyPart + ".");
-}
+name = getClassName(doInitialClassTest, name, propertyPart);
 }
 }
-if (name.length() == 0) return null;
+
+if (null == name || name.length() == 0) return null;
+
 return name.toString();
 }
 
+private static StringBuilder getClassName(boolean doInitialClassTest, 
StringBuilder name, String varName) {
+if (doInitialClassTest) {
+// we are at the first name part. This is the right most part.
+// If this part is in lower case, then we do not need a class
+// check. other parts of the property expression will be tested
+// by a different method call to this method, so foo.Bar.bar
+// can still be resolved to the class foo.Bar and the static
+// field bar.
+if (!testVanillaNameForClass(varName)) return null;
+doInitialClassTest = false;
+name = new StringBuilder(varName);
+} else {
+name.insert(0, varName + ".");
+}
+return name;
+}
+
 // iterate from the inner most to the outer and check for classes
 // this check will ignore a .class property, for Example Integer.class 
will be
 // a PropertyExpression with the ClassExpression of Integer as 
objectExpression



[1/3] groovy git commit: Minor refactoring: remove duplicated code of `ResolveVisitor`

2018-04-05 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 2b07b33a5 -> e8c404ddf


Minor refactoring: remove duplicated code of `ResolveVisitor`

(cherry picked from commit 24114e0)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/84930c13
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/84930c13
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/84930c13

Branch: refs/heads/GROOVY_2_6_X
Commit: 84930c1308013de8135bf445abb7bdc22b4df5b3
Parents: 2b07b33
Author: danielsun1106 
Authored: Fri Apr 6 12:54:59 2018 +0800
Committer: danielsun1106 
Committed: Fri Apr 6 14:14:36 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 50 +---
 1 file changed, 23 insertions(+), 27 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/84930c13/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 43a1dc1..2f82009 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -790,19 +790,8 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return null;
 }
 String varName = ve.getName();
-if (doInitialClassTest) {
-// we are at the first name part. This is the right most 
part.
-// If this part is in lower case, then we do not need a 
class
-// check. other parts of the property expression will be 
tested
-// by a different method call to this method, so 
foo.Bar.bar
-// can still be resolved to the class foo.Bar and the 
static
-// field bar.
-if (!testVanillaNameForClass(varName)) return null;
-doInitialClassTest = false;
-name = new StringBuilder(varName);
-} else {
-name.insert(0, varName + ".");
-}
+name = getClassName(doInitialClassTest, name, varName);
+if (name == null) return null;
 break;
 }
 // anything other than PropertyExpressions or
@@ -816,25 +805,32 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 if (propertyPart == null || propertyPart.equals("class")) {
 return null;
 }
-if (doInitialClassTest) {
-// we are at the first name part. This is the right most 
part.
-// If this part is in lower case, then we do not need a 
class
-// check. other parts of the property expression will be 
tested
-// by a different method call to this method, so 
foo.Bar.bar
-// can still be resolved to the class foo.Bar and the 
static
-// field bar.
-if (!testVanillaNameForClass(propertyPart)) return null;
-doInitialClassTest= false;
-name = new StringBuilder(propertyPart);
-} else {
-name.insert(0, propertyPart + ".");
-}
+name = getClassName(doInitialClassTest, name, propertyPart);
 }
 }
-if (name.length() == 0) return null;
+
+if (null == name || name.length() == 0) return null;
+
 return name.toString();
 }
 
+private static StringBuilder getClassName(boolean doInitialClassTest, 
StringBuilder name, String varName) {
+if (doInitialClassTest) {
+// we are at the first name part. This is the right most part.
+// If this part is in lower case, then we do not need a class
+// check. other parts of the property expression will be tested
+// by a different method call to this method, so foo.Bar.bar
+// can still be resolved to the class foo.Bar and the static
+// field bar.
+if (!testVanillaNameForClass(varName)) return null;
+doInitialClassTest = false;
+name = new StringBuilder(varName);
+} else {
+name.insert(0, varName + ".");
+}
+return name;
+}
+
 // iterate from the inner most to the outer and check for classes
 // this check will ignore a .class property, for Example Integer.class 
will be
 // a PropertyExpression with the ClassExpression of Integer as 
objectExpression



groovy git commit: Minor refactoring: remove duplicated code of `ResolveVisitor`

2018-04-05 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 742770d04 -> 24114e01f


Minor refactoring: remove duplicated code of `ResolveVisitor`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/24114e01
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/24114e01
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/24114e01

Branch: refs/heads/master
Commit: 24114e01f8a1fc44b776c9a64c2df50ebc8f7fe9
Parents: 742770d
Author: danielsun1106 
Authored: Fri Apr 6 12:54:59 2018 +0800
Committer: danielsun1106 
Committed: Fri Apr 6 12:54:59 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 50 +---
 1 file changed, 23 insertions(+), 27 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/24114e01/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 43a1dc1..2f82009 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -790,19 +790,8 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 return null;
 }
 String varName = ve.getName();
-if (doInitialClassTest) {
-// we are at the first name part. This is the right most 
part.
-// If this part is in lower case, then we do not need a 
class
-// check. other parts of the property expression will be 
tested
-// by a different method call to this method, so 
foo.Bar.bar
-// can still be resolved to the class foo.Bar and the 
static
-// field bar.
-if (!testVanillaNameForClass(varName)) return null;
-doInitialClassTest = false;
-name = new StringBuilder(varName);
-} else {
-name.insert(0, varName + ".");
-}
+name = getClassName(doInitialClassTest, name, varName);
+if (name == null) return null;
 break;
 }
 // anything other than PropertyExpressions or
@@ -816,25 +805,32 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 if (propertyPart == null || propertyPart.equals("class")) {
 return null;
 }
-if (doInitialClassTest) {
-// we are at the first name part. This is the right most 
part.
-// If this part is in lower case, then we do not need a 
class
-// check. other parts of the property expression will be 
tested
-// by a different method call to this method, so 
foo.Bar.bar
-// can still be resolved to the class foo.Bar and the 
static
-// field bar.
-if (!testVanillaNameForClass(propertyPart)) return null;
-doInitialClassTest= false;
-name = new StringBuilder(propertyPart);
-} else {
-name.insert(0, propertyPart + ".");
-}
+name = getClassName(doInitialClassTest, name, propertyPart);
 }
 }
-if (name.length() == 0) return null;
+
+if (null == name || name.length() == 0) return null;
+
 return name.toString();
 }
 
+private static StringBuilder getClassName(boolean doInitialClassTest, 
StringBuilder name, String varName) {
+if (doInitialClassTest) {
+// we are at the first name part. This is the right most part.
+// If this part is in lower case, then we do not need a class
+// check. other parts of the property expression will be tested
+// by a different method call to this method, so foo.Bar.bar
+// can still be resolved to the class foo.Bar and the static
+// field bar.
+if (!testVanillaNameForClass(varName)) return null;
+doInitialClassTest = false;
+name = new StringBuilder(varName);
+} else {
+name.insert(0, varName + ".");
+}
+return name;
+}
+
 // iterate from the inner most to the outer and check for classes
 // this check will ignore a .class property, for Example Integer.class 
will be
 // a PropertyExpression with the ClassExpression of Integer as 
objectExpression



[2/2] groovy git commit: Minor refactoring: remove duplicated code of `SAXBuilder`

2018-03-19 Thread sunlan
Minor refactoring: remove duplicated code of `SAXBuilder`

(cherry picked from commit 8ff0430)

(cherry picked from commit be1f3bb)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/a31a5e82
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/a31a5e82
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/a31a5e82

Branch: refs/heads/GROOVY_2_5_X
Commit: a31a5e825c246497a3ceef76cef87d36ae10edae
Parents: cf9ff18
Author: danielsun1106 
Authored: Mon Mar 19 22:58:09 2018 +0800
Committer: danielsun1106 
Committed: Mon Mar 19 23:24:04 2018 +0800

--
 .../src/main/java/groovy/xml/SAXBuilder.java| 75 ++--
 1 file changed, 36 insertions(+), 39 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/a31a5e82/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
--
diff --git a/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java 
b/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
index 70dcc96..270e603 100644
--- a/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
+++ b/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
@@ -18,6 +18,7 @@
  */
 package groovy.xml;
 
+import groovy.lang.Tuple3;
 import groovy.util.BuilderSupport;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
@@ -74,20 +75,12 @@ public class SAXBuilder extends BuilderSupport {
 Map.Entry entry = (Map.Entry) iter.next();
 Object key = entry.getKey();
 Object value = entry.getValue();
-String uri = "";
-String localName = null;
-String qualifiedName = "";
+
+Tuple3 elementInfo = getElementInfo(key);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
 String valueText = (value != null) ? value.toString() : "";
-if (key instanceof QName) {
-QName qname = (QName) key;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = key.toString();
-qualifiedName = localName;
-}
 
 attributes.addAttribute(uri, localName, qualifiedName, "CDATA", 
valueText);
 }
@@ -99,19 +92,11 @@ public class SAXBuilder extends BuilderSupport {
 }
 
 protected void doStartElement(Object name, Attributes attributes) {
-String uri = "";
-String localName = null;
-String qualifiedName = "";
-if (name instanceof QName) {
-QName qname = (QName) name;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = name.toString();
-qualifiedName = localName;
-}
+Tuple3 elementInfo = getElementInfo(name);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
+
 try {
 handler.startElement(uri, localName, qualifiedName, attributes);
 }
@@ -121,19 +106,11 @@ public class SAXBuilder extends BuilderSupport {
 }
 
 protected void nodeCompleted(Object parent, Object name) {
-String uri = "";
-String localName = null;
-String qualifiedName = "";
-if (name instanceof QName) {
-QName qname = (QName) name;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = name.toString();
-qualifiedName = localName;
-}
+Tuple3 elementInfo = getElementInfo(name);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
+
 try {
 handler.endElement(uri, localName, qualifiedName);
 }
@@ -152,4 +129,24 @@ public class SAXBuilder extends BuilderSupport {
 protected Object createNode(Object name, Map attributes) {
 return createNode(name, attributes, null);
 }
+
+
+private Tuple3 getElementInfo(Object name) {
+String uri;
+String localName;
+String qualifiedName;
+
+if (name instanceof QName) {
+QName qname = (QName) name;
+uri = qname.getNamespaceURI();
+localName = qname.getLocalPart();
+qualifiedNa

[1/2] groovy git commit: Minor refactoring: remove duplicated code of `SAXBuilder`

2018-03-19 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X a11eddb03 -> 90cda8cf0


Minor refactoring: remove duplicated code of `SAXBuilder`

(cherry picked from commit 8ff0430)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/be1f3bbc
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/be1f3bbc
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/be1f3bbc

Branch: refs/heads/GROOVY_2_6_X
Commit: be1f3bbc4b5bca07df47d27c64c8e6182d1a77db
Parents: a11eddb
Author: danielsun1106 
Authored: Mon Mar 19 22:58:09 2018 +0800
Committer: danielsun1106 
Committed: Mon Mar 19 23:22:24 2018 +0800

--
 .../src/main/java/groovy/xml/SAXBuilder.java| 75 ++--
 1 file changed, 36 insertions(+), 39 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/be1f3bbc/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
--
diff --git a/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java 
b/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
index 70dcc96..270e603 100644
--- a/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
+++ b/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
@@ -18,6 +18,7 @@
  */
 package groovy.xml;
 
+import groovy.lang.Tuple3;
 import groovy.util.BuilderSupport;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
@@ -74,20 +75,12 @@ public class SAXBuilder extends BuilderSupport {
 Map.Entry entry = (Map.Entry) iter.next();
 Object key = entry.getKey();
 Object value = entry.getValue();
-String uri = "";
-String localName = null;
-String qualifiedName = "";
+
+Tuple3 elementInfo = getElementInfo(key);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
 String valueText = (value != null) ? value.toString() : "";
-if (key instanceof QName) {
-QName qname = (QName) key;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = key.toString();
-qualifiedName = localName;
-}
 
 attributes.addAttribute(uri, localName, qualifiedName, "CDATA", 
valueText);
 }
@@ -99,19 +92,11 @@ public class SAXBuilder extends BuilderSupport {
 }
 
 protected void doStartElement(Object name, Attributes attributes) {
-String uri = "";
-String localName = null;
-String qualifiedName = "";
-if (name instanceof QName) {
-QName qname = (QName) name;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = name.toString();
-qualifiedName = localName;
-}
+Tuple3 elementInfo = getElementInfo(name);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
+
 try {
 handler.startElement(uri, localName, qualifiedName, attributes);
 }
@@ -121,19 +106,11 @@ public class SAXBuilder extends BuilderSupport {
 }
 
 protected void nodeCompleted(Object parent, Object name) {
-String uri = "";
-String localName = null;
-String qualifiedName = "";
-if (name instanceof QName) {
-QName qname = (QName) name;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = name.toString();
-qualifiedName = localName;
-}
+Tuple3 elementInfo = getElementInfo(name);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
+
 try {
 handler.endElement(uri, localName, qualifiedName);
 }
@@ -152,4 +129,24 @@ public class SAXBuilder extends BuilderSupport {
 protected Object createNode(Object name, Map attributes) {
 return createNode(name, attributes, null);
 }
+
+
+private Tuple3 getElementInfo(Object name) {
+String uri;
+String localName;
+String qualifiedName;
+
+if (name instanceof QName) {
+QName qname = (QName) name;
+uri = qname.getNamespaceURI();
+localNa

groovy git commit: Minor refactoring: remove duplicated code of `SAXBuilder`

2018-03-19 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 754688322 -> 8ff04301a


Minor refactoring: remove duplicated code of `SAXBuilder`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8ff04301
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8ff04301
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8ff04301

Branch: refs/heads/master
Commit: 8ff04301aa1715587fc38b097ad8a5687f1517b6
Parents: 7546883
Author: danielsun1106 
Authored: Mon Mar 19 22:58:09 2018 +0800
Committer: danielsun1106 
Committed: Mon Mar 19 22:58:09 2018 +0800

--
 .../src/main/java/groovy/xml/SAXBuilder.java| 75 ++--
 1 file changed, 36 insertions(+), 39 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/8ff04301/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
--
diff --git a/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java 
b/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
index 70dcc96..270e603 100644
--- a/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
+++ b/subprojects/groovy-xml/src/main/java/groovy/xml/SAXBuilder.java
@@ -18,6 +18,7 @@
  */
 package groovy.xml;
 
+import groovy.lang.Tuple3;
 import groovy.util.BuilderSupport;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
@@ -74,20 +75,12 @@ public class SAXBuilder extends BuilderSupport {
 Map.Entry entry = (Map.Entry) iter.next();
 Object key = entry.getKey();
 Object value = entry.getValue();
-String uri = "";
-String localName = null;
-String qualifiedName = "";
+
+Tuple3 elementInfo = getElementInfo(key);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
 String valueText = (value != null) ? value.toString() : "";
-if (key instanceof QName) {
-QName qname = (QName) key;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = key.toString();
-qualifiedName = localName;
-}
 
 attributes.addAttribute(uri, localName, qualifiedName, "CDATA", 
valueText);
 }
@@ -99,19 +92,11 @@ public class SAXBuilder extends BuilderSupport {
 }
 
 protected void doStartElement(Object name, Attributes attributes) {
-String uri = "";
-String localName = null;
-String qualifiedName = "";
-if (name instanceof QName) {
-QName qname = (QName) name;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = name.toString();
-qualifiedName = localName;
-}
+Tuple3 elementInfo = getElementInfo(name);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
+
 try {
 handler.startElement(uri, localName, qualifiedName, attributes);
 }
@@ -121,19 +106,11 @@ public class SAXBuilder extends BuilderSupport {
 }
 
 protected void nodeCompleted(Object parent, Object name) {
-String uri = "";
-String localName = null;
-String qualifiedName = "";
-if (name instanceof QName) {
-QName qname = (QName) name;
-uri = qname.getNamespaceURI();
-localName = qname.getLocalPart();
-qualifiedName = qname.getQualifiedName();
-}
-else {
-localName = name.toString();
-qualifiedName = localName;
-}
+Tuple3 elementInfo = getElementInfo(name);
+String uri = elementInfo.getFirst();
+String localName = elementInfo.getSecond();
+String qualifiedName = elementInfo.getThird();
+
 try {
 handler.endElement(uri, localName, qualifiedName);
 }
@@ -152,4 +129,24 @@ public class SAXBuilder extends BuilderSupport {
 protected Object createNode(Object name, Map attributes) {
 return createNode(name, attributes, null);
 }
+
+
+private Tuple3 getElementInfo(Object name) {
+String uri;
+String localName;
+String qualifiedName;
+
+if (name instanceof QName) {
+QName qname = (QName) name;
+uri = qname.getNamespaceURI();
+localName = qname.getLocalPart();
+qualified

groovy git commit: Minor refactoring for `syntheticPublic` determination

2018-03-17 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 5e1e3a407 -> a11eddb03


Minor refactoring for `syntheticPublic` determination


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/a11eddb0
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/a11eddb0
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/a11eddb0

Branch: refs/heads/GROOVY_2_6_X
Commit: a11eddb03fe06ceb12a76ec0fddc121708520180
Parents: 5e1e3a4
Author: danielsun1106 
Authored: Sun Mar 18 00:25:41 2018 +0800
Committer: danielsun1106 
Committed: Sun Mar 18 00:25:41 2018 +0800

--
 .../apache/groovy/parser/antlr4/AstBuilder.java | 51 
 .../groovy/parser/antlr4/ModifierManager.java   | 17 ---
 2 files changed, 21 insertions(+), 47 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/a11eddb0/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index f1e35d4..4f80260 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -1283,7 +1283,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 if(memberDeclarationContext != null) {
 MethodDeclarationContext methodDeclarationContext = 
memberDeclarationContext.methodDeclaration();
 if (methodDeclarationContext != null) {
-if 
(createModifierManager(methodDeclarationContext).contains(DEFAULT)) {
+if 
(createModifierManager(methodDeclarationContext).containsAny(DEFAULT)) {
 return true;
 }
 }
@@ -1573,7 +1573,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 ModifierManager modifierManager = createModifierManager(ctx);
 
-if (modifierManager.contains(VAR)) {
+if (modifierManager.containsAny(VAR)) {
 throw createParsingFailedException("var cannot be used for method 
declarations", ctx);
 }
 
@@ -1608,7 +1608,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 asBoolean(ctx.returnType()),
 modifierManager));
 
-if (modifierManager.contains(STATIC)) {
+if (modifierManager.containsAny(STATIC)) {
 for (Parameter e : methodNode.getParameters()) {
 e.setInStaticContext(true);
 }
@@ -1658,7 +1658,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 }
 
 boolean isInterfaceOrAbstractClass = asBoolean(classNode) && 
classNode.isAbstract() && !classNode.isAnnotationDefinition();
-if (isInterfaceOrAbstractClass && 
!modifierManager.contains(DEFAULT) && isAbstractMethod && hasMethodBody) {
+if (isInterfaceOrAbstractClass && 
!modifierManager.containsAny(DEFAULT) && isAbstractMethod && hasMethodBody) {
 throw createParsingFailedException("You defined an abstract 
method[" + methodNode.getName() + "] with body. Try removing the method body" + 
(classNode.isInterface() ? ", or declare it default" : ""), methodNode);
 }
 }
@@ -1675,7 +1675,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 methodNode =
 new MethodNode(
 methodName,
-modifierManager.contains(PRIVATE) ? 
Opcodes.ACC_PRIVATE : Opcodes.ACC_PUBLIC,
+modifierManager.containsAny(PRIVATE) ? 
Opcodes.ACC_PRIVATE : Opcodes.ACC_PUBLIC,
 returnType,
 parameters,
 exceptions,
@@ -1720,7 +1720,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 }
 
-modifiers |= !modifierManager.contains(STATIC) && 
(classNode.isInterface() || (isTrue(classNode, 
IS_INTERFACE_WITH_DEFAULT_METHODS) && !modifierManager.contains(DEFAULT))) ? 
Opcodes.ACC_ABSTRACT : 0;
+modifiers |= !modifierManager.containsAny(STATIC) && 
(classNode.isInterface() || (isTrue(classNode, 
IS_INTERFACE_WITH_DEFAULT_METHODS) && !modifierManager.containsAny(DEFAULT))) ? 
Opcodes.ACC_ABSTRACT : 0;
 
 checkWhetherMethodNodeWithSameSignatureExists(classNode, methodName, 
parameters, ctx);
 
@@ -4489,38 +4489,8 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements G

groovy git commit: Minor refactoring for `syntheticPublic` determination

2018-03-17 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 4ba0b72b2 -> 754688322


Minor refactoring for `syntheticPublic` determination


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/75468832
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/75468832
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/75468832

Branch: refs/heads/master
Commit: 7546883220e7839cb4daf7fd0ac5e58b3aa2064c
Parents: 4ba0b72
Author: danielsun1106 
Authored: Sun Mar 18 00:10:16 2018 +0800
Committer: danielsun1106 
Committed: Sun Mar 18 00:10:16 2018 +0800

--
 .../apache/groovy/parser/antlr4/AstBuilder.java | 51 
 .../groovy/parser/antlr4/ModifierManager.java   | 21 ++--
 2 files changed, 26 insertions(+), 46 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/75468832/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 5af6995..f7f182d 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -1271,7 +1271,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 .filter(Objects::nonNull).reduce(new 
LinkedList(), (r, e) -> {
 MethodDeclarationContext methodDeclarationContext = 
(MethodDeclarationContext) e;
 
-if 
(createModifierManager(methodDeclarationContext).contains(DEFAULT)) {
+if 
(createModifierManager(methodDeclarationContext).containsAny(DEFAULT)) {
 ((List) r).add(methodDeclarationContext);
 }
 
@@ -1551,7 +1551,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 ModifierManager modifierManager = createModifierManager(ctx);
 
-if (modifierManager.contains(VAR)) {
+if (modifierManager.containsAny(VAR)) {
 throw createParsingFailedException("var cannot be used for method 
declarations", ctx);
 }
 
@@ -1584,7 +1584,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 asBoolean(ctx.returnType()),
 modifierManager));
 
-if (modifierManager.contains(STATIC)) {
+if (modifierManager.containsAny(STATIC)) {
 for (Parameter parameter : methodNode.getParameters()) {
 parameter.setInStaticContext(true);
 }
@@ -1635,7 +1635,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 }
 
 boolean isInterfaceOrAbstractClass = asBoolean(classNode) && 
classNode.isAbstract() && !classNode.isAnnotationDefinition();
-if (isInterfaceOrAbstractClass && 
!modifierManager.contains(DEFAULT) && isAbstractMethod && hasMethodBody) {
+if (isInterfaceOrAbstractClass && 
!modifierManager.containsAny(DEFAULT) && isAbstractMethod && hasMethodBody) {
 throw createParsingFailedException("You defined an abstract 
method[" + methodNode.getName() + "] with body. Try removing the method body" + 
(classNode.isInterface() ? ", or declare it default" : ""), methodNode);
 }
 }
@@ -1652,7 +1652,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 methodNode =
 new MethodNode(
 methodName,
-modifierManager.contains(PRIVATE) ? 
Opcodes.ACC_PRIVATE : Opcodes.ACC_PUBLIC,
+modifierManager.containsAny(PRIVATE) ? 
Opcodes.ACC_PRIVATE : Opcodes.ACC_PUBLIC,
 returnType,
 parameters,
 exceptions,
@@ -1697,7 +1697,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 
 }
 
-modifiers |= !modifierManager.contains(STATIC) && 
(classNode.isInterface() || (isTrue(classNode, 
IS_INTERFACE_WITH_DEFAULT_METHODS) && !modifierManager.contains(DEFAULT))) ? 
Opcodes.ACC_ABSTRACT : 0;
+modifiers |= !modifierManager.containsAny(STATIC) && 
(classNode.isInterface() || (isTrue(classNode, 
IS_INTERFACE_WITH_DEFAULT_METHODS) && !modifierManager.containsAny(DEFAULT))) ? 
Opcodes.ACC_ABSTRACT : 0;
 
 checkWhetherMethodNodeWithSameSignatureExists(classNode, methodName, 
parameters, ctx);
 
@@ -4400,38 +4400,8 @@ public class AstBuilder extends 
GroovyParserBaseVisitor implements Groov
 boo

groovy git commit: Minor refactoring: extract common method of MetaMethodSite subclasses

2018-03-11 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X f5c50875b -> 2f9dcb49a


Minor refactoring: extract common method of MetaMethodSite subclasses

(cherry picked from commit af98abb)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2f9dcb49
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2f9dcb49
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2f9dcb49

Branch: refs/heads/GROOVY_2_5_X
Commit: 2f9dcb49a6de5ab662a085658d92c68b6b842416
Parents: f5c5087
Author: sunlan 
Authored: Mon Mar 12 08:27:26 2018 +0800
Committer: sunlan 
Committed: Mon Mar 12 09:16:14 2018 +0800

--
 .../callsite/PlainObjectMetaMethodSite.java | 53 
 .../runtime/callsite/PogoMetaMethodSite.java| 36 ++---
 .../runtime/callsite/PojoMetaMethodSite.java| 36 ++---
 3 files changed, 61 insertions(+), 64 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/2f9dcb49/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
new file mode 100644
index 000..b396e26
--- /dev/null
+++ 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.codehaus.groovy.runtime.callsite;
+
+import groovy.lang.GroovyRuntimeException;
+import groovy.lang.MetaClass;
+import groovy.lang.MetaMethod;
+import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * Plain ordinary object call site
+ *   meta class - cached
+ *   method - cached
+ *
+ */
+public abstract class PlainObjectMetaMethodSite extends MetaMethodSite {
+public PlainObjectMetaMethodSite(CallSite site, MetaClass metaClass, 
MetaMethod metaMethod, Class[] params) {
+super(site, metaClass, metaMethod, params);
+}
+
+protected static Object doInvoke(Object receiver, Object[] args, Method 
reflect) throws Throwable {
+try {
+return reflect.invoke(receiver, args);
+} catch (InvocationTargetException e) {
+Throwable cause = e.getCause();
+if (cause instanceof GroovyRuntimeException) {
+throw ScriptBytecodeAdapter.unwrap ((GroovyRuntimeException) 
cause);
+} else {
+throw cause;
+}
+}
+}
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/2f9dcb49/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
index 243e62d..5240f34 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
@@ -27,7 +27,6 @@ import org.codehaus.groovy.runtime.GroovyCategorySupport;
 import org.codehaus.groovy.runtime.MetaClassHelper;
 import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
 
-import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /**
@@ -35,7 +34,7 @@ import java.lang.reflect.Method;
  *   meta class - cached
  *   method - cached
 */
-public class PogoMetaMethodSite extends MetaMethodSite {
+public class PogoMetaMethodSite extends PlainObjectMetaMethodSite {
 private final int version;
 private final boolean skipVersionCheck;
 public PogoMetaMethodSite(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class params[]) {
@@ -165,16 +164,7 @@ public class PogoMetaMethodSite extends MetaMethodSite {

groovy git commit: Minor refactoring: extract common method of MetaMethodSite subclasses

2018-03-11 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 4d4bd1b12 -> 64c279899


Minor refactoring: extract common method of MetaMethodSite subclasses

(cherry picked from commit af98abb)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/64c27989
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/64c27989
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/64c27989

Branch: refs/heads/GROOVY_2_6_X
Commit: 64c279899c30f99bed754b6edf91ef372d5336a8
Parents: 4d4bd1b
Author: sunlan 
Authored: Mon Mar 12 08:27:26 2018 +0800
Committer: sunlan 
Committed: Mon Mar 12 09:15:04 2018 +0800

--
 .../callsite/PlainObjectMetaMethodSite.java | 53 
 .../runtime/callsite/PogoMetaMethodSite.java| 36 ++---
 .../runtime/callsite/PojoMetaMethodSite.java| 36 ++---
 3 files changed, 61 insertions(+), 64 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/64c27989/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
new file mode 100644
index 000..b396e26
--- /dev/null
+++ 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.codehaus.groovy.runtime.callsite;
+
+import groovy.lang.GroovyRuntimeException;
+import groovy.lang.MetaClass;
+import groovy.lang.MetaMethod;
+import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * Plain ordinary object call site
+ *   meta class - cached
+ *   method - cached
+ *
+ */
+public abstract class PlainObjectMetaMethodSite extends MetaMethodSite {
+public PlainObjectMetaMethodSite(CallSite site, MetaClass metaClass, 
MetaMethod metaMethod, Class[] params) {
+super(site, metaClass, metaMethod, params);
+}
+
+protected static Object doInvoke(Object receiver, Object[] args, Method 
reflect) throws Throwable {
+try {
+return reflect.invoke(receiver, args);
+} catch (InvocationTargetException e) {
+Throwable cause = e.getCause();
+if (cause instanceof GroovyRuntimeException) {
+throw ScriptBytecodeAdapter.unwrap ((GroovyRuntimeException) 
cause);
+} else {
+throw cause;
+}
+}
+}
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/64c27989/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
index 243e62d..5240f34 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
@@ -27,7 +27,6 @@ import org.codehaus.groovy.runtime.GroovyCategorySupport;
 import org.codehaus.groovy.runtime.MetaClassHelper;
 import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
 
-import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /**
@@ -35,7 +34,7 @@ import java.lang.reflect.Method;
  *   meta class - cached
  *   method - cached
 */
-public class PogoMetaMethodSite extends MetaMethodSite {
+public class PogoMetaMethodSite extends PlainObjectMetaMethodSite {
 private final int version;
 private final boolean skipVersionCheck;
 public PogoMetaMethodSite(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class params[]) {
@@ -165,16 +164,7 @@ public class PogoMetaMethodSite extends MetaMethodSite {

groovy git commit: Minor refactoring: extract common method of MetaMethodSite subclasses

2018-03-11 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master b3e042191 -> af98abb4d


Minor refactoring: extract common method of MetaMethodSite subclasses


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/af98abb4
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/af98abb4
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/af98abb4

Branch: refs/heads/master
Commit: af98abb4de171525214df1392dd5057a7397b041
Parents: b3e0421
Author: sunlan 
Authored: Mon Mar 12 08:27:26 2018 +0800
Committer: sunlan 
Committed: Mon Mar 12 08:27:26 2018 +0800

--
 .../callsite/PlainObjectMetaMethodSite.java | 53 
 .../runtime/callsite/PogoMetaMethodSite.java| 36 ++---
 .../runtime/callsite/PojoMetaMethodSite.java| 36 ++---
 3 files changed, 61 insertions(+), 64 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/af98abb4/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
new file mode 100644
index 000..b396e26
--- /dev/null
+++ 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PlainObjectMetaMethodSite.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.codehaus.groovy.runtime.callsite;
+
+import groovy.lang.GroovyRuntimeException;
+import groovy.lang.MetaClass;
+import groovy.lang.MetaMethod;
+import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * Plain ordinary object call site
+ *   meta class - cached
+ *   method - cached
+ *
+ */
+public abstract class PlainObjectMetaMethodSite extends MetaMethodSite {
+public PlainObjectMetaMethodSite(CallSite site, MetaClass metaClass, 
MetaMethod metaMethod, Class[] params) {
+super(site, metaClass, metaMethod, params);
+}
+
+protected static Object doInvoke(Object receiver, Object[] args, Method 
reflect) throws Throwable {
+try {
+return reflect.invoke(receiver, args);
+} catch (InvocationTargetException e) {
+Throwable cause = e.getCause();
+if (cause instanceof GroovyRuntimeException) {
+throw ScriptBytecodeAdapter.unwrap ((GroovyRuntimeException) 
cause);
+} else {
+throw cause;
+}
+}
+}
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/af98abb4/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java 
b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
index 243e62d..5240f34 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaMethodSite.java
@@ -27,7 +27,6 @@ import org.codehaus.groovy.runtime.GroovyCategorySupport;
 import org.codehaus.groovy.runtime.MetaClassHelper;
 import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
 
-import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /**
@@ -35,7 +34,7 @@ import java.lang.reflect.Method;
  *   meta class - cached
  *   method - cached
 */
-public class PogoMetaMethodSite extends MetaMethodSite {
+public class PogoMetaMethodSite extends PlainObjectMetaMethodSite {
 private final int version;
 private final boolean skipVersionCheck;
 public PogoMetaMethodSite(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class params[]) {
@@ -165,16 +164,7 @@ public class PogoMetaMethodSite extends MetaMethodSite {
 public Object invoke(Object receiver, Object[] a

[1/2] groovy git commit: Minor refactoring: move type data to `TypeUtil` and simplify `isArray` implementation

2018-03-09 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 04937546b -> 1ad74d610


Minor refactoring: move type data to `TypeUtil` and simplify `isArray` 
implementation

(cherry picked from commit 20b2f3c)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/7863aa87
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/7863aa87
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/7863aa87

Branch: refs/heads/GROOVY_2_5_X
Commit: 7863aa87e7f15f26610f3375e7d53b8c4fa8b5e7
Parents: 0493754
Author: danielsun1106 
Authored: Sat Mar 10 01:54:25 2018 +0800
Committer: danielsun1106 
Committed: Sat Mar 10 03:05:08 2018 +0800

--
 .../groovy/classgen/asm/util/TypeUtil.java  | 16 +
 .../groovy/reflection/ReflectionCache.java  | 25 
 2 files changed, 21 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/7863aa87/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
index 483511d..23fbebc 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
@@ -140,6 +140,11 @@ public abstract class TypeUtil {
 return new Tuple2(type, dimension);
 }
 
+public static Class autoboxType(Class type) {
+final Class res = PRIMITIVE_TYPE_TO_WRAPPED_CLASS_MAP.get(type);
+return res == null ? type : res;
+}
+
 private static final String REF_DESCRIPTION = "L";
 private static final Map 
PRIMITIVE_TYPE_TO_DESCRIPTION_MAP = Maps.of(
 int_TYPE, "I",
@@ -197,4 +202,15 @@ public abstract class TypeUtil {
 Type.LONG_TYPE, "java/lang/Long",
 Type.SHORT_TYPE, "java/lang/Short"
 );
+
+private static final Map PRIMITIVE_TYPE_TO_WRAPPED_CLASS_MAP 
= Maps.of(
+byte.class, Byte.class,
+boolean.class, Boolean.class,
+char.class, Character.class,
+double.class, Double.class,
+float.class, Float.class,
+int.class, Integer.class,
+long.class, Long.class,
+short.class, Short.class
+);
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/7863aa87/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
--
diff --git a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java 
b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
index c9ea871..efedc95 100644
--- a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
+++ b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
@@ -18,28 +18,12 @@
  */
 package org.codehaus.groovy.reflection;
 
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.util.TripleKeyHashMap;
 
-import java.util.HashMap;
-import java.util.Map;
-
 public class ReflectionCache {
-private static final Map primitiveTypesMap = new HashMap();
-
-static {
-primitiveTypesMap.put(byte.class, Byte.class);
-primitiveTypesMap.put(boolean.class, Boolean.class);
-primitiveTypesMap.put(char.class, Character.class);
-primitiveTypesMap.put(double.class, Double.class);
-primitiveTypesMap.put(float.class, Float.class);
-primitiveTypesMap.put(int.class, Integer.class);
-primitiveTypesMap.put(long.class, Long.class);
-primitiveTypesMap.put(short.class, Short.class);
-}
-
 public static Class autoboxType(Class type) {
-final Class res = (Class) primitiveTypesMap.get(type);
-return res == null ? type : res;
+return TypeUtil.autoboxType(type);
 }
 
 static TripleKeyHashMap mopNames = new TripleKeyHashMap();
@@ -55,10 +39,11 @@ public class ReflectionCache {
 static final CachedClass STRING_CLASS = getCachedClass(String.class);
 
 public static boolean isArray(Class klazz) {
-  return klazz.getName().charAt(0) == '[';
+  return klazz.isArray();
 }
 
 static void setAssignableFrom(Class klazz, Class aClass) {
+// FIXME no implementation?
 //SoftDoubleKeyMap.Entry val = (SoftDoubleKeyMap.Entry) 
assignableMap.getOrPut(klazz, aClass, null);
 //if (val.getValue() == null) {
 //val.setValue(Boolean.TRUE);
@@ -107,7 +92,7 @@ public class ReflectionCache {
 if (klazz == null)
   return null;
 
-return ClassInfo.getClassInfo(klazz).getCachedClass ();
+return ClassInfo.getClassInfo(klazz).getCachedClass();
 }
 
 }



[1/2] groovy git commit: Minor refactoring: move type data to `TypeUtil` and simplify `isArray` implementation

2018-03-09 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 090db05f3 -> 17fe44d78


Minor refactoring: move type data to `TypeUtil` and simplify `isArray` 
implementation

(cherry picked from commit 20b2f3c)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/12468a48
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/12468a48
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/12468a48

Branch: refs/heads/GROOVY_2_6_X
Commit: 12468a48e82e3557e983dad54a006677a22cb78d
Parents: 090db05
Author: danielsun1106 
Authored: Sat Mar 10 01:54:25 2018 +0800
Committer: danielsun1106 
Committed: Sat Mar 10 03:04:13 2018 +0800

--
 .../groovy/classgen/asm/util/TypeUtil.java  | 16 +
 .../groovy/reflection/ReflectionCache.java  | 25 
 2 files changed, 21 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/12468a48/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
index 483511d..23fbebc 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
@@ -140,6 +140,11 @@ public abstract class TypeUtil {
 return new Tuple2(type, dimension);
 }
 
+public static Class autoboxType(Class type) {
+final Class res = PRIMITIVE_TYPE_TO_WRAPPED_CLASS_MAP.get(type);
+return res == null ? type : res;
+}
+
 private static final String REF_DESCRIPTION = "L";
 private static final Map 
PRIMITIVE_TYPE_TO_DESCRIPTION_MAP = Maps.of(
 int_TYPE, "I",
@@ -197,4 +202,15 @@ public abstract class TypeUtil {
 Type.LONG_TYPE, "java/lang/Long",
 Type.SHORT_TYPE, "java/lang/Short"
 );
+
+private static final Map PRIMITIVE_TYPE_TO_WRAPPED_CLASS_MAP 
= Maps.of(
+byte.class, Byte.class,
+boolean.class, Boolean.class,
+char.class, Character.class,
+double.class, Double.class,
+float.class, Float.class,
+int.class, Integer.class,
+long.class, Long.class,
+short.class, Short.class
+);
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/12468a48/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
--
diff --git a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java 
b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
index c9ea871..efedc95 100644
--- a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
+++ b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
@@ -18,28 +18,12 @@
  */
 package org.codehaus.groovy.reflection;
 
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.util.TripleKeyHashMap;
 
-import java.util.HashMap;
-import java.util.Map;
-
 public class ReflectionCache {
-private static final Map primitiveTypesMap = new HashMap();
-
-static {
-primitiveTypesMap.put(byte.class, Byte.class);
-primitiveTypesMap.put(boolean.class, Boolean.class);
-primitiveTypesMap.put(char.class, Character.class);
-primitiveTypesMap.put(double.class, Double.class);
-primitiveTypesMap.put(float.class, Float.class);
-primitiveTypesMap.put(int.class, Integer.class);
-primitiveTypesMap.put(long.class, Long.class);
-primitiveTypesMap.put(short.class, Short.class);
-}
-
 public static Class autoboxType(Class type) {
-final Class res = (Class) primitiveTypesMap.get(type);
-return res == null ? type : res;
+return TypeUtil.autoboxType(type);
 }
 
 static TripleKeyHashMap mopNames = new TripleKeyHashMap();
@@ -55,10 +39,11 @@ public class ReflectionCache {
 static final CachedClass STRING_CLASS = getCachedClass(String.class);
 
 public static boolean isArray(Class klazz) {
-  return klazz.getName().charAt(0) == '[';
+  return klazz.isArray();
 }
 
 static void setAssignableFrom(Class klazz, Class aClass) {
+// FIXME no implementation?
 //SoftDoubleKeyMap.Entry val = (SoftDoubleKeyMap.Entry) 
assignableMap.getOrPut(klazz, aClass, null);
 //if (val.getValue() == null) {
 //val.setValue(Boolean.TRUE);
@@ -107,7 +92,7 @@ public class ReflectionCache {
 if (klazz == null)
   return null;
 
-return ClassInfo.getClassInfo(klazz).getCachedClass ();
+return ClassInfo.getClassInfo(klazz).getCachedClass();
 }
 
 }



groovy git commit: Minor refactoring: move type data to `TypeUtil` and simplify `isArray` implementation

2018-03-09 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 7379d522b -> 20b2f3cb5


Minor refactoring: move type data to `TypeUtil` and simplify `isArray` 
implementation


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/20b2f3cb
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/20b2f3cb
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/20b2f3cb

Branch: refs/heads/master
Commit: 20b2f3cb5cbae692a6519c1622ac8679a3c56135
Parents: 7379d52
Author: danielsun1106 
Authored: Sat Mar 10 01:54:25 2018 +0800
Committer: danielsun1106 
Committed: Sat Mar 10 01:54:25 2018 +0800

--
 .../groovy/classgen/asm/util/TypeUtil.java  | 16 +
 .../groovy/reflection/ReflectionCache.java  | 25 
 2 files changed, 21 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/20b2f3cb/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
index 483511d..23fbebc 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeUtil.java
@@ -140,6 +140,11 @@ public abstract class TypeUtil {
 return new Tuple2(type, dimension);
 }
 
+public static Class autoboxType(Class type) {
+final Class res = PRIMITIVE_TYPE_TO_WRAPPED_CLASS_MAP.get(type);
+return res == null ? type : res;
+}
+
 private static final String REF_DESCRIPTION = "L";
 private static final Map 
PRIMITIVE_TYPE_TO_DESCRIPTION_MAP = Maps.of(
 int_TYPE, "I",
@@ -197,4 +202,15 @@ public abstract class TypeUtil {
 Type.LONG_TYPE, "java/lang/Long",
 Type.SHORT_TYPE, "java/lang/Short"
 );
+
+private static final Map PRIMITIVE_TYPE_TO_WRAPPED_CLASS_MAP 
= Maps.of(
+byte.class, Byte.class,
+boolean.class, Boolean.class,
+char.class, Character.class,
+double.class, Double.class,
+float.class, Float.class,
+int.class, Integer.class,
+long.class, Long.class,
+short.class, Short.class
+);
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/20b2f3cb/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
--
diff --git a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java 
b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
index c9ea871..efedc95 100644
--- a/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
+++ b/src/main/java/org/codehaus/groovy/reflection/ReflectionCache.java
@@ -18,28 +18,12 @@
  */
 package org.codehaus.groovy.reflection;
 
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.util.TripleKeyHashMap;
 
-import java.util.HashMap;
-import java.util.Map;
-
 public class ReflectionCache {
-private static final Map primitiveTypesMap = new HashMap();
-
-static {
-primitiveTypesMap.put(byte.class, Byte.class);
-primitiveTypesMap.put(boolean.class, Boolean.class);
-primitiveTypesMap.put(char.class, Character.class);
-primitiveTypesMap.put(double.class, Double.class);
-primitiveTypesMap.put(float.class, Float.class);
-primitiveTypesMap.put(int.class, Integer.class);
-primitiveTypesMap.put(long.class, Long.class);
-primitiveTypesMap.put(short.class, Short.class);
-}
-
 public static Class autoboxType(Class type) {
-final Class res = (Class) primitiveTypesMap.get(type);
-return res == null ? type : res;
+return TypeUtil.autoboxType(type);
 }
 
 static TripleKeyHashMap mopNames = new TripleKeyHashMap();
@@ -55,10 +39,11 @@ public class ReflectionCache {
 static final CachedClass STRING_CLASS = getCachedClass(String.class);
 
 public static boolean isArray(Class klazz) {
-  return klazz.getName().charAt(0) == '[';
+  return klazz.isArray();
 }
 
 static void setAssignableFrom(Class klazz, Class aClass) {
+// FIXME no implementation?
 //SoftDoubleKeyMap.Entry val = (SoftDoubleKeyMap.Entry) 
assignableMap.getOrPut(klazz, aClass, null);
 //if (val.getValue() == null) {
 //val.setValue(Boolean.TRUE);
@@ -107,7 +92,7 @@ public class ReflectionCache {
 if (klazz == null)
   return null;
 
-return ClassInfo.getClassInfo(klazz).getCachedClass ();
+return ClassInfo.getClassInfo(klazz).getCachedClass();
 }
 
 }



[2/2] groovy git commit: Minor refactoring: remove duplicated code of number calculation

2018-03-08 Thread sunlan
Minor refactoring: remove duplicated code of number calculation

(cherry picked from commit f73d551)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/69ac4150
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/69ac4150
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/69ac4150

Branch: refs/heads/GROOVY_2_5_X
Commit: 69ac41508bec9bdc95d8045914b427f33f0aaa2e
Parents: eb85a13
Author: sunlan 
Authored: Fri Mar 9 12:54:10 2018 +0800
Committer: sunlan 
Committed: Fri Mar 9 13:03:54 2018 +0800

--
 .../groovy/runtime/dgmimpl/NumberNumberDiv.java | 87 ---
 .../runtime/dgmimpl/NumberNumberMetaMethod.java | 78 +
 .../runtime/dgmimpl/NumberNumberMinus.java  | 91 +++-
 .../runtime/dgmimpl/NumberNumberMultiply.java   | 91 +++-
 .../runtime/dgmimpl/NumberNumberPlus.java   | 91 +++-
 5 files changed, 282 insertions(+), 156 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/69ac4150/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java 
b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
index b20d4fe..443d970 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
@@ -46,51 +46,72 @@ public final class NumberNumberDiv extends 
NumberNumberMetaMethod {
 return NumberMath.divide(left, right);
 }
 
-public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
-if (receiver instanceof Integer) {
-if (args[0] instanceof Float)
-return new IntegerFloat(site, metaClass, metaMethod, params, 
receiver, args);
 
-if (args[0] instanceof Double)
-return new IntegerDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createIntegerInteger(CallSite site, MetaClassImpl 
metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] 
args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (receiver instanceof Long) {
-if (args[0] instanceof Float)
-return new LongFloat(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Double)
-return new LongDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return new IntegerFloat(site, metaClass, metaMethod, params, receiver, 
args);
+}
 
-if (receiver instanceof Float) {
-if (args[0] instanceof Integer)
-return new FloatInteger(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createIntegerDouble(CallSite site, MetaClassImpl 
metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] 
args) {
+return new IntegerDouble(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Long)
-return new FloatLong(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Float)
-return new FloatFloat(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Double)
-return new FloatDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return new LongFloat(site, metaClass, metaMethod, 

[2/2] groovy git commit: Minor refactoring: remove duplicated code of number calculation

2018-03-08 Thread sunlan
Minor refactoring: remove duplicated code of number calculation

(cherry picked from commit f73d551)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/930508a3
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/930508a3
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/930508a3

Branch: refs/heads/GROOVY_2_6_X
Commit: 930508a366a3118023dea7a85ecf09de5926a480
Parents: 2bfb300
Author: sunlan 
Authored: Fri Mar 9 12:54:10 2018 +0800
Committer: sunlan 
Committed: Fri Mar 9 12:57:27 2018 +0800

--
 .../groovy/runtime/dgmimpl/NumberNumberDiv.java | 87 ---
 .../runtime/dgmimpl/NumberNumberMetaMethod.java | 78 +
 .../runtime/dgmimpl/NumberNumberMinus.java  | 91 +++-
 .../runtime/dgmimpl/NumberNumberMultiply.java   | 91 +++-
 .../runtime/dgmimpl/NumberNumberPlus.java   | 91 +++-
 5 files changed, 282 insertions(+), 156 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java 
b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
index b20d4fe..443d970 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
@@ -46,51 +46,72 @@ public final class NumberNumberDiv extends 
NumberNumberMetaMethod {
 return NumberMath.divide(left, right);
 }
 
-public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
-if (receiver instanceof Integer) {
-if (args[0] instanceof Float)
-return new IntegerFloat(site, metaClass, metaMethod, params, 
receiver, args);
 
-if (args[0] instanceof Double)
-return new IntegerDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createIntegerInteger(CallSite site, MetaClassImpl 
metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] 
args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (receiver instanceof Long) {
-if (args[0] instanceof Float)
-return new LongFloat(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Double)
-return new LongDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return new IntegerFloat(site, metaClass, metaMethod, params, receiver, 
args);
+}
 
-if (receiver instanceof Float) {
-if (args[0] instanceof Integer)
-return new FloatInteger(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createIntegerDouble(CallSite site, MetaClassImpl 
metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] 
args) {
+return new IntegerDouble(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Long)
-return new FloatLong(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Float)
-return new FloatFloat(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Double)
-return new FloatDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return new LongFloat(site, metaClass, metaMethod, 

groovy git commit: Minor refactoring: remove duplicated code of number calculation

2018-03-08 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 3bbd5a75f -> f73d55170


Minor refactoring: remove duplicated code of number calculation


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f73d5517
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f73d5517
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f73d5517

Branch: refs/heads/master
Commit: f73d551703ecdca943fe442572608352aa77656b
Parents: 3bbd5a7
Author: sunlan 
Authored: Fri Mar 9 12:54:10 2018 +0800
Committer: sunlan 
Committed: Fri Mar 9 12:54:10 2018 +0800

--
 .../groovy/runtime/dgmimpl/NumberNumberDiv.java | 87 ---
 .../runtime/dgmimpl/NumberNumberMetaMethod.java | 78 +
 .../runtime/dgmimpl/NumberNumberMinus.java  | 91 +++-
 .../runtime/dgmimpl/NumberNumberMultiply.java   | 91 +++-
 .../runtime/dgmimpl/NumberNumberPlus.java   | 91 +++-
 5 files changed, 282 insertions(+), 156 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/f73d5517/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java 
b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
index b20d4fe..443d970 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
@@ -46,51 +46,72 @@ public final class NumberNumberDiv extends 
NumberNumberMetaMethod {
 return NumberMath.divide(left, right);
 }
 
-public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
-if (receiver instanceof Integer) {
-if (args[0] instanceof Float)
-return new IntegerFloat(site, metaClass, metaMethod, params, 
receiver, args);
 
-if (args[0] instanceof Double)
-return new IntegerDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createIntegerInteger(CallSite site, MetaClassImpl 
metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] 
args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (receiver instanceof Long) {
-if (args[0] instanceof Float)
-return new LongFloat(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Double)
-return new LongDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return new IntegerFloat(site, metaClass, metaMethod, params, receiver, 
args);
+}
 
-if (receiver instanceof Float) {
-if (args[0] instanceof Integer)
-return new FloatInteger(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createIntegerDouble(CallSite site, MetaClassImpl 
metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] 
args) {
+return new IntegerDouble(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Long)
-return new FloatLong(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Float)
-return new FloatFloat(site, metaClass, metaMethod, params, 
receiver, args);
+public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return createNumberNumber(site, metaClass, metaMethod, params, 
receiver, args);
+}
 
-if (args[0] instanceof Double)
-return new FloatDouble(site, metaClass, metaMethod, params, 
receiver, args);
-}
+public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, 
MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+return new 

groovy git commit: Minor refactoring: Extract common method for `ClassNode`

2018-03-08 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X f9c2ffa65 -> f5f421b71


Minor refactoring: Extract common method for `ClassNode`

(cherry picked from commit 3bbd5a7)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f5f421b7
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f5f421b7
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f5f421b7

Branch: refs/heads/GROOVY_2_6_X
Commit: f5f421b715439b04d9353e2420d57fcc200b82c6
Parents: f9c2ffa
Author: sunlan 
Authored: Fri Mar 9 08:04:00 2018 +0800
Committer: sunlan 
Committed: Fri Mar 9 08:06:01 2018 +0800

--
 .../java/org/codehaus/groovy/ast/ClassNode.java | 31 
 .../codehaus/groovy/classgen/asm/MopWriter.java |  2 +-
 .../asm/sc/StaticTypesWriterController.java |  9 ++-
 src/test/groovy/transform/stc/LambdaTest.groovy | 83 
 4 files changed, 88 insertions(+), 37 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/f5f421b7/src/main/java/org/codehaus/groovy/ast/ClassNode.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java 
b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 083d5b4..d6ddb83 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -964,6 +964,21 @@ public class ClassNode extends AnnotatedNode implements 
Opcodes, GroovydocHolder
 }
 
 /**
+ *
+ * @param classNodes the class nodes for the interfaces
+ * @return true if this class or any base class implements any of the 
given interfaces
+ */
+public boolean implementsAnyInterfaces(ClassNode... classNodes) {
+for (ClassNode classNode : classNodes) {
+if (implementsInterface(classNode)) {
+return true;
+}
+}
+
+return false;
+}
+
+/**
  * @param classNode the class node for the interface
  * @return true if this class or any base class implements the given 
interface
  */
@@ -980,6 +995,22 @@ public class ClassNode extends AnnotatedNode implements 
Opcodes, GroovydocHolder
 }
 
 /**
+ *
+ * @param classNodes the class nodes for the interfaces
+ * @return true if this class declares that it implements any of the given 
interfaces
+ * or if one of its interfaces extends directly or indirectly any of the 
given interfaces
+ */
+public boolean declaresAnyInterfaces(ClassNode... classNodes) {
+for (ClassNode classNode : classNodes) {
+if (declaresInterface(classNode)) {
+return true;
+}
+}
+
+return false;
+}
+
+/**
  * @param classNode the class node for the interface
  * @return true if this class declares that it implements the given 
interface
  * or if one of its interfaces extends directly or indirectly the interface

http://git-wip-us.apache.org/repos/asf/groovy/blob/f5f421b7/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
index fff65d1..6d06742 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
@@ -86,7 +86,7 @@ public class MopWriter {
 
 public void createMopMethods() {
 ClassNode classNode = controller.getClassNode();
-if (classNode.declaresInterface(ClassHelper.GENERATED_CLOSURE_Type) || 
classNode.declaresInterface(ClassHelper.GENERATED_LAMBDA_TYPE)) {
+if 
(classNode.declaresAnyInterfaces(ClassHelper.GENERATED_CLOSURE_Type, 
ClassHelper.GENERATED_LAMBDA_TYPE)) {
 return;
 }
 Set currentClassSignatures = 
buildCurrentClassSignatureSet(classNode.getMethods());

http://git-wip-us.apache.org/repos/asf/groovy/blob/f5f421b7/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
index 5ce784a..7891d03 100644
--- 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
+++ 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
@@ -94,14 +94,15 @@ public class StaticTypesWriterController extends 
DelegatingController {
 private void updateStaticCompileFlag(final MethodNode mn) {
 ClassNode classNode = getCl

groovy git commit: Minor refactoring: Extract common method for `ClassNode`

2018-03-08 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 3f41484e5 -> 3bbd5a75f


Minor refactoring: Extract common method for `ClassNode`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/3bbd5a75
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/3bbd5a75
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/3bbd5a75

Branch: refs/heads/master
Commit: 3bbd5a75f6ae48604fe95067d21e55fc2206a380
Parents: 3f41484
Author: sunlan 
Authored: Fri Mar 9 08:04:00 2018 +0800
Committer: sunlan 
Committed: Fri Mar 9 08:04:00 2018 +0800

--
 .../java/org/codehaus/groovy/ast/ClassNode.java | 31 
 .../codehaus/groovy/classgen/asm/MopWriter.java |  2 +-
 .../asm/sc/StaticTypesWriterController.java |  9 +++---
 src/test/groovy/transform/stc/LambdaTest.groovy | 16 ++
 4 files changed, 53 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/3bbd5a75/src/main/java/org/codehaus/groovy/ast/ClassNode.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java 
b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 4593b12..fe8a490 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -964,6 +964,21 @@ public class ClassNode extends AnnotatedNode implements 
Opcodes, GroovydocHolder
 }
 
 /**
+ *
+ * @param classNodes the class nodes for the interfaces
+ * @return true if this class or any base class implements any of the 
given interfaces
+ */
+public boolean implementsAnyInterfaces(ClassNode... classNodes) {
+for (ClassNode classNode : classNodes) {
+if (implementsInterface(classNode)) {
+return true;
+}
+}
+
+return false;
+}
+
+/**
  * @param classNode the class node for the interface
  * @return true if this class or any base class implements the given 
interface
  */
@@ -980,6 +995,22 @@ public class ClassNode extends AnnotatedNode implements 
Opcodes, GroovydocHolder
 }
 
 /**
+ *
+ * @param classNodes the class nodes for the interfaces
+ * @return true if this class declares that it implements any of the given 
interfaces
+ * or if one of its interfaces extends directly or indirectly any of the 
given interfaces
+ */
+public boolean declaresAnyInterfaces(ClassNode... classNodes) {
+for (ClassNode classNode : classNodes) {
+if (declaresInterface(classNode)) {
+return true;
+}
+}
+
+return false;
+}
+
+/**
  * @param classNode the class node for the interface
  * @return true if this class declares that it implements the given 
interface
  * or if one of its interfaces extends directly or indirectly the interface

http://git-wip-us.apache.org/repos/asf/groovy/blob/3bbd5a75/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
index fff65d1..6d06742 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/MopWriter.java
@@ -86,7 +86,7 @@ public class MopWriter {
 
 public void createMopMethods() {
 ClassNode classNode = controller.getClassNode();
-if (classNode.declaresInterface(ClassHelper.GENERATED_CLOSURE_Type) || 
classNode.declaresInterface(ClassHelper.GENERATED_LAMBDA_TYPE)) {
+if 
(classNode.declaresAnyInterfaces(ClassHelper.GENERATED_CLOSURE_Type, 
ClassHelper.GENERATED_LAMBDA_TYPE)) {
 return;
 }
 Set currentClassSignatures = 
buildCurrentClassSignatureSet(classNode.getMethods());

http://git-wip-us.apache.org/repos/asf/groovy/blob/3bbd5a75/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
index 5ce784a..7891d03 100644
--- 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
+++ 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
@@ -94,14 +94,15 @@ public class StaticTypesWriterController extends 
DelegatingController {
 private void updateStaticCompileFlag(final MethodNode mn) {
 ClassNode classNode = getClassNode();
 AnnotatedNode node = mn;

groovy git commit: Minor refactoring: remove template code of `ConcurrentCommonCache`

2018-03-03 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master d9205b76a -> bf1dc7b1b


Minor refactoring: remove template code of `ConcurrentCommonCache`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/bf1dc7b1
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/bf1dc7b1
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/bf1dc7b1

Branch: refs/heads/master
Commit: bf1dc7b1b5c36743314c3cbc50c6a819d02e88d3
Parents: d9205b7
Author: danielsun1106 
Authored: Sun Mar 4 00:11:42 2018 +0800
Committer: danielsun1106 
Committed: Sun Mar 4 00:11:42 2018 +0800

--
 .../runtime/memoize/ConcurrentCommonCache.java  | 74 +---
 1 file changed, 16 insertions(+), 58 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/bf1dc7b1/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
index 80f6bdd..27ee102 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
@@ -93,26 +93,16 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  * {@inheritDoc}
  */
 @Override
-public V get(K key) {
-readLock.lock();
-try {
-return commonCache.get(key);
-} finally {
-readLock.unlock();
-}
+public V get(final K key) {
+return doWithReadLock(c -> c.get(key));
 }
 
 /**
  * {@inheritDoc}
  */
 @Override
-public V put(K key, V value) {
-writeLock.lock();
-try {
-return commonCache.put(key, value);
-} finally {
-writeLock.unlock();
-}
+public V put(final K key, final V value) {
+return doWithWriteLock(c -> c.put(key, value));
 }
 
 /**
@@ -160,12 +150,7 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  */
 @Override
 public Collection values() {
-readLock.lock();
-try {
-return commonCache.values();
-} finally {
-readLock.unlock();
-}
+return doWithReadLock(c -> c.values());
 }
 
 /**
@@ -173,25 +158,15 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  */
 @Override
 public Set keys() {
-readLock.lock();
-try {
-return commonCache.keys();
-} finally {
-readLock.unlock();
-}
+return doWithReadLock(c -> c.keys());
 }
 
 /**
  * {@inheritDoc}
  */
 @Override
-public boolean containsKey(K key) {
-readLock.lock();
-try {
-return commonCache.containsKey(key);
-} finally {
-readLock.unlock();
-}
+public boolean containsKey(final K key) {
+return doWithReadLock(c -> c.containsKey(key));
 }
 
 /**
@@ -199,25 +174,15 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  */
 @Override
 public int size() {
-readLock.lock();
-try {
-return commonCache.size();
-} finally {
-readLock.unlock();
-}
+return doWithReadLock(c -> c.size());
 }
 
 /**
  * {@inheritDoc}
  */
 @Override
-public V remove(K key) {
-writeLock.lock();
-try {
-return commonCache.remove(key);
-} finally {
-writeLock.unlock();
-}
+public V remove(final K key) {
+return doWithWriteLock(c -> c.remove(key));
 }
 
 /**
@@ -225,12 +190,7 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  */
 @Override
 public Map clear() {
-writeLock.lock();
-try {
-return commonCache.clear();
-} finally {
-writeLock.unlock();
-}
+return doWithWriteLock(c -> c.clear());
 }
 
 /**
@@ -238,12 +198,10 @@ public class ConcurrentCommonCache implements 
EvictableCache, ValueC
  */
 @Override
 public void cleanUpNullReferences() {
-writeLock.lock();
-try {
-commonCache.cleanUpNullReferences();
-} finally {
-writeLock.unlock();
-}
+doWithWriteLock(c -> {
+c.cleanUpNullReferences();
+return null;
+});
 }
 
 /**



groovy git commit: Minor refactoring: remove duplicated code of `MetaClassImpl`

2018-02-28 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 362a15f61 -> 04c47d993


Minor refactoring: remove duplicated code of `MetaClassImpl`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/04c47d99
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/04c47d99
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/04c47d99

Branch: refs/heads/GROOVY_2_5_X
Commit: 04c47d9932dc5e25d61e4dbbbe630b5045b017e0
Parents: 362a15f
Author: sunlan 
Authored: Thu Mar 1 08:18:43 2018 +0800
Committer: sunlan 
Committed: Thu Mar 1 08:46:17 2018 +0800

--
 src/main/groovy/groovy/lang/MetaClassImpl.java | 145 +---
 1 file changed, 67 insertions(+), 78 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/04c47d99/src/main/groovy/groovy/lang/MetaClassImpl.java
--
diff --git a/src/main/groovy/groovy/lang/MetaClassImpl.java 
b/src/main/groovy/groovy/lang/MetaClassImpl.java
index 601d5bb..a83e944 100644
--- a/src/main/groovy/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/groovy/lang/MetaClassImpl.java
@@ -152,8 +152,8 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 private final MetaProperty arrayLengthProperty = new 
MetaArrayLengthProperty();
 private final Index classPropertyIndexForSuper = new MethodIndex();
 private final Set newGroovyMethodsSet = new 
HashSet();
-private final MetaMethod [] myNewMetaMethods;
-private final MetaMethod [] additionalMetaMethods;
+private final MetaMethod[] myNewMetaMethods;
+private final MetaMethod[] additionalMetaMethods;
 
 protected MetaMethod getPropertyMethod;
 protected MetaMethod invokeMethodMethod;
@@ -175,7 +175,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
   * @param theClass The class this is the metaclass dor
   * @param add The methods for this class
   */
-public MetaClassImpl(final Class theClass, MetaMethod [] add) {
+public MetaClassImpl(final Class theClass, MetaMethod[] add) {
 this.theClass = theClass;
 theCachedClass = ReflectionCache.getCachedClass(theClass);
 this.isGroovyObject = GroovyObject.class.isAssignableFrom(theClass);
@@ -239,7 +239,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 
 /**
  * Returns the registry for this metaclass
- * 
+ *
  * @return The resgistry
  */
 public MetaClassRegistry getRegistry() {
@@ -323,7 +323,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 
 /**
  *Returns the class this object this is the metaclass of.
- * 
+ *
  * @return The class contained by this metaclass
  */
 public Class getTheClass() {
@@ -523,14 +523,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String mopName = method.getMopName();
 int index = Arrays.binarySearch(mopMethods, mopName, 
CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(mopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(mopName))
-  to++;
-
-int matchingMethod = 
findMatchingMethod(mopMethods, from, to, method);
+int matchingMethod = findMatchingMethod(method, 
mopName, index, mopMethods);
 if (matchingMethod != -1) {
 e.methods = mopMethods[matchingMethod];
 }
@@ -559,14 +552,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String fixedMopName = decomposedMopName[0] + 
distance + decomposedMopName[2];
 int index = Arrays.binarySearch(mopMethods, 
fixedMopName, CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(fixedMopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(fixedMopName))
-  to++;
-
-int matchingMethod = 
findMatchingMethod(mopMethods, from, to, method);
+ 

groovy git commit: Minor refactoring: remove duplicated code of `MetaClassImpl`

2018-02-28 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X e2aa1c4cd -> 9fa6d7976


Minor refactoring: remove duplicated code of `MetaClassImpl`

(cherry picked from commit a949c8c)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/9fa6d797
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/9fa6d797
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/9fa6d797

Branch: refs/heads/GROOVY_2_6_X
Commit: 9fa6d797641fa42f8bad67722520fcdf6b29
Parents: e2aa1c4
Author: sunlan 
Authored: Thu Mar 1 08:18:43 2018 +0800
Committer: sunlan 
Committed: Thu Mar 1 08:32:18 2018 +0800

--
 src/main/groovy/groovy/lang/MetaClassImpl.java | 90 +
 1 file changed, 38 insertions(+), 52 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/9fa6d797/src/main/groovy/groovy/lang/MetaClassImpl.java
--
diff --git a/src/main/groovy/groovy/lang/MetaClassImpl.java 
b/src/main/groovy/groovy/lang/MetaClassImpl.java
index c453a3f..99c0fa4 100644
--- a/src/main/groovy/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/groovy/lang/MetaClassImpl.java
@@ -525,14 +525,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String mopName = method.getMopName();
 int index = Arrays.binarySearch(mopMethods, mopName, 
CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(mopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(mopName))
-  to++;
-
-int matchingMethod = 
findMatchingMethod(mopMethods, from, to, method);
+int matchingMethod = findMatchingMethod(method, 
mopName, index, mopMethods);
 if (matchingMethod != -1) {
 e.methods = mopMethods[matchingMethod];
 }
@@ -561,14 +554,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String fixedMopName = decomposedMopName[0] + 
distance + decomposedMopName[2];
 int index = Arrays.binarySearch(mopMethods, 
fixedMopName, CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(fixedMopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(fixedMopName))
-  to++;
-
-int matchingMethod = 
findMatchingMethod(mopMethods, from, to, method);
+int matchingMethod = 
findMatchingMethod(method, fixedMopName, index, mopMethods);
 if (matchingMethod != -1) {
 e.methodsForSuper = 
mopMethods[matchingMethod];
 distance = 0;
@@ -606,14 +592,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String mopName = method.getMopName();
 int index = Arrays.binarySearch(mopMethods, mopName, 
CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(mopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(mopName))
-  to++;
-
-int matchingMethod = findMatchingMethod(mopMethods, 
from, to, method);
+int matchingMethod = findMatchingMethod(method, 
mopName, index, mopMethods);
 if (matchingMethod != -1) {
 methods.set(i, mopMethods[matchingMethod]);
 }
@@ -631,6 +610,17 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 iter.iterate();
 }
 
+private int findMatchingMethod(MetaMethod method, String mopName, int 
index, CachedMethod[] mopMethods) {
+int from = index;
+while (from > 0 && mopMethods[from-1].getName().equals(

groovy git commit: Minor refactoring: remove duplicated code of `MetaClassImpl`

2018-02-28 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 4d7884edc -> a949c8c68


Minor refactoring: remove duplicated code of `MetaClassImpl`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/a949c8c6
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/a949c8c6
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/a949c8c6

Branch: refs/heads/master
Commit: a949c8c688c45290aaf4d7c9da399f331f7dbbb5
Parents: 4d7884e
Author: sunlan 
Authored: Thu Mar 1 08:18:43 2018 +0800
Committer: sunlan 
Committed: Thu Mar 1 08:27:05 2018 +0800

--
 src/main/groovy/groovy/lang/MetaClassImpl.java | 90 +
 1 file changed, 38 insertions(+), 52 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/a949c8c6/src/main/groovy/groovy/lang/MetaClassImpl.java
--
diff --git a/src/main/groovy/groovy/lang/MetaClassImpl.java 
b/src/main/groovy/groovy/lang/MetaClassImpl.java
index c453a3f..99c0fa4 100644
--- a/src/main/groovy/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/groovy/lang/MetaClassImpl.java
@@ -525,14 +525,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String mopName = method.getMopName();
 int index = Arrays.binarySearch(mopMethods, mopName, 
CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(mopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(mopName))
-  to++;
-
-int matchingMethod = 
findMatchingMethod(mopMethods, from, to, method);
+int matchingMethod = findMatchingMethod(method, 
mopName, index, mopMethods);
 if (matchingMethod != -1) {
 e.methods = mopMethods[matchingMethod];
 }
@@ -561,14 +554,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String fixedMopName = decomposedMopName[0] + 
distance + decomposedMopName[2];
 int index = Arrays.binarySearch(mopMethods, 
fixedMopName, CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(fixedMopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(fixedMopName))
-  to++;
-
-int matchingMethod = 
findMatchingMethod(mopMethods, from, to, method);
+int matchingMethod = 
findMatchingMethod(method, fixedMopName, index, mopMethods);
 if (matchingMethod != -1) {
 e.methodsForSuper = 
mopMethods[matchingMethod];
 distance = 0;
@@ -606,14 +592,7 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 String mopName = method.getMopName();
 int index = Arrays.binarySearch(mopMethods, mopName, 
CachedClass.CachedMethodComparatorWithString.INSTANCE);
 if (index >= 0) {
-int from = index;
-while (from > 0 && 
mopMethods[from-1].getName().equals(mopName))
-  from--;
-int to = index;
-while (to < mopMethods.length-1 && 
mopMethods[to+1].getName().equals(mopName))
-  to++;
-
-int matchingMethod = findMatchingMethod(mopMethods, 
from, to, method);
+int matchingMethod = findMatchingMethod(method, 
mopName, index, mopMethods);
 if (matchingMethod != -1) {
 methods.set(i, mopMethods[matchingMethod]);
 }
@@ -631,6 +610,17 @@ public class MetaClassImpl implements MetaClass, 
MutableMetaClass {
 iter.iterate();
 }
 
+private int findMatchingMethod(MetaMethod method, String mopName, int 
index, CachedMethod[] mopMethods) {
+int from = index;
+while (from > 0 && mopMethods[from-1].getName().equals(mopName))
+  from--;
+int to = in

[2/2] groovy git commit: Minor refactoring: remove duplicated code of `Verifier`

2018-02-28 Thread sunlan
Minor refactoring: remove duplicated code of `Verifier`

(cherry picked from commit 4d7884e)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/362a15f6
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/362a15f6
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/362a15f6

Branch: refs/heads/GROOVY_2_5_X
Commit: 362a15f6197600e175b594bf4954ff2ab4ba77a8
Parents: 277c709
Author: sunlan 
Authored: Thu Mar 1 07:54:27 2018 +0800
Committer: sunlan 
Committed: Thu Mar 1 08:09:10 2018 +0800

--
 .../org/codehaus/groovy/classgen/Verifier.java  | 67 ++--
 1 file changed, 33 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/362a15f6/src/main/java/org/codehaus/groovy/classgen/Verifier.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/Verifier.java 
b/src/main/java/org/codehaus/groovy/classgen/Verifier.java
index 2e5c851..923d228 100644
--- a/src/main/java/org/codehaus/groovy/classgen/Verifier.java
+++ b/src/main/java/org/codehaus/groovy/classgen/Verifier.java
@@ -713,19 +713,11 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 getterModifiers = ~Modifier.FINAL & getterModifiers;
 }
 if (getterBlock != null) {
-MethodNode getter =
-new MethodNode(getterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
-getter.setSynthetic(true);
-addPropertyMethod(getter);
-visitMethod(getter);
+visitGetter(node, getterBlock, getterModifiers, getterName);
 
 if (ClassHelper.boolean_TYPE == node.getType() || 
ClassHelper.Boolean_TYPE == node.getType()) {
 String secondGetterName = "is" + capitalize(name);
-MethodNode secondGetter =
-new MethodNode(secondGetterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
-secondGetter.setSynthetic(true);
-addPropertyMethod(secondGetter);
-visitMethod(secondGetter);
+visitGetter(node, getterBlock, getterModifiers, 
secondGetterName);
 }
 }
 if (setterBlock != null) {
@@ -738,6 +730,14 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 }
 }
 
+private void visitGetter(PropertyNode node, Statement getterBlock, int 
getterModifiers, String secondGetterName) {
+MethodNode secondGetter =
+new MethodNode(secondGetterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
+secondGetter.setSynthetic(true);
+addPropertyMethod(secondGetter);
+visitMethod(secondGetter);
+}
+
 protected void addPropertyMethod(MethodNode method) {
 classNode.addMethod(method);
 // GROOVY-4415 / GROOVY-4645: check that there's no abstract method 
which corresponds to this one
@@ -915,22 +915,10 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 );
 k++;
 } else if (parameter.hasInitialExpression()) {
-newParams[index++] = parameter;
-arguments.addExpression(
-new CastExpression(
-parameter.getType(),
-new 
VariableExpression(parameter.getName())
-)
-);
+index = addExpression(newParams, arguments, index, 
parameter);
 k++;
 } else {
-newParams[index++] = parameter;
-arguments.addExpression(
-new CastExpression(
-parameter.getType(),
-new 
VariableExpression(parameter.getName())
-)
-);
+index = addExpression(newParams, arguments, index, 
parameter);
 }
 }
 }
@@ -944,6 +932,17 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 }
 }
 
+private int addExpression(Parameter[] newParams, ArgumentListExpression 
arguments, int index, Parameter parameter) {
+newParams[index++] = parameter;
+arguments.addExpression(
+new CastExpression(
+parameter.getType(),
+new VariableExpression(parameter.getName())
+  

[2/2] groovy git commit: Minor refactoring: remove duplicated code of `Verifier`

2018-02-28 Thread sunlan
Minor refactoring: remove duplicated code of `Verifier`

(cherry picked from commit 4d7884e)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/e2aa1c4c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/e2aa1c4c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/e2aa1c4c

Branch: refs/heads/GROOVY_2_6_X
Commit: e2aa1c4cd287223781353599802715064837b3d3
Parents: 052a2df
Author: sunlan 
Authored: Thu Mar 1 07:54:27 2018 +0800
Committer: sunlan 
Committed: Thu Mar 1 08:08:26 2018 +0800

--
 .../org/codehaus/groovy/classgen/Verifier.java  | 67 ++--
 1 file changed, 33 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/e2aa1c4c/src/main/java/org/codehaus/groovy/classgen/Verifier.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/Verifier.java 
b/src/main/java/org/codehaus/groovy/classgen/Verifier.java
index 2e5c851..923d228 100644
--- a/src/main/java/org/codehaus/groovy/classgen/Verifier.java
+++ b/src/main/java/org/codehaus/groovy/classgen/Verifier.java
@@ -713,19 +713,11 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 getterModifiers = ~Modifier.FINAL & getterModifiers;
 }
 if (getterBlock != null) {
-MethodNode getter =
-new MethodNode(getterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
-getter.setSynthetic(true);
-addPropertyMethod(getter);
-visitMethod(getter);
+visitGetter(node, getterBlock, getterModifiers, getterName);
 
 if (ClassHelper.boolean_TYPE == node.getType() || 
ClassHelper.Boolean_TYPE == node.getType()) {
 String secondGetterName = "is" + capitalize(name);
-MethodNode secondGetter =
-new MethodNode(secondGetterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
-secondGetter.setSynthetic(true);
-addPropertyMethod(secondGetter);
-visitMethod(secondGetter);
+visitGetter(node, getterBlock, getterModifiers, 
secondGetterName);
 }
 }
 if (setterBlock != null) {
@@ -738,6 +730,14 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 }
 }
 
+private void visitGetter(PropertyNode node, Statement getterBlock, int 
getterModifiers, String secondGetterName) {
+MethodNode secondGetter =
+new MethodNode(secondGetterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
+secondGetter.setSynthetic(true);
+addPropertyMethod(secondGetter);
+visitMethod(secondGetter);
+}
+
 protected void addPropertyMethod(MethodNode method) {
 classNode.addMethod(method);
 // GROOVY-4415 / GROOVY-4645: check that there's no abstract method 
which corresponds to this one
@@ -915,22 +915,10 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 );
 k++;
 } else if (parameter.hasInitialExpression()) {
-newParams[index++] = parameter;
-arguments.addExpression(
-new CastExpression(
-parameter.getType(),
-new 
VariableExpression(parameter.getName())
-)
-);
+index = addExpression(newParams, arguments, index, 
parameter);
 k++;
 } else {
-newParams[index++] = parameter;
-arguments.addExpression(
-new CastExpression(
-parameter.getType(),
-new 
VariableExpression(parameter.getName())
-)
-);
+index = addExpression(newParams, arguments, index, 
parameter);
 }
 }
 }
@@ -944,6 +932,17 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 }
 }
 
+private int addExpression(Parameter[] newParams, ArgumentListExpression 
arguments, int index, Parameter parameter) {
+newParams[index++] = parameter;
+arguments.addExpression(
+new CastExpression(
+parameter.getType(),
+new VariableExpression(parameter.getName())
+  

groovy git commit: Minor refactoring: remove duplicated code of `Verifier`

2018-02-28 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 4e1ad1fb8 -> 4d7884edc


Minor refactoring: remove duplicated code of `Verifier`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/4d7884ed
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/4d7884ed
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/4d7884ed

Branch: refs/heads/master
Commit: 4d7884edc7f09f4315633bf5afd5e53b906f190a
Parents: 4e1ad1f
Author: sunlan 
Authored: Thu Mar 1 07:54:27 2018 +0800
Committer: sunlan 
Committed: Thu Mar 1 08:00:33 2018 +0800

--
 .../org/codehaus/groovy/classgen/Verifier.java  | 67 ++--
 1 file changed, 33 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/4d7884ed/src/main/java/org/codehaus/groovy/classgen/Verifier.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/Verifier.java 
b/src/main/java/org/codehaus/groovy/classgen/Verifier.java
index 2e5c851..923d228 100644
--- a/src/main/java/org/codehaus/groovy/classgen/Verifier.java
+++ b/src/main/java/org/codehaus/groovy/classgen/Verifier.java
@@ -713,19 +713,11 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 getterModifiers = ~Modifier.FINAL & getterModifiers;
 }
 if (getterBlock != null) {
-MethodNode getter =
-new MethodNode(getterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
-getter.setSynthetic(true);
-addPropertyMethod(getter);
-visitMethod(getter);
+visitGetter(node, getterBlock, getterModifiers, getterName);
 
 if (ClassHelper.boolean_TYPE == node.getType() || 
ClassHelper.Boolean_TYPE == node.getType()) {
 String secondGetterName = "is" + capitalize(name);
-MethodNode secondGetter =
-new MethodNode(secondGetterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
-secondGetter.setSynthetic(true);
-addPropertyMethod(secondGetter);
-visitMethod(secondGetter);
+visitGetter(node, getterBlock, getterModifiers, 
secondGetterName);
 }
 }
 if (setterBlock != null) {
@@ -738,6 +730,14 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 }
 }
 
+private void visitGetter(PropertyNode node, Statement getterBlock, int 
getterModifiers, String secondGetterName) {
+MethodNode secondGetter =
+new MethodNode(secondGetterName, getterModifiers, 
node.getType(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, getterBlock);
+secondGetter.setSynthetic(true);
+addPropertyMethod(secondGetter);
+visitMethod(secondGetter);
+}
+
 protected void addPropertyMethod(MethodNode method) {
 classNode.addMethod(method);
 // GROOVY-4415 / GROOVY-4645: check that there's no abstract method 
which corresponds to this one
@@ -915,22 +915,10 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 );
 k++;
 } else if (parameter.hasInitialExpression()) {
-newParams[index++] = parameter;
-arguments.addExpression(
-new CastExpression(
-parameter.getType(),
-new 
VariableExpression(parameter.getName())
-)
-);
+index = addExpression(newParams, arguments, index, 
parameter);
 k++;
 } else {
-newParams[index++] = parameter;
-arguments.addExpression(
-new CastExpression(
-parameter.getType(),
-new 
VariableExpression(parameter.getName())
-)
-);
+index = addExpression(newParams, arguments, index, 
parameter);
 }
 }
 }
@@ -944,6 +932,17 @@ public class Verifier implements GroovyClassVisitor, 
Opcodes {
 }
 }
 
+private int addExpression(Parameter[] newParams, ArgumentListExpression 
arguments, int index, Parameter parameter) {
+newParams[index++] = parameter;
+arguments.addExpression(
+new CastExpression(
+parameter.getType(),
+new VariableExpr

groovy git commit: Minor refactoring: remove duplicated code of `ResolveVisitor`

2018-02-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 57dca93a9 -> 54e9edf0d


Minor refactoring: remove duplicated code of `ResolveVisitor`

(cherry picked from commit 5030e40)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/54e9edf0
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/54e9edf0
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/54e9edf0

Branch: refs/heads/GROOVY_2_5_X
Commit: 54e9edf0df0e33737f82fc3c1742e40e76bfaff8
Parents: 57dca93
Author: sunlan 
Authored: Wed Feb 28 11:35:16 2018 +0800
Committer: sunlan 
Committed: Wed Feb 28 12:08:55 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 47 
 1 file changed, 19 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/54e9edf0/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 922c528..a06ad99 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -367,28 +367,14 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 // name in X.
 // GROOVY-4043: Do this check up the hierarchy, if needed
 Map hierClasses = new LinkedHashMap();
-ClassNode val;
-for(ClassNode classToCheck = currentClass; classToCheck != 
ClassHelper.OBJECT_TYPE; 
+for(ClassNode classToCheck = currentClass; classToCheck != 
ClassHelper.OBJECT_TYPE;
 classToCheck = classToCheck.getSuperClass()) {
 if(classToCheck == null || 
hierClasses.containsKey(classToCheck.getName())) break;
 hierClasses.put(classToCheck.getName(), classToCheck);
 }
 
 for (ClassNode classToCheck : hierClasses.values()) {
-val = new ConstructedNestedClass(classToCheck,type.getName());
-if (resolveFromCompileUnit(val)) {
-type.setRedirect(val);
-return true;
-}
-// also check interfaces in case we have interfaces with nested 
classes
-for (ClassNode next : classToCheck.getAllInterfaces()) {
-if (type.getName().contains(next.getName())) continue;
-val = new ConstructedNestedClass(next,type.getName());
-if (resolve(val, false, false, false)) {
-type.setRedirect(val);
-return true;
-}
-}
+if (setRedirect(type, classToCheck)) return true;
 }
 
 // another case we want to check here is if we are in a
@@ -416,22 +402,27 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 }
 // most outer class is now element 0
 for (ClassNode testNode : outerClasses) {
-val = new ConstructedNestedClass(testNode,type.getName());
-if (resolveFromCompileUnit(val)) {
+if (setRedirect(type, testNode)) return true;
+}
+
+return false;
+}
+
+private boolean setRedirect(ClassNode type, ClassNode classToCheck) {
+ClassNode val = new ConstructedNestedClass(classToCheck, 
type.getName());
+if (resolveFromCompileUnit(val)) {
+type.setRedirect(val);
+return true;
+}
+// also check interfaces in case we have interfaces with nested classes
+for (ClassNode next : classToCheck.getAllInterfaces()) {
+if (type.getName().contains(next.getName())) continue;
+val = new ConstructedNestedClass(next, type.getName());
+if (resolve(val, false, false, false)) {
 type.setRedirect(val);
 return true;
 }
-// also check interfaces in case we have interfaces with nested 
classes
-for (ClassNode next : testNode.getAllInterfaces()) {
-if (type.getName().contains(next.getName())) continue;
-val = new ConstructedNestedClass(next,type.getName());
-if (resolve(val, false, false, false)) {
-type.setRedirect(val);
-return true;
-}
-}
 }
-
 return false;
 }
 



groovy git commit: Minor refactoring: remove duplicated code of `ResolveVisitor`

2018-02-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 8e0ae440e -> 74c21214b


Minor refactoring: remove duplicated code of `ResolveVisitor`

(cherry picked from commit 5030e40)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/74c21214
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/74c21214
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/74c21214

Branch: refs/heads/GROOVY_2_6_X
Commit: 74c21214bb6f90cf30e85f0340f6adbbb0f9501f
Parents: 8e0ae44
Author: sunlan 
Authored: Wed Feb 28 11:35:16 2018 +0800
Committer: sunlan 
Committed: Wed Feb 28 12:08:26 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 47 
 1 file changed, 19 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/74c21214/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 922c528..a06ad99 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -367,28 +367,14 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 // name in X.
 // GROOVY-4043: Do this check up the hierarchy, if needed
 Map hierClasses = new LinkedHashMap();
-ClassNode val;
-for(ClassNode classToCheck = currentClass; classToCheck != 
ClassHelper.OBJECT_TYPE; 
+for(ClassNode classToCheck = currentClass; classToCheck != 
ClassHelper.OBJECT_TYPE;
 classToCheck = classToCheck.getSuperClass()) {
 if(classToCheck == null || 
hierClasses.containsKey(classToCheck.getName())) break;
 hierClasses.put(classToCheck.getName(), classToCheck);
 }
 
 for (ClassNode classToCheck : hierClasses.values()) {
-val = new ConstructedNestedClass(classToCheck,type.getName());
-if (resolveFromCompileUnit(val)) {
-type.setRedirect(val);
-return true;
-}
-// also check interfaces in case we have interfaces with nested 
classes
-for (ClassNode next : classToCheck.getAllInterfaces()) {
-if (type.getName().contains(next.getName())) continue;
-val = new ConstructedNestedClass(next,type.getName());
-if (resolve(val, false, false, false)) {
-type.setRedirect(val);
-return true;
-}
-}
+if (setRedirect(type, classToCheck)) return true;
 }
 
 // another case we want to check here is if we are in a
@@ -416,22 +402,27 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 }
 // most outer class is now element 0
 for (ClassNode testNode : outerClasses) {
-val = new ConstructedNestedClass(testNode,type.getName());
-if (resolveFromCompileUnit(val)) {
+if (setRedirect(type, testNode)) return true;
+}
+
+return false;
+}
+
+private boolean setRedirect(ClassNode type, ClassNode classToCheck) {
+ClassNode val = new ConstructedNestedClass(classToCheck, 
type.getName());
+if (resolveFromCompileUnit(val)) {
+type.setRedirect(val);
+return true;
+}
+// also check interfaces in case we have interfaces with nested classes
+for (ClassNode next : classToCheck.getAllInterfaces()) {
+if (type.getName().contains(next.getName())) continue;
+val = new ConstructedNestedClass(next, type.getName());
+if (resolve(val, false, false, false)) {
 type.setRedirect(val);
 return true;
 }
-// also check interfaces in case we have interfaces with nested 
classes
-for (ClassNode next : testNode.getAllInterfaces()) {
-if (type.getName().contains(next.getName())) continue;
-val = new ConstructedNestedClass(next,type.getName());
-if (resolve(val, false, false, false)) {
-type.setRedirect(val);
-return true;
-}
-}
 }
-
 return false;
 }
 



groovy git commit: Minor refactoring: remove duplicated code of `ResolveVisitor`

2018-02-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 1937901a6 -> 5030e401a


Minor refactoring: remove duplicated code of `ResolveVisitor`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/5030e401
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/5030e401
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/5030e401

Branch: refs/heads/master
Commit: 5030e401a141165dd60a603b62dd0351b2f15f3f
Parents: 1937901
Author: sunlan 
Authored: Wed Feb 28 11:35:16 2018 +0800
Committer: sunlan 
Committed: Wed Feb 28 11:35:16 2018 +0800

--
 .../codehaus/groovy/control/ResolveVisitor.java | 47 
 1 file changed, 19 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/5030e401/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 922c528..a06ad99 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -367,28 +367,14 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 // name in X.
 // GROOVY-4043: Do this check up the hierarchy, if needed
 Map hierClasses = new LinkedHashMap();
-ClassNode val;
-for(ClassNode classToCheck = currentClass; classToCheck != 
ClassHelper.OBJECT_TYPE; 
+for(ClassNode classToCheck = currentClass; classToCheck != 
ClassHelper.OBJECT_TYPE;
 classToCheck = classToCheck.getSuperClass()) {
 if(classToCheck == null || 
hierClasses.containsKey(classToCheck.getName())) break;
 hierClasses.put(classToCheck.getName(), classToCheck);
 }
 
 for (ClassNode classToCheck : hierClasses.values()) {
-val = new ConstructedNestedClass(classToCheck,type.getName());
-if (resolveFromCompileUnit(val)) {
-type.setRedirect(val);
-return true;
-}
-// also check interfaces in case we have interfaces with nested 
classes
-for (ClassNode next : classToCheck.getAllInterfaces()) {
-if (type.getName().contains(next.getName())) continue;
-val = new ConstructedNestedClass(next,type.getName());
-if (resolve(val, false, false, false)) {
-type.setRedirect(val);
-return true;
-}
-}
+if (setRedirect(type, classToCheck)) return true;
 }
 
 // another case we want to check here is if we are in a
@@ -416,22 +402,27 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 }
 // most outer class is now element 0
 for (ClassNode testNode : outerClasses) {
-val = new ConstructedNestedClass(testNode,type.getName());
-if (resolveFromCompileUnit(val)) {
+if (setRedirect(type, testNode)) return true;
+}
+
+return false;
+}
+
+private boolean setRedirect(ClassNode type, ClassNode classToCheck) {
+ClassNode val = new ConstructedNestedClass(classToCheck, 
type.getName());
+if (resolveFromCompileUnit(val)) {
+type.setRedirect(val);
+return true;
+}
+// also check interfaces in case we have interfaces with nested classes
+for (ClassNode next : classToCheck.getAllInterfaces()) {
+if (type.getName().contains(next.getName())) continue;
+val = new ConstructedNestedClass(next, type.getName());
+if (resolve(val, false, false, false)) {
 type.setRedirect(val);
 return true;
 }
-// also check interfaces in case we have interfaces with nested 
classes
-for (ClassNode next : testNode.getAllInterfaces()) {
-if (type.getName().contains(next.getName())) continue;
-val = new ConstructedNestedClass(next,type.getName());
-if (resolve(val, false, false, false)) {
-type.setRedirect(val);
-return true;
-}
-}
 }
-
 return false;
 }
 



groovy git commit: Minor refactoring: remove duplicated code of `ProxyGeneratorAdapter`

2018-02-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 273ef950a -> 57dca93a9


Minor refactoring: remove duplicated code of `ProxyGeneratorAdapter`

(cherry picked from commit 1937901)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/57dca93a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/57dca93a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/57dca93a

Branch: refs/heads/GROOVY_2_5_X
Commit: 57dca93a9d31a981b46222fb4866fae6e0044e5f
Parents: 273ef95
Author: sunlan 
Authored: Wed Feb 28 10:27:22 2018 +0800
Committer: sunlan 
Committed: Wed Feb 28 10:54:16 2018 +0800

--
 .../org/codehaus/groovy/ast/ClassHelper.java|   4 +-
 .../groovy/classgen/asm/BytecodeHelper.java |  10 +-
 .../classgen/asm/util/TypeDescriptionUtil.java  | 120 ---
 .../groovy/classgen/asm/util/TypeUtil.java  | 200 +++
 .../groovy/runtime/ProxyGeneratorAdapter.java   |  82 +++-
 5 files changed, 232 insertions(+), 184 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/57dca93a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java 
b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index f08d2f2..c2f76ce 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -29,7 +29,7 @@ import groovy.lang.Range;
 import groovy.lang.Reference;
 import groovy.lang.Script;
 import org.apache.groovy.util.Maps;
-import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.runtime.GeneratedClosure;
 import org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport;
 import org.codehaus.groovy.transform.trait.Traits;
@@ -313,7 +313,7 @@ public class ClassHelper {
  * @see #make(String)
  */
 public static boolean isPrimitiveType(ClassNode cn) {
-return TypeDescriptionUtil.isPrimitiveType(cn);
+return TypeUtil.isPrimitiveType(cn);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/groovy/blob/57dca93a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
index 197ac9c..b5880fd 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
@@ -25,7 +25,7 @@ import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.Parameter;
 import org.codehaus.groovy.ast.decompiled.DecompiledClassNode;
-import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.reflection.ReflectionCache;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 import org.objectweb.asm.Label;
@@ -126,7 +126,7 @@ public class BytecodeHelper implements Opcodes {
  * @return the ASM type description for class loading
  */
 public static String getClassLoadingTypeDescription(ClassNode c) {
-String desc = TypeDescriptionUtil.getDescriptionByType(c);
+String desc = TypeUtil.getDescriptionByType(c);
 
 if (!c.isArray()) {
 if (desc.startsWith("L") && desc.endsWith(";")) {
@@ -161,7 +161,7 @@ public class BytecodeHelper implements Opcodes {
 d = d.redirect();
 }
 
-String desc = TypeDescriptionUtil.getDescriptionByType(d);
+String desc = TypeUtil.getDescriptionByType(d);
 
 if (!end && desc.endsWith(";")) {
 desc = desc.substring(0, desc.length() - 1);
@@ -251,7 +251,7 @@ public class BytecodeHelper implements Opcodes {
 return "java.lang.Object;";
 }
 
-if (TypeDescriptionUtil.isPrimitiveType(name)) {
+if (TypeUtil.isPrimitiveType(name)) {
 return name;
 }
 
@@ -272,7 +272,7 @@ public class BytecodeHelper implements Opcodes {
 prefix = "[";
 name = name.substring(0, name.length() - 2);
 
-return prefix + TypeDescriptionUtil.getDescriptionByName(name);
+return prefix + TypeUtil.getDescriptionByName(name);
 }
 
 return name.replace('/', '.');

http://git-wip-us.apache.org/repos/asf/groovy/blob/57dca93a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java
--
diff --git 
a/

groovy git commit: Minor refactoring: remove duplicated code of `ProxyGeneratorAdapter`

2018-02-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X b4e116f5f -> 8e0ae440e


Minor refactoring: remove duplicated code of `ProxyGeneratorAdapter`

(cherry picked from commit 1937901)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/8e0ae440
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/8e0ae440
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/8e0ae440

Branch: refs/heads/GROOVY_2_6_X
Commit: 8e0ae440e5aa845d07c4fc38863c7f86c1420caf
Parents: b4e116f
Author: sunlan 
Authored: Wed Feb 28 10:27:22 2018 +0800
Committer: sunlan 
Committed: Wed Feb 28 10:53:35 2018 +0800

--
 .../org/codehaus/groovy/ast/ClassHelper.java|   4 +-
 .../groovy/classgen/asm/BytecodeHelper.java |  10 +-
 .../classgen/asm/util/TypeDescriptionUtil.java  | 120 ---
 .../groovy/classgen/asm/util/TypeUtil.java  | 200 +++
 .../groovy/runtime/ProxyGeneratorAdapter.java   |  82 +++-
 5 files changed, 232 insertions(+), 184 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/8e0ae440/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java 
b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index fa93fb4..2e034fb 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -29,7 +29,7 @@ import groovy.lang.Range;
 import groovy.lang.Reference;
 import groovy.lang.Script;
 import org.apache.groovy.util.Maps;
-import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.runtime.GeneratedClosure;
 import org.codehaus.groovy.runtime.GeneratedLambda;
 import org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport;
@@ -318,7 +318,7 @@ public class ClassHelper {
  * @see #make(String)
  */
 public static boolean isPrimitiveType(ClassNode cn) {
-return TypeDescriptionUtil.isPrimitiveType(cn);
+return TypeUtil.isPrimitiveType(cn);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/groovy/blob/8e0ae440/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
index 197ac9c..b5880fd 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
@@ -25,7 +25,7 @@ import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.Parameter;
 import org.codehaus.groovy.ast.decompiled.DecompiledClassNode;
-import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.reflection.ReflectionCache;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 import org.objectweb.asm.Label;
@@ -126,7 +126,7 @@ public class BytecodeHelper implements Opcodes {
  * @return the ASM type description for class loading
  */
 public static String getClassLoadingTypeDescription(ClassNode c) {
-String desc = TypeDescriptionUtil.getDescriptionByType(c);
+String desc = TypeUtil.getDescriptionByType(c);
 
 if (!c.isArray()) {
 if (desc.startsWith("L") && desc.endsWith(";")) {
@@ -161,7 +161,7 @@ public class BytecodeHelper implements Opcodes {
 d = d.redirect();
 }
 
-String desc = TypeDescriptionUtil.getDescriptionByType(d);
+String desc = TypeUtil.getDescriptionByType(d);
 
 if (!end && desc.endsWith(";")) {
 desc = desc.substring(0, desc.length() - 1);
@@ -251,7 +251,7 @@ public class BytecodeHelper implements Opcodes {
 return "java.lang.Object;";
 }
 
-if (TypeDescriptionUtil.isPrimitiveType(name)) {
+if (TypeUtil.isPrimitiveType(name)) {
 return name;
 }
 
@@ -272,7 +272,7 @@ public class BytecodeHelper implements Opcodes {
 prefix = "[";
 name = name.substring(0, name.length() - 2);
 
-return prefix + TypeDescriptionUtil.getDescriptionByName(name);
+return prefix + TypeUtil.getDescriptionByName(name);
 }
 
 return name.replace('/', '.');

http://git-wip-us.apache.org/repos/asf/groovy/blob/8e0ae440/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java
--
diff --git 
a

groovy git commit: Minor refactoring: remove duplicated code of `ProxyGeneratorAdapter`

2018-02-27 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 90dde8534 -> 1937901a6


Minor refactoring: remove duplicated code of `ProxyGeneratorAdapter`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/1937901a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/1937901a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/1937901a

Branch: refs/heads/master
Commit: 1937901a6d439450ae542dc219ebc1d8b4f5b479
Parents: 90dde85
Author: sunlan 
Authored: Wed Feb 28 10:27:22 2018 +0800
Committer: sunlan 
Committed: Wed Feb 28 10:27:22 2018 +0800

--
 .../org/codehaus/groovy/ast/ClassHelper.java|   4 +-
 .../groovy/classgen/asm/BytecodeHelper.java |  10 +-
 .../classgen/asm/util/TypeDescriptionUtil.java  | 120 ---
 .../groovy/classgen/asm/util/TypeUtil.java  | 200 +++
 .../groovy/runtime/ProxyGeneratorAdapter.java   |  82 +++-
 5 files changed, 232 insertions(+), 184 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/1937901a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java 
b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index fa93fb4..2e034fb 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -29,7 +29,7 @@ import groovy.lang.Range;
 import groovy.lang.Reference;
 import groovy.lang.Script;
 import org.apache.groovy.util.Maps;
-import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.runtime.GeneratedClosure;
 import org.codehaus.groovy.runtime.GeneratedLambda;
 import org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport;
@@ -318,7 +318,7 @@ public class ClassHelper {
  * @see #make(String)
  */
 public static boolean isPrimitiveType(ClassNode cn) {
-return TypeDescriptionUtil.isPrimitiveType(cn);
+return TypeUtil.isPrimitiveType(cn);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/groovy/blob/1937901a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
index 197ac9c..b5880fd 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
@@ -25,7 +25,7 @@ import org.codehaus.groovy.ast.GenericsType;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.Parameter;
 import org.codehaus.groovy.ast.decompiled.DecompiledClassNode;
-import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
+import org.codehaus.groovy.classgen.asm.util.TypeUtil;
 import org.codehaus.groovy.reflection.ReflectionCache;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 import org.objectweb.asm.Label;
@@ -126,7 +126,7 @@ public class BytecodeHelper implements Opcodes {
  * @return the ASM type description for class loading
  */
 public static String getClassLoadingTypeDescription(ClassNode c) {
-String desc = TypeDescriptionUtil.getDescriptionByType(c);
+String desc = TypeUtil.getDescriptionByType(c);
 
 if (!c.isArray()) {
 if (desc.startsWith("L") && desc.endsWith(";")) {
@@ -161,7 +161,7 @@ public class BytecodeHelper implements Opcodes {
 d = d.redirect();
 }
 
-String desc = TypeDescriptionUtil.getDescriptionByType(d);
+String desc = TypeUtil.getDescriptionByType(d);
 
 if (!end && desc.endsWith(";")) {
 desc = desc.substring(0, desc.length() - 1);
@@ -251,7 +251,7 @@ public class BytecodeHelper implements Opcodes {
 return "java.lang.Object;";
 }
 
-if (TypeDescriptionUtil.isPrimitiveType(name)) {
+if (TypeUtil.isPrimitiveType(name)) {
 return name;
 }
 
@@ -272,7 +272,7 @@ public class BytecodeHelper implements Opcodes {
 prefix = "[";
 name = name.substring(0, name.length() - 2);
 
-return prefix + TypeDescriptionUtil.getDescriptionByName(name);
+return prefix + TypeUtil.getDescriptionByName(name);
 }
 
 return name.replace('/', '.');

http://git-wip-us.apache.org/repos/asf/groovy/blob/1937901a/src/main/java/org/codehaus/groovy/classgen/asm/util/TypeDescriptionUtil.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/classgen/asm/u

groovy git commit: Minor refactoring: fix potential performance issue and extract variable

2018-02-26 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 8f75f97fe -> f4871abaf


Minor refactoring: fix potential performance issue and extract variable

(cherry picked from commit 33be1e1)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f4871aba
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f4871aba
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f4871aba

Branch: refs/heads/GROOVY_2_5_X
Commit: f4871abaff37d23d590d713cd2486bd49f19538a
Parents: 8f75f97
Author: sunlan 
Authored: Tue Feb 27 08:29:01 2018 +0800
Committer: sunlan 
Committed: Tue Feb 27 09:17:35 2018 +0800

--
 .../groovy/macro/matcher/ContextualClassCodeVisitor.java| 4 +---
 .../groovy/org/codehaus/groovy/macro/matcher/TreeContext.java   | 2 ++
 .../org/codehaus/groovy/macro/methods/MacroGroovyMethods.java   | 5 +++--
 .../groovy/macro/transform/MacroCallTransformingVisitor.java| 2 +-
 4 files changed, 7 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/f4871aba/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
index f062837..efcdc9e 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
@@ -555,9 +555,7 @@ public abstract class ContextualClassCodeVisitor extends 
ClassCodeVisitorSupport
 public List getTreePath() {
 List path = new LinkedList();
 path.add(lastContext);
-for (TreeContext treeContext : treeContextStack) {
-path.add(treeContext);
-}
+path.addAll(treeContextStack);
 return path;
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/f4871aba/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
index de31c8a..f8fd564 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
@@ -42,6 +42,8 @@ public class TreeContext {
 final Map> userdata = MapWithDefault.newInstance(
 new HashMap>(),
 new Closure(this) {
+private static final long serialVersionUID = 
-4694773031569936343L;
+
 public Object doCall(Object key) {
 return new LinkedList();
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/f4871aba/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
index ee5e9c7..2a14a30 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
@@ -195,12 +195,13 @@ public class MacroGroovyMethods {
 protected static ClosureExpression getClosureArgument(SourceUnit source, 
MethodCallExpression call) {
 TupleExpression tupleArguments = getMacroArguments(source, call);
 
-if (tupleArguments == null || tupleArguments.getExpressions().size() < 
1) {
+int size = tupleArguments.getExpressions().size();
+if (tupleArguments == null || size < 1) {
 source.addError(new SyntaxException("Call arguments should have at 
least one argument" + '\n', tupleArguments));
 return null;
 }
 
-Expression result = 
tupleArguments.getExpression(tupleArguments.getExpressions().size() - 1);
+Expression result = tupleArguments.getExpression(size - 1);
 if (!(result instanceof ClosureExpression)) {
 source.addError(new SyntaxException("Last call argument should be 
a closure" + '\n', result));
 return null;

http://git-wip-us.apache.org/repos/asf/groo

groovy git commit: Minor refactoring: fix potential performance issue and extract variable

2018-02-26 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 63bd67bad -> 0be41c2f0


Minor refactoring: fix potential performance issue and extract variable

(cherry picked from commit 33be1e1)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/0be41c2f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/0be41c2f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/0be41c2f

Branch: refs/heads/GROOVY_2_6_X
Commit: 0be41c2f042110be388714ea6dc62f7fcd116fbc
Parents: 63bd67b
Author: sunlan 
Authored: Tue Feb 27 08:29:01 2018 +0800
Committer: sunlan 
Committed: Tue Feb 27 09:16:35 2018 +0800

--
 .../groovy/macro/matcher/ContextualClassCodeVisitor.java| 4 +---
 .../groovy/org/codehaus/groovy/macro/matcher/TreeContext.java   | 2 ++
 .../org/codehaus/groovy/macro/methods/MacroGroovyMethods.java   | 5 +++--
 .../groovy/macro/transform/MacroCallTransformingVisitor.java| 2 +-
 4 files changed, 7 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/0be41c2f/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
index f062837..efcdc9e 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
@@ -555,9 +555,7 @@ public abstract class ContextualClassCodeVisitor extends 
ClassCodeVisitorSupport
 public List getTreePath() {
 List path = new LinkedList();
 path.add(lastContext);
-for (TreeContext treeContext : treeContextStack) {
-path.add(treeContext);
-}
+path.addAll(treeContextStack);
 return path;
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/0be41c2f/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
index de31c8a..f8fd564 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
@@ -42,6 +42,8 @@ public class TreeContext {
 final Map> userdata = MapWithDefault.newInstance(
 new HashMap>(),
 new Closure(this) {
+private static final long serialVersionUID = 
-4694773031569936343L;
+
 public Object doCall(Object key) {
 return new LinkedList();
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/0be41c2f/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
index ee5e9c7..2a14a30 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
@@ -195,12 +195,13 @@ public class MacroGroovyMethods {
 protected static ClosureExpression getClosureArgument(SourceUnit source, 
MethodCallExpression call) {
 TupleExpression tupleArguments = getMacroArguments(source, call);
 
-if (tupleArguments == null || tupleArguments.getExpressions().size() < 
1) {
+int size = tupleArguments.getExpressions().size();
+if (tupleArguments == null || size < 1) {
 source.addError(new SyntaxException("Call arguments should have at 
least one argument" + '\n', tupleArguments));
 return null;
 }
 
-Expression result = 
tupleArguments.getExpression(tupleArguments.getExpressions().size() - 1);
+Expression result = tupleArguments.getExpression(size - 1);
 if (!(result instanceof ClosureExpression)) {
 source.addError(new SyntaxException("Last call argument should be 
a closure" + '\n', result));
 return null;

http://git-wip-us.apache.org/repos/asf/groo

groovy git commit: Minor refactoring: fix potential performance issue and extract variable

2018-02-26 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master ee2a8f572 -> 33be1e1d5


Minor refactoring: fix potential performance issue and extract variable


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/33be1e1d
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/33be1e1d
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/33be1e1d

Branch: refs/heads/master
Commit: 33be1e1d51dd0b238ee551eff0c46a2306b7e339
Parents: ee2a8f5
Author: sunlan 
Authored: Tue Feb 27 08:29:01 2018 +0800
Committer: sunlan 
Committed: Tue Feb 27 08:29:01 2018 +0800

--
 .../groovy/macro/matcher/ContextualClassCodeVisitor.java| 4 +---
 .../groovy/org/codehaus/groovy/macro/matcher/TreeContext.java   | 2 ++
 .../org/codehaus/groovy/macro/methods/MacroGroovyMethods.java   | 5 +++--
 .../groovy/macro/transform/MacroCallTransformingVisitor.java| 2 +-
 4 files changed, 7 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/33be1e1d/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
index f062837..efcdc9e 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/ContextualClassCodeVisitor.java
@@ -555,9 +555,7 @@ public abstract class ContextualClassCodeVisitor extends 
ClassCodeVisitorSupport
 public List getTreePath() {
 List path = new LinkedList();
 path.add(lastContext);
-for (TreeContext treeContext : treeContextStack) {
-path.add(treeContext);
-}
+path.addAll(treeContextStack);
 return path;
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/33be1e1d/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
index de31c8a..f8fd564 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/matcher/TreeContext.java
@@ -42,6 +42,8 @@ public class TreeContext {
 final Map> userdata = MapWithDefault.newInstance(
 new HashMap>(),
 new Closure(this) {
+private static final long serialVersionUID = 
-4694773031569936343L;
+
 public Object doCall(Object key) {
 return new LinkedList();
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/33be1e1d/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
--
diff --git 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
index ee5e9c7..2a14a30 100644
--- 
a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
+++ 
b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/methods/MacroGroovyMethods.java
@@ -195,12 +195,13 @@ public class MacroGroovyMethods {
 protected static ClosureExpression getClosureArgument(SourceUnit source, 
MethodCallExpression call) {
 TupleExpression tupleArguments = getMacroArguments(source, call);
 
-if (tupleArguments == null || tupleArguments.getExpressions().size() < 
1) {
+int size = tupleArguments.getExpressions().size();
+if (tupleArguments == null || size < 1) {
 source.addError(new SyntaxException("Call arguments should have at 
least one argument" + '\n', tupleArguments));
 return null;
 }
 
-Expression result = 
tupleArguments.getExpression(tupleArguments.getExpressions().size() - 1);
+Expression result = tupleArguments.getExpression(size - 1);
 if (!(result instanceof ClosureExpression)) {
 source.addError(new SyntaxException("Last call argument should be 
a closure" + '\n', result));
 return null;

http://git-wip-us.apache.org/repos/asf/groovy/blob/33be1e1d/subprojects/groovy-macro/src/mai

groovy git commit: Minor refactoring: remove duplicated code and add `serialVersionUID`

2018-02-23 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_5_X 3b2d146ec -> 546aad86d


Minor refactoring: remove duplicated code and add `serialVersionUID`

(cherry picked from commit 0aba754)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/546aad86
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/546aad86
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/546aad86

Branch: refs/heads/GROOVY_2_5_X
Commit: 546aad86d97cfd9533997b73869ffaa8e97f9958
Parents: 3b2d146
Author: sunlan 
Authored: Sat Feb 24 12:35:14 2018 +0800
Committer: sunlan 
Committed: Sat Feb 24 12:36:41 2018 +0800

--
 .../groovy/text/GStringTemplateEngine.java  | 19 +++--
 .../groovy/text/StreamingTemplateEngine.java| 22 +---
 .../groovy/text/TemplateExecutionException.java |  1 +
 .../groovy/text/TemplateParseException.java |  1 +
 .../text/markup/AutoNewLineTransformer.java |  4 ++--
 .../groovy/groovy/text/markup/BaseTemplate.java |  2 ++
 6 files changed, 23 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/546aad86/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
index a4a99d1..f6cf414 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
@@ -262,6 +262,12 @@ public class GStringTemplateEngine extends TemplateEngine {
 }
 templateExpressions.append((char) pendingC);
 
+readAndAppend(reader, templateExpressions);
+
+templateExpressions.append(";\n ");
+}
+
+private static void readAndAppend(Reader reader, StringBuilder 
templateExpressions) throws IOException {
 while (true) {
 int c = reader.read();
 if (c == -1) break;
@@ -272,8 +278,6 @@ public class GStringTemplateEngine extends TemplateEngine {
 }
 templateExpressions.append((char) c);
 }
-
-templateExpressions.append(";\n ");
 }
 
 /**
@@ -294,16 +298,7 @@ public class GStringTemplateEngine extends TemplateEngine {
 
 templateExpressions.append("${");
 
-while (true) {
-int c = reader.read();
-if (c == -1) break;
-if (c == '%') {
-c = reader.read();
-if (c == '>') break;
-templateExpressions.append('%');
-}
-templateExpressions.append((char) c);
-}
+readAndAppend(reader, templateExpressions);
 
 templateExpressions.append('}');
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/546aad86/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
index 6d1640e..6b8433a 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
@@ -261,7 +261,9 @@ public class StreamingTemplateEngine extends TemplateEngine 
{
 
 String scriptSource;
 
-private static class FinishedReadingException extends Exception {}
+private static class FinishedReadingException extends Exception {
+private static final long serialVersionUID = -3786157136157691230L;
+}
 
 //WE USE THIS AS REUSABLE
 //CHECKSTYLE.OFF: ConstantNameCheck - special case with a reusable 
exception
@@ -744,6 +746,12 @@ public class StreamingTemplateEngine extends 
TemplateEngine {
 append(target, targetPosition, "  ");
 append(target, targetPosition, (char) pendingC);
 
+readAndAppend(reader, target, sourcePosition, targetPosition);
+
+append(target, targetPosition, ';');
+}
+
+private void readAndAppend(Reader reader, StringBuilder target, 
Position sourcePosition, Position targetPosition) throws IOException, 
FinishedReadingException {
 while (true) {
 int c = read(reader, sourcePosition);
 if (c == '%') {
@@ -753,8 +761,6 @@ public class 

groovy git commit: Minor refactoring: remove duplicated code and add `serialVersionUID`

2018-02-23 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 139d3ade9 -> d00b01834


Minor refactoring: remove duplicated code and add `serialVersionUID`

(cherry picked from commit 0aba754)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/d00b0183
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/d00b0183
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/d00b0183

Branch: refs/heads/GROOVY_2_6_X
Commit: d00b0183443e1a890b65c812f81d010cd88862ae
Parents: 139d3ad
Author: sunlan 
Authored: Sat Feb 24 12:35:14 2018 +0800
Committer: sunlan 
Committed: Sat Feb 24 12:36:09 2018 +0800

--
 .../groovy/text/GStringTemplateEngine.java  | 19 +++--
 .../groovy/text/StreamingTemplateEngine.java| 22 +---
 .../groovy/text/TemplateExecutionException.java |  1 +
 .../groovy/text/TemplateParseException.java |  1 +
 .../text/markup/AutoNewLineTransformer.java |  4 ++--
 .../groovy/groovy/text/markup/BaseTemplate.java |  2 ++
 6 files changed, 23 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/d00b0183/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
index a4a99d1..f6cf414 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
@@ -262,6 +262,12 @@ public class GStringTemplateEngine extends TemplateEngine {
 }
 templateExpressions.append((char) pendingC);
 
+readAndAppend(reader, templateExpressions);
+
+templateExpressions.append(";\n ");
+}
+
+private static void readAndAppend(Reader reader, StringBuilder 
templateExpressions) throws IOException {
 while (true) {
 int c = reader.read();
 if (c == -1) break;
@@ -272,8 +278,6 @@ public class GStringTemplateEngine extends TemplateEngine {
 }
 templateExpressions.append((char) c);
 }
-
-templateExpressions.append(";\n ");
 }
 
 /**
@@ -294,16 +298,7 @@ public class GStringTemplateEngine extends TemplateEngine {
 
 templateExpressions.append("${");
 
-while (true) {
-int c = reader.read();
-if (c == -1) break;
-if (c == '%') {
-c = reader.read();
-if (c == '>') break;
-templateExpressions.append('%');
-}
-templateExpressions.append((char) c);
-}
+readAndAppend(reader, templateExpressions);
 
 templateExpressions.append('}');
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/d00b0183/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
index 6d1640e..6b8433a 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
@@ -261,7 +261,9 @@ public class StreamingTemplateEngine extends TemplateEngine 
{
 
 String scriptSource;
 
-private static class FinishedReadingException extends Exception {}
+private static class FinishedReadingException extends Exception {
+private static final long serialVersionUID = -3786157136157691230L;
+}
 
 //WE USE THIS AS REUSABLE
 //CHECKSTYLE.OFF: ConstantNameCheck - special case with a reusable 
exception
@@ -744,6 +746,12 @@ public class StreamingTemplateEngine extends 
TemplateEngine {
 append(target, targetPosition, "  ");
 append(target, targetPosition, (char) pendingC);
 
+readAndAppend(reader, target, sourcePosition, targetPosition);
+
+append(target, targetPosition, ';');
+}
+
+private void readAndAppend(Reader reader, StringBuilder target, 
Position sourcePosition, Position targetPosition) throws IOException, 
FinishedReadingException {
 while (true) {
 int c = read(reader, sourcePosition);
 if (c == '%') {
@@ -753,8 +761,6 @@ public class 

groovy git commit: Minor refactoring: remove duplicated code and add `serialVersionUID`

2018-02-23 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 696dae54c -> 0aba754d9


Minor refactoring: remove duplicated code and add `serialVersionUID`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/0aba754d
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/0aba754d
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/0aba754d

Branch: refs/heads/master
Commit: 0aba754d9e31828644027f98099c301a192aa351
Parents: 696dae5
Author: sunlan 
Authored: Sat Feb 24 12:35:14 2018 +0800
Committer: sunlan 
Committed: Sat Feb 24 12:35:14 2018 +0800

--
 .../groovy/text/GStringTemplateEngine.java  | 19 +++--
 .../groovy/text/StreamingTemplateEngine.java| 22 +---
 .../groovy/text/TemplateExecutionException.java |  1 +
 .../groovy/text/TemplateParseException.java |  1 +
 .../text/markup/AutoNewLineTransformer.java |  4 ++--
 .../groovy/groovy/text/markup/BaseTemplate.java |  2 ++
 6 files changed, 23 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/0aba754d/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
index a4a99d1..f6cf414 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/GStringTemplateEngine.java
@@ -262,6 +262,12 @@ public class GStringTemplateEngine extends TemplateEngine {
 }
 templateExpressions.append((char) pendingC);
 
+readAndAppend(reader, templateExpressions);
+
+templateExpressions.append(";\n ");
+}
+
+private static void readAndAppend(Reader reader, StringBuilder 
templateExpressions) throws IOException {
 while (true) {
 int c = reader.read();
 if (c == -1) break;
@@ -272,8 +278,6 @@ public class GStringTemplateEngine extends TemplateEngine {
 }
 templateExpressions.append((char) c);
 }
-
-templateExpressions.append(";\n ");
 }
 
 /**
@@ -294,16 +298,7 @@ public class GStringTemplateEngine extends TemplateEngine {
 
 templateExpressions.append("${");
 
-while (true) {
-int c = reader.read();
-if (c == -1) break;
-if (c == '%') {
-c = reader.read();
-if (c == '>') break;
-templateExpressions.append('%');
-}
-templateExpressions.append((char) c);
-}
+readAndAppend(reader, templateExpressions);
 
 templateExpressions.append('}');
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/0aba754d/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
--
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
index 6d1640e..6b8433a 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/StreamingTemplateEngine.java
@@ -261,7 +261,9 @@ public class StreamingTemplateEngine extends TemplateEngine 
{
 
 String scriptSource;
 
-private static class FinishedReadingException extends Exception {}
+private static class FinishedReadingException extends Exception {
+private static final long serialVersionUID = -3786157136157691230L;
+}
 
 //WE USE THIS AS REUSABLE
 //CHECKSTYLE.OFF: ConstantNameCheck - special case with a reusable 
exception
@@ -744,6 +746,12 @@ public class StreamingTemplateEngine extends 
TemplateEngine {
 append(target, targetPosition, "  ");
 append(target, targetPosition, (char) pendingC);
 
+readAndAppend(reader, target, sourcePosition, targetPosition);
+
+append(target, targetPosition, ';');
+}
+
+private void readAndAppend(Reader reader, StringBuilder target, 
Position sourcePosition, Position targetPosition) throws IOException, 
FinishedReadingException {
 while (true) {
 int c = read(reader, sourcePosition);
 if (c == '%') {
@@ -753,8 +761,6 @@ public class StreamingTemplateEngine extends TemplateEngine 
{

groovy git commit: Minor refactoring: remove duplicated code of `visitListOfExpressions`

2018-02-19 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 75a16a0ab -> 5096e0cb8


Minor refactoring: remove duplicated code of `visitListOfExpressions`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/5096e0cb
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/5096e0cb
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/5096e0cb

Branch: refs/heads/master
Commit: 5096e0cb8a6a9402bd9139991cddc4d00d681943
Parents: 75a16a0
Author: danielsun1106 
Authored: Mon Feb 19 23:49:07 2018 +0800
Committer: danielsun1106 
Committed: Mon Feb 19 23:49:07 2018 +0800

--
 .../org/codehaus/groovy/ast/CodeVisitorSupport.java  | 15 ---
 .../org/codehaus/groovy/ast/GroovyCodeVisitor.java   | 15 +++
 .../control/customizers/SecureASTCustomizer.java | 12 
 .../inspect/swingui/ScriptToTreeNodeAdapter.groovy   |  2 +-
 .../codehaus/groovy/macro/matcher/ASTMatcher.groovy  |  2 +-
 5 files changed, 17 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/5096e0cb/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java 
b/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
index 523475e..51ef06e 100644
--- a/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
+++ b/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
@@ -32,7 +32,6 @@ import org.codehaus.groovy.ast.expr.ConstantExpression;
 import org.codehaus.groovy.ast.expr.ConstructorCallExpression;
 import org.codehaus.groovy.ast.expr.DeclarationExpression;
 import org.codehaus.groovy.ast.expr.ElvisOperatorExpression;
-import org.codehaus.groovy.ast.expr.Expression;
 import org.codehaus.groovy.ast.expr.FieldExpression;
 import org.codehaus.groovy.ast.expr.GStringExpression;
 import org.codehaus.groovy.ast.expr.ListExpression;
@@ -73,8 +72,6 @@ import org.codehaus.groovy.ast.stmt.TryCatchStatement;
 import org.codehaus.groovy.ast.stmt.WhileStatement;
 import org.codehaus.groovy.classgen.BytecodeExpression;
 
-import java.util.List;
-
 /**
  * Abstract base class for any GroovyCodeVisitor which by default
  * just walks the code and expression tree
@@ -316,18 +313,6 @@ public abstract class CodeVisitorSupport implements 
GroovyCodeVisitor {
 visitListOfExpressions(expression.getValues());
 }
 
-protected void visitListOfExpressions(List list) {
-if (list == null) return;
-for (Expression expression : list) {
-if (expression instanceof SpreadExpression) {
-Expression spread = ((SpreadExpression) 
expression).getExpression();
-spread.visit(this);
-} else {
-expression.visit(this);
-}
-}
-}
-
 public void visitCatchStatement(CatchStatement statement) {
 statement.getCode().visit(this);
 }

http://git-wip-us.apache.org/repos/asf/groovy/blob/5096e0cb/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java 
b/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
index db793cc..70f0e78 100644
--- a/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
@@ -32,6 +32,7 @@ import org.codehaus.groovy.ast.expr.ConstantExpression;
 import org.codehaus.groovy.ast.expr.ConstructorCallExpression;
 import org.codehaus.groovy.ast.expr.DeclarationExpression;
 import org.codehaus.groovy.ast.expr.ElvisOperatorExpression;
+import org.codehaus.groovy.ast.expr.Expression;
 import org.codehaus.groovy.ast.expr.FieldExpression;
 import org.codehaus.groovy.ast.expr.GStringExpression;
 import org.codehaus.groovy.ast.expr.LambdaExpression;
@@ -71,6 +72,8 @@ import org.codehaus.groovy.ast.stmt.TryCatchStatement;
 import org.codehaus.groovy.ast.stmt.WhileStatement;
 import org.codehaus.groovy.classgen.BytecodeExpression;
 
+import java.util.List;
+
 /**
  * An implementation of the visitor pattern for working with ASTNodes
  *
@@ -192,5 +195,17 @@ public interface GroovyCodeVisitor {
 void visitClosureListExpression(ClosureListExpression 
closureListExpression);
 
 void visitBytecodeExpression(BytecodeExpression expression);
+
+default void visitListOfExpressions(List list) {
+if (list == null) return;
+for (Expression expression : list) {
+if (expression instanceof SpreadExpression) {
+Expression spread = ((SpreadExpression) 
expression).getExpression();
+spread.visit(this);
+} else {
+

[2/2] groovy git commit: Minor refactoring: remove duplicated code of `ClassHelper`

2018-02-18 Thread sunlan
Minor refactoring: remove duplicated code of `ClassHelper`

(cherry picked from commit ee6060b)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/7f5927be
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/7f5927be
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/7f5927be

Branch: refs/heads/GROOVY_2_5_X
Commit: 7f5927be679bc568dd4dec8f18579aed51f85568
Parents: 12b2afe
Author: danielsun1106 
Authored: Sun Feb 18 18:28:28 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 19:13:48 2018 +0800

--
 .../org/codehaus/groovy/ast/ClassHelper.java| 67 +---
 1 file changed, 29 insertions(+), 38 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/7f5927be/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java 
b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index 3626242..8bb40dd 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -28,6 +28,7 @@ import groovy.lang.MetaClass;
 import groovy.lang.Range;
 import groovy.lang.Reference;
 import groovy.lang.Script;
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
 import org.codehaus.groovy.runtime.GeneratedClosure;
 import org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport;
@@ -243,6 +244,18 @@ public class ClassHelper {
 return makeWithoutCaching(name);
 }
 
+private static final Map 
PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP = Maps.of(
+boolean_TYPE, Boolean_TYPE,
+byte_TYPE, Byte_TYPE,
+char_TYPE, Character_TYPE,
+short_TYPE, Short_TYPE,
+int_TYPE, Integer_TYPE,
+long_TYPE, Long_TYPE,
+float_TYPE, Float_TYPE,
+double_TYPE, Double_TYPE,
+VOID_TYPE, void_WRAPPER_TYPE
+);
+
 /**
  * Creates a ClassNode containing the wrapper of a ClassNode
  * of primitive type. Any ClassNode representing a primitive
@@ -263,51 +276,29 @@ public class ClassHelper {
 public static ClassNode getWrapper(ClassNode cn) {
 cn = cn.redirect();
 if (!isPrimitiveType(cn)) return cn;
-if (cn == boolean_TYPE) {
-return Boolean_TYPE;
-} else if (cn == byte_TYPE) {
-return Byte_TYPE;
-} else if (cn == char_TYPE) {
-return Character_TYPE;
-} else if (cn == short_TYPE) {
-return Short_TYPE;
-} else if (cn == int_TYPE) {
-return Integer_TYPE;
-} else if (cn == long_TYPE) {
-return Long_TYPE;
-} else if (cn == float_TYPE) {
-return Float_TYPE;
-} else if (cn == double_TYPE) {
-return Double_TYPE;
-} else if (cn == VOID_TYPE) {
-return void_WRAPPER_TYPE;
-} else {
-return cn;
+
+ClassNode result = PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP.get(cn);
+
+if (null != result) {
+return result;
 }
+
+return cn;
 }
 
+private static final Map 
WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP = 
Maps.inverse(PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP);
+
 public static ClassNode getUnwrapper(ClassNode cn) {
 cn = cn.redirect();
 if (isPrimitiveType(cn)) return cn;
-if (cn == Boolean_TYPE) {
-return boolean_TYPE;
-} else if (cn == Byte_TYPE) {
-return byte_TYPE;
-} else if (cn == Character_TYPE) {
-return char_TYPE;
-} else if (cn == Short_TYPE) {
-return short_TYPE;
-} else if (cn == Integer_TYPE) {
-return int_TYPE;
-} else if (cn == Long_TYPE) {
-return long_TYPE;
-} else if (cn == Float_TYPE) {
-return float_TYPE;
-} else if (cn == Double_TYPE) {
-return double_TYPE;
-} else {
-return cn;
+
+ClassNode result = WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP.get(cn);
+
+if (null != result) {
+return result;
 }
+
+return cn;
 }
 
 



[2/2] groovy git commit: Minor refactoring: remove duplicated code of `ClassHelper`

2018-02-18 Thread sunlan
Minor refactoring: remove duplicated code of `ClassHelper`

(cherry picked from commit ee6060b)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/e06d2865
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/e06d2865
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/e06d2865

Branch: refs/heads/GROOVY_2_6_X
Commit: e06d2865e7f865120e84f74099339b81feaca6f7
Parents: 70ca52b
Author: danielsun1106 
Authored: Sun Feb 18 18:28:28 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 19:12:54 2018 +0800

--
 .../org/codehaus/groovy/ast/ClassHelper.java| 67 +---
 1 file changed, 29 insertions(+), 38 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/e06d2865/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java 
b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index e057f0d..b81c969 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -28,6 +28,7 @@ import groovy.lang.MetaClass;
 import groovy.lang.Range;
 import groovy.lang.Reference;
 import groovy.lang.Script;
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
 import org.codehaus.groovy.runtime.GeneratedClosure;
 import org.codehaus.groovy.runtime.GeneratedLambda;
@@ -248,6 +249,18 @@ public class ClassHelper {
 return makeWithoutCaching(name);
 }
 
+private static final Map 
PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP = Maps.of(
+boolean_TYPE, Boolean_TYPE,
+byte_TYPE, Byte_TYPE,
+char_TYPE, Character_TYPE,
+short_TYPE, Short_TYPE,
+int_TYPE, Integer_TYPE,
+long_TYPE, Long_TYPE,
+float_TYPE, Float_TYPE,
+double_TYPE, Double_TYPE,
+VOID_TYPE, void_WRAPPER_TYPE
+);
+
 /**
  * Creates a ClassNode containing the wrapper of a ClassNode
  * of primitive type. Any ClassNode representing a primitive
@@ -268,51 +281,29 @@ public class ClassHelper {
 public static ClassNode getWrapper(ClassNode cn) {
 cn = cn.redirect();
 if (!isPrimitiveType(cn)) return cn;
-if (cn == boolean_TYPE) {
-return Boolean_TYPE;
-} else if (cn == byte_TYPE) {
-return Byte_TYPE;
-} else if (cn == char_TYPE) {
-return Character_TYPE;
-} else if (cn == short_TYPE) {
-return Short_TYPE;
-} else if (cn == int_TYPE) {
-return Integer_TYPE;
-} else if (cn == long_TYPE) {
-return Long_TYPE;
-} else if (cn == float_TYPE) {
-return Float_TYPE;
-} else if (cn == double_TYPE) {
-return Double_TYPE;
-} else if (cn == VOID_TYPE) {
-return void_WRAPPER_TYPE;
-} else {
-return cn;
+
+ClassNode result = PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP.get(cn);
+
+if (null != result) {
+return result;
 }
+
+return cn;
 }
 
+private static final Map 
WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP = 
Maps.inverse(PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP);
+
 public static ClassNode getUnwrapper(ClassNode cn) {
 cn = cn.redirect();
 if (isPrimitiveType(cn)) return cn;
-if (cn == Boolean_TYPE) {
-return boolean_TYPE;
-} else if (cn == Byte_TYPE) {
-return byte_TYPE;
-} else if (cn == Character_TYPE) {
-return char_TYPE;
-} else if (cn == Short_TYPE) {
-return short_TYPE;
-} else if (cn == Integer_TYPE) {
-return int_TYPE;
-} else if (cn == Long_TYPE) {
-return long_TYPE;
-} else if (cn == Float_TYPE) {
-return float_TYPE;
-} else if (cn == Double_TYPE) {
-return double_TYPE;
-} else {
-return cn;
+
+ClassNode result = WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP.get(cn);
+
+if (null != result) {
+return result;
 }
+
+return cn;
 }
 
 



[2/2] groovy git commit: Minor refactoring: remove duplicated code of `ClassHelper`

2018-02-18 Thread sunlan
Minor refactoring: remove duplicated code of `ClassHelper`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/ee6060be
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/ee6060be
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/ee6060be

Branch: refs/heads/master
Commit: ee6060bee045631cca608a48fb36c3483aaafec3
Parents: 9699e99
Author: danielsun1106 
Authored: Sun Feb 18 18:28:28 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 18:28:28 2018 +0800

--
 .../org/codehaus/groovy/ast/ClassHelper.java| 67 +---
 1 file changed, 29 insertions(+), 38 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/ee6060be/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
--
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java 
b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index d8ce0d7..8362d8d 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -28,6 +28,7 @@ import groovy.lang.MetaClass;
 import groovy.lang.Range;
 import groovy.lang.Reference;
 import groovy.lang.Script;
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
 import org.codehaus.groovy.runtime.GeneratedClosure;
 import org.codehaus.groovy.runtime.GeneratedLambda;
@@ -248,6 +249,18 @@ public class ClassHelper {
 return makeWithoutCaching(name);
 }
 
+private static final Map 
PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP = Maps.of(
+boolean_TYPE, Boolean_TYPE,
+byte_TYPE, Byte_TYPE,
+char_TYPE, Character_TYPE,
+short_TYPE, Short_TYPE,
+int_TYPE, Integer_TYPE,
+long_TYPE, Long_TYPE,
+float_TYPE, Float_TYPE,
+double_TYPE, Double_TYPE,
+VOID_TYPE, void_WRAPPER_TYPE
+);
+
 /**
  * Creates a ClassNode containing the wrapper of a ClassNode
  * of primitive type. Any ClassNode representing a primitive
@@ -268,51 +281,29 @@ public class ClassHelper {
 public static ClassNode getWrapper(ClassNode cn) {
 cn = cn.redirect();
 if (!isPrimitiveType(cn)) return cn;
-if (cn == boolean_TYPE) {
-return Boolean_TYPE;
-} else if (cn == byte_TYPE) {
-return Byte_TYPE;
-} else if (cn == char_TYPE) {
-return Character_TYPE;
-} else if (cn == short_TYPE) {
-return Short_TYPE;
-} else if (cn == int_TYPE) {
-return Integer_TYPE;
-} else if (cn == long_TYPE) {
-return Long_TYPE;
-} else if (cn == float_TYPE) {
-return Float_TYPE;
-} else if (cn == double_TYPE) {
-return Double_TYPE;
-} else if (cn == VOID_TYPE) {
-return void_WRAPPER_TYPE;
-} else {
-return cn;
+
+ClassNode result = PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP.get(cn);
+
+if (null != result) {
+return result;
 }
+
+return cn;
 }
 
+private static final Map 
WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP = 
Maps.inverse(PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP);
+
 public static ClassNode getUnwrapper(ClassNode cn) {
 cn = cn.redirect();
 if (isPrimitiveType(cn)) return cn;
-if (cn == Boolean_TYPE) {
-return boolean_TYPE;
-} else if (cn == Byte_TYPE) {
-return byte_TYPE;
-} else if (cn == Character_TYPE) {
-return char_TYPE;
-} else if (cn == Short_TYPE) {
-return short_TYPE;
-} else if (cn == Integer_TYPE) {
-return int_TYPE;
-} else if (cn == Long_TYPE) {
-return long_TYPE;
-} else if (cn == Float_TYPE) {
-return float_TYPE;
-} else if (cn == Double_TYPE) {
-return double_TYPE;
-} else {
-return cn;
+
+ClassNode result = WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP.get(cn);
+
+if (null != result) {
+return result;
 }
+
+return cn;
 }
 
 



[2/2] groovy git commit: Minor refactoring: extract constant `ASM_API_VERSION`

2018-02-17 Thread sunlan
Minor refactoring: extract constant `ASM_API_VERSION`

(cherry picked from commit 6ab6759)

(cherry picked from commit bb9809d)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/4fd03a7f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/4fd03a7f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/4fd03a7f

Branch: refs/heads/GROOVY_2_5_X
Commit: 4fd03a7f0c3cde2819ba446048d869202d05217e
Parents: 6220cdb
Author: danielsun1106 
Authored: Sun Feb 18 04:47:34 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 04:58:11 2018 +0800

--
 .../java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java  | 5 +++--
 .../codehaus/groovy/ast/decompiled/FormalParameterParser.java   | 3 ++-
 .../org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java | 3 ++-
 .../codehaus/groovy/classgen/asm/util/LoggableClassVisitor.java | 3 ++-
 .../codehaus/groovy/classgen/asm/util/LoggableTextifier.java| 3 ++-
 .../java/org/codehaus/groovy/control/CompilerConfiguration.java | 3 +++
 .../java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java | 2 +-
 src/test/gls/generics/GenericsTestBase.java | 3 ++-
 .../groovy/classgen/asm/AbstractBytecodeTestCase.groovy | 2 +-
 9 files changed, 18 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/4fd03a7f/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
index cc9c2f0..8a789fe 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
@@ -19,6 +19,7 @@
 package org.codehaus.groovy.ast.decompiled;
 
 import groovy.lang.GroovyRuntimeException;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
@@ -94,7 +95,7 @@ public abstract class AsmDecompiler {
 private ClassStub result;
 
 public DecompilingVisitor() {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 }
 
 @Override
@@ -179,7 +180,7 @@ public abstract class AsmDecompiler {
 
 private abstract static class AnnotationReader extends AnnotationVisitor {
 public AnnotationReader() {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 }
 
 abstract void visitAttribute(String name, Object value);

http://git-wip-us.apache.org/repos/asf/groovy/blob/4fd03a7f/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
index a5fc1b5..3ed8c3f 100644
--- 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
+++ 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.ast.decompiled;
 
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GenericsType;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.codehaus.groovy.vmplugin.v5.Java5;
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.signature.SignatureVisitor;
@@ -37,7 +38,7 @@ abstract class FormalParameterParser extends SignatureVisitor 
{
 private final List typeParameters = new 
ArrayList();
 
 public FormalParameterParser(AsmReferenceResolver resolver) {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 this.resolver = resolver;
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/4fd03a7f/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
index 718429e..ae5efb1 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.ast.decompiled;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GenericsType;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.codeha

[2/2] groovy git commit: Minor refactoring: extract constant `ASM_API_VERSION`

2018-02-17 Thread sunlan
Minor refactoring: extract constant `ASM_API_VERSION`

(cherry picked from commit 6ab6759)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/bb9809d7
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/bb9809d7
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/bb9809d7

Branch: refs/heads/GROOVY_2_6_X
Commit: bb9809d74a1d815de456b1324634e4821177ccb2
Parents: 70f825c
Author: danielsun1106 
Authored: Sun Feb 18 04:47:34 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 04:50:18 2018 +0800

--
 .../java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java  | 5 +++--
 .../codehaus/groovy/ast/decompiled/FormalParameterParser.java   | 3 ++-
 .../org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java | 3 ++-
 .../codehaus/groovy/classgen/asm/util/LoggableClassVisitor.java | 3 ++-
 .../codehaus/groovy/classgen/asm/util/LoggableTextifier.java| 3 ++-
 .../java/org/codehaus/groovy/control/CompilerConfiguration.java | 2 ++
 .../java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java | 2 +-
 src/test/gls/generics/GenericsTestBase.java | 3 ++-
 .../groovy/classgen/asm/AbstractBytecodeTestCase.groovy | 2 +-
 9 files changed, 17 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/bb9809d7/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
index cc9c2f0..8a789fe 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
@@ -19,6 +19,7 @@
 package org.codehaus.groovy.ast.decompiled;
 
 import groovy.lang.GroovyRuntimeException;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
@@ -94,7 +95,7 @@ public abstract class AsmDecompiler {
 private ClassStub result;
 
 public DecompilingVisitor() {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 }
 
 @Override
@@ -179,7 +180,7 @@ public abstract class AsmDecompiler {
 
 private abstract static class AnnotationReader extends AnnotationVisitor {
 public AnnotationReader() {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 }
 
 abstract void visitAttribute(String name, Object value);

http://git-wip-us.apache.org/repos/asf/groovy/blob/bb9809d7/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
index a5fc1b5..3ed8c3f 100644
--- 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
+++ 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.ast.decompiled;
 
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GenericsType;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.codehaus.groovy.vmplugin.v5.Java5;
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.signature.SignatureVisitor;
@@ -37,7 +38,7 @@ abstract class FormalParameterParser extends SignatureVisitor 
{
 private final List typeParameters = new 
ArrayList();
 
 public FormalParameterParser(AsmReferenceResolver resolver) {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 this.resolver = resolver;
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/bb9809d7/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
index 718429e..ae5efb1 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.ast.decompiled;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GenericsType;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.codehaus.groovy.vmplugin.v5.Java5;
 import o

groovy git commit: Minor refactoring: extract constant `ASM_API_VERSION`

2018-02-17 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master 709c0d942 -> 6ab675920


Minor refactoring: extract constant `ASM_API_VERSION`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/6ab67592
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6ab67592
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6ab67592

Branch: refs/heads/master
Commit: 6ab6759207f55430e53e4a0f69a1dd56ad37639e
Parents: 709c0d9
Author: danielsun1106 
Authored: Sun Feb 18 04:47:34 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 04:47:34 2018 +0800

--
 .../java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java  | 5 +++--
 .../codehaus/groovy/ast/decompiled/FormalParameterParser.java   | 3 ++-
 .../org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java | 3 ++-
 .../codehaus/groovy/classgen/asm/util/LoggableClassVisitor.java | 3 ++-
 .../codehaus/groovy/classgen/asm/util/LoggableTextifier.java| 3 ++-
 .../java/org/codehaus/groovy/control/CompilerConfiguration.java | 2 ++
 .../java/org/codehaus/groovy/runtime/ProxyGeneratorAdapter.java | 2 +-
 src/test/gls/generics/GenericsTestBase.java | 3 ++-
 .../groovy/classgen/asm/AbstractBytecodeTestCase.groovy | 2 +-
 9 files changed, 17 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/6ab67592/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
index cc9c2f0..8a789fe 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmDecompiler.java
@@ -19,6 +19,7 @@
 package org.codehaus.groovy.ast.decompiled;
 
 import groovy.lang.GroovyRuntimeException;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
@@ -94,7 +95,7 @@ public abstract class AsmDecompiler {
 private ClassStub result;
 
 public DecompilingVisitor() {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 }
 
 @Override
@@ -179,7 +180,7 @@ public abstract class AsmDecompiler {
 
 private abstract static class AnnotationReader extends AnnotationVisitor {
 public AnnotationReader() {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 }
 
 abstract void visitAttribute(String name, Object value);

http://git-wip-us.apache.org/repos/asf/groovy/blob/6ab67592/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
index a5fc1b5..3ed8c3f 100644
--- 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
+++ 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.ast.decompiled;
 
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GenericsType;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.codehaus.groovy.vmplugin.v5.Java5;
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.signature.SignatureVisitor;
@@ -37,7 +38,7 @@ abstract class FormalParameterParser extends SignatureVisitor 
{
 private final List typeParameters = new 
ArrayList();
 
 public FormalParameterParser(AsmReferenceResolver resolver) {
-super(Opcodes.ASM6);
+super(CompilerConfiguration.ASM_API_VERSION);
 this.resolver = resolver;
 }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/6ab67592/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
--
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
index 718429e..ae5efb1 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.ast.decompiled;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GenericsType;
+import org.codehaus.groovy.control.CompilerConfiguration;
 import org.codeh

groovy git commit: Minor refactoring: remove useless code of the new parser

2018-02-17 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 6ec8f8ed9 -> cff728336


Minor refactoring: remove useless code of the new parser

(cherry picked from commit 7f6c92a)


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/cff72833
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/cff72833
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/cff72833

Branch: refs/heads/GROOVY_2_6_X
Commit: cff728336448fa46676f578aa4147cba6ccb041d
Parents: 6ec8f8e
Author: danielsun1106 
Authored: Sun Feb 18 02:14:23 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 02:15:54 2018 +0800

--
 src/antlr/GroovyParser.g4   | 29 ++--
 .../apache/groovy/parser/antlr4/AstBuilder.java |  4 ---
 2 files changed, 15 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/cff72833/src/antlr/GroovyParser.g4
--
diff --git a/src/antlr/GroovyParser.g4 b/src/antlr/GroovyParser.g4
index 108a79e..b05efe6 100644
--- a/src/antlr/GroovyParser.g4
+++ b/src/antlr/GroovyParser.g4
@@ -225,11 +225,11 @@ typeParameter
 ;
 
 typeBound
-:   type[false] (BITAND nls type[false])*
+:   type (BITAND nls type)*
 ;
 
 typeList
-:   type[false] (COMMA nls type[false])*
+:   type (COMMA nls type)*
 ;
 
 
@@ -256,7 +256,7 @@ locals[ int t ]
 // Only interface can extend more than one super class
 {1 == $t}? scs=typeList
 |
-sc=type[false]
+sc=type
 )
 nls)?
 |
@@ -380,12 +380,13 @@ options { baseContext = type; }
 dimsOpt
 ;
 
-type[boolean allowVoid]
+type
 :   annotationsOpt
 (
 (
 primitiveType
 |
+// !!! Error Alternative !!!
  VOID
 )
 |
@@ -419,8 +420,8 @@ typeArguments
 ;
 
 typeArgument
-:   type[false]
-|   annotationsOpt QUESTION ((EXTENDS | SUPER) nls type[false])?
+:   type
+|   annotationsOpt QUESTION ((EXTENDS | SUPER) nls type)?
 ;
 
 annotatedQualifiedClassName
@@ -440,11 +441,11 @@ formalParameterList
 ;
 
 thisFormalParameter
-:   type[false] THIS
+:   type THIS
 ;
 
 formalParameter
-:   variableModifiersOpt type[false]? ELLIPSIS? variableDeclaratorId (nls 
ASSIGN nls expression)?
+:   variableModifiersOpt type? ELLIPSIS? variableDeclaratorId (nls ASSIGN 
nls expression)?
 ;
 
 methodBody
@@ -616,12 +617,12 @@ classifiedModifiers[int t]
 variableDeclaration[int t]
 @leftfactor { classifiedModifiers }
 :   classifiedModifiers[$t]
-(   type[false]? variableDeclarators
+(   type? variableDeclarators
 |   typeNamePairs nls ASSIGN nls variableInitializer
 )
 |
 classifiedModifiers[$t]?
-type[false] variableDeclarators
+type variableDeclarators
 ;
 
 typeNamePairs
@@ -629,7 +630,7 @@ typeNamePairs
 ;
 
 typeNamePair
-:   type[false]? variableDeclaratorId
+:   type? variableDeclaratorId
 ;
 
 variableNames
@@ -752,7 +753,7 @@ forControl
 ;
 
 enhancedForControl
-:   variableModifiersOpt type[false]? variableDeclaratorId (COLON | IN) 
expression
+:   variableModifiersOpt type? variableDeclaratorId (COLON | IN) expression
 ;
 
 classicalForControl
@@ -772,7 +773,7 @@ forUpdate
 // EXPRESSIONS
 
 castParExpression
-:   LPAREN type[false] rparen
+:   LPAREN type rparen
 ;
 
 parExpression
@@ -846,7 +847,7 @@ expression
 right=expression   
 #shiftExprAlt
 
 // boolean relational expressions (level 7)
-|   left=expression nls op=(AS | INSTANCEOF | NOT_INSTANCEOF) nls 
type[false]   #relationalExprAlt
+|   left=expression nls op=(AS | INSTANCEOF | NOT_INSTANCEOF) nls type 
  #relationalExprAlt
 |   left=expression nls op=(LE | GE | GT | LT | IN | NOT_IN)  nls 
right=expression  #relationalExprAlt
 
 // equality/inequality (==/!=) (level 8)

http://git-wip-us.apache.org/repos/asf/groovy/blob/cff72833/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 8be9554..c52e7e0 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org

groovy git commit: Minor refactoring: remove useless code of the new parser

2018-02-17 Thread sunlan
Repository: groovy
Updated Branches:
  refs/heads/master cfc6c4df2 -> 7f6c92a5b


Minor refactoring: remove useless code of the new parser


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/7f6c92a5
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/7f6c92a5
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/7f6c92a5

Branch: refs/heads/master
Commit: 7f6c92a5bcae5e45f3c2bb512e04955f5d3f31b2
Parents: cfc6c4d
Author: danielsun1106 
Authored: Sun Feb 18 02:14:23 2018 +0800
Committer: danielsun1106 
Committed: Sun Feb 18 02:14:23 2018 +0800

--
 src/antlr/GroovyParser.g4   | 29 ++--
 .../apache/groovy/parser/antlr4/AstBuilder.java |  4 ---
 2 files changed, 15 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/7f6c92a5/src/antlr/GroovyParser.g4
--
diff --git a/src/antlr/GroovyParser.g4 b/src/antlr/GroovyParser.g4
index df86f3c..19e6860 100644
--- a/src/antlr/GroovyParser.g4
+++ b/src/antlr/GroovyParser.g4
@@ -192,11 +192,11 @@ typeParameter
 ;
 
 typeBound
-:   type[false] (BITAND nls type[false])*
+:   type (BITAND nls type)*
 ;
 
 typeList
-:   type[false] (COMMA nls type[false])*
+:   type (COMMA nls type)*
 ;
 
 
@@ -223,7 +223,7 @@ locals[ int t ]
 // Only interface can extend more than one super class
 {1 == $t}? scs=typeList
 |
-sc=type[false]
+sc=type
 )
 nls)?
 |
@@ -347,12 +347,13 @@ options { baseContext = type; }
 dimsOpt
 ;
 
-type[boolean allowVoid]
+type
 :   annotationsOpt
 (
 (
 primitiveType
 |
+// !!! Error Alternative !!!
  VOID
 )
 |
@@ -386,8 +387,8 @@ typeArguments
 ;
 
 typeArgument
-:   type[false]
-|   annotationsOpt QUESTION ((EXTENDS | SUPER) nls type[false])?
+:   type
+|   annotationsOpt QUESTION ((EXTENDS | SUPER) nls type)?
 ;
 
 annotatedQualifiedClassName
@@ -407,11 +408,11 @@ formalParameterList
 ;
 
 thisFormalParameter
-:   type[false] THIS
+:   type THIS
 ;
 
 formalParameter
-:   variableModifiersOpt type[false]? ELLIPSIS? variableDeclaratorId (nls 
ASSIGN nls expression)?
+:   variableModifiersOpt type? ELLIPSIS? variableDeclaratorId (nls ASSIGN 
nls expression)?
 ;
 
 methodBody
@@ -583,12 +584,12 @@ classifiedModifiers[int t]
 variableDeclaration[int t]
 @leftfactor { classifiedModifiers }
 :   classifiedModifiers[$t]
-(   type[false]? variableDeclarators
+(   type? variableDeclarators
 |   typeNamePairs nls ASSIGN nls variableInitializer
 )
 |
 classifiedModifiers[$t]?
-type[false] variableDeclarators
+type variableDeclarators
 ;
 
 typeNamePairs
@@ -596,7 +597,7 @@ typeNamePairs
 ;
 
 typeNamePair
-:   type[false]? variableDeclaratorId
+:   type? variableDeclaratorId
 ;
 
 variableNames
@@ -719,7 +720,7 @@ forControl
 ;
 
 enhancedForControl
-:   variableModifiersOpt type[false]? variableDeclaratorId (COLON | IN) 
expression
+:   variableModifiersOpt type? variableDeclaratorId (COLON | IN) expression
 ;
 
 classicalForControl
@@ -739,7 +740,7 @@ forUpdate
 // EXPRESSIONS
 
 castParExpression
-:   LPAREN type[false] rparen
+:   LPAREN type rparen
 ;
 
 parExpression
@@ -813,7 +814,7 @@ expression
 right=expression   
 #shiftExprAlt
 
 // boolean relational expressions (level 7)
-|   left=expression nls op=(AS | INSTANCEOF | NOT_INSTANCEOF) nls 
type[false]   #relationalExprAlt
+|   left=expression nls op=(AS | INSTANCEOF | NOT_INSTANCEOF) nls type 
  #relationalExprAlt
 |   left=expression nls op=(LE | GE | GT | LT | IN | NOT_IN)  nls 
right=expression  #relationalExprAlt
 
 // equality/inequality (==/!=) (level 8)

http://git-wip-us.apache.org/repos/asf/groovy/blob/7f6c92a5/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
--
diff --git 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index bd72215..f1f256e 100644
--- 
a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ 
b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -

  1   2   3   4   5   >