[1/2] groovy git commit: Minor refactoring: Create tuple instances via factory method
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`
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`
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`
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`
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`
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
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
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
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
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
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
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
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
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
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
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 <>
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 <>
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 <>
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 <>
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 <>
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 <>
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 <>
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 <>
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
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
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
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
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
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
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
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`
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`
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`
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)
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)
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)
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
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
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
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
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
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
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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
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
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
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
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
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
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
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
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
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
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
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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
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
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
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`
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`
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`
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`
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`
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`
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`
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`
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`
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`
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
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
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 @@ -