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 <sun...@apache.org> Authored: Sat Nov 24 22:22:26 2018 +0800 Committer: Daniel Sun <sun...@apache.org> 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<Object> 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<Object> 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<Object> 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<Object> 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<Object> implements Groov boolean isLast = labelCnt - 1 == statementList.size(); - switch (tuple.getFirst().getType()) { + switch (tuple.getV1().getType()) { case CASE: { if (!asBoolean(statementList)) { - firstLabelHolder.add(tuple.getFirst()); + firstLabelHolder.add(tuple.getV1()); } statementList.add( configureAST( new CaseStatement( - tuple.getSecond(), + tuple.getV2(), // check whether processing the last label. if yes, block statement should be attached. isLast ? this.visitBlockStatements(ctx.blockStatements()) @@ -1015,9 +1016,9 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov @Override public Tuple2<Token, Expression> visitSwitchLabel(SwitchLabelContext ctx) { if (asBoolean(ctx.CASE())) { - return new Tuple2<>(ctx.CASE().getSymbol(), (Expression) this.visit(ctx.expression())); + return tuple(ctx.CASE().getSymbol(), (Expression) this.visit(ctx.expression())); } else if (asBoolean(ctx.DEFAULT())) { - return new Tuple2<>(ctx.DEFAULT().getSymbol(), EmptyExpression.INSTANCE); + return tuple(ctx.DEFAULT().getSymbol(), EmptyExpression.INSTANCE); } throw createParsingFailedException("Unsupported switch label: " + ctx.getText(), ctx); @@ -2330,7 +2331,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov boolean isSafeChain = isTrue(baseExpr, PATH_EXPRESSION_BASE_EXPR_SAFE_CHAIN); return configureAST( - new BinaryExpression(baseExpr, createGroovyToken(tuple.getFirst()), tuple.getSecond(), isSafeChain || asBoolean(ctx.indexPropertyArgs().QUESTION())), + new BinaryExpression(baseExpr, createGroovyToken(tuple.getV1()), tuple.getV2(), isSafeChain || asBoolean(ctx.indexPropertyArgs().QUESTION())), ctx); } else if (asBoolean(ctx.namedPropertyArgs())) { // this is a special way to signify a cast, e.g. Person[name: 'Daniel.Sun', location: 'Shanghai'] List<MapEntryExpression> mapEntryExpressionList = @@ -2737,14 +2738,14 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov indexExpr = expr; } - return new Tuple2<>(ctx.LBRACK().getSymbol(), indexExpr); + return tuple(ctx.LBRACK().getSymbol(), indexExpr); } // e.g. a[1, 2] ListExpression listExpression = new ListExpression(expressionList); listExpression.setWrapped(true); - return new Tuple2<>(ctx.LBRACK().getSymbol(), configureAST(listExpression, ctx)); + return tuple(ctx.LBRACK().getSymbol(), configureAST(listExpression, ctx)); } @Override @@ -3505,7 +3506,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov try { num = Numbers.parseInteger(null, text); } catch (Exception e) { - this.numberFormatError = new Tuple2<>(ctx, e); + this.numberFormatError = tuple(ctx, e); } ConstantExpression constantExpression = new ConstantExpression(num, !text.startsWith(SUB_STR)); @@ -3523,7 +3524,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov try { num = Numbers.parseDecimal(text); } catch (Exception e) { - this.numberFormatError = new Tuple2<>(ctx, e); + this.numberFormatError = tuple(ctx, e); } ConstantExpression constantExpression = new ConstantExpression(num, !text.startsWith(SUB_STR)); @@ -4132,7 +4133,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov AnnotationNode annotationNode = new AnnotationNode(ClassHelper.make(annotationName)); List<Tuple2<String, Expression>> annotationElementValues = this.visitElementValues(ctx.elementValues()); - annotationElementValues.forEach(e -> annotationNode.addMember(e.getFirst(), e.getSecond())); + annotationElementValues.forEach(e -> annotationNode.addMember(e.getV1(), e.getV2())); return configureAST(annotationNode, ctx); } @@ -4146,9 +4147,9 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov List<Tuple2<String, Expression>> annotationElementValues = new LinkedList<>(); if (asBoolean(ctx.elementValuePairs())) { - this.visitElementValuePairs(ctx.elementValuePairs()).forEach((key, value) -> annotationElementValues.add(new Tuple2<>(key, value))); + this.visitElementValuePairs(ctx.elementValuePairs()).forEach((key, value) -> annotationElementValues.add(tuple(key, value))); } else if (asBoolean(ctx.elementValue())) { - annotationElementValues.add(new Tuple2<>(VALUE_STR, this.visitElementValue(ctx.elementValue()))); + annotationElementValues.add(tuple(VALUE_STR, this.visitElementValue(ctx.elementValue()))); } return annotationElementValues; @@ -4165,8 +4166,8 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov return ctx.elementValuePair().stream() .map(this::visitElementValuePair) .collect(Collectors.toMap( - Tuple2::getFirst, - Tuple2::getSecond, + Tuple2::getV1, + Tuple2::getV2, (k, v) -> { throw new IllegalStateException(String.format("Duplicate key %s", k)); }, @@ -4176,7 +4177,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov @Override public Tuple2<String, Expression> visitElementValuePair(ElementValuePairContext ctx) { - return new Tuple2<>(ctx.elementValuePairName().getText(), this.visitElementValue(ctx.elementValue())); + return tuple(ctx.elementValuePairName().getText(), this.visitElementValue(ctx.elementValue())); } @Override http://git-wip-us.apache.org/repos/asf/groovy/blob/6bb02b18/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java ---------------------------------------------------------------------- diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java index aba0244..a009468 100644 --- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java +++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/PositionConfigureUtils.java @@ -24,6 +24,7 @@ import org.antlr.v4.runtime.tree.TerminalNode; import org.apache.groovy.parser.antlr4.GroovyParser; import org.codehaus.groovy.ast.ASTNode; +import static groovy.lang.Tuple.tuple; import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean; /** @@ -60,9 +61,9 @@ public class PositionConfigureUtils { } if (0 == newLineCnt) { - return new Tuple2<>(token.getLine(), token.getCharPositionInLine() + 1 + token.getText().length()); + return tuple(token.getLine(), token.getCharPositionInLine() + 1 + token.getText().length()); } else { // e.g. GStringEnd contains newlines, we should fix the location info - return new Tuple2<>(token.getLine() + newLineCnt, stopTextLength - stopText.lastIndexOf('\n')); + return tuple(token.getLine() + newLineCnt, stopTextLength - stopText.lastIndexOf('\n')); } } @@ -106,8 +107,8 @@ public class PositionConfigureUtils { public static <T extends ASTNode> void configureEndPosition(T astNode, Token token) { Tuple2<Integer, Integer> endPosition = endPosition(token); - astNode.setLastLineNumber(endPosition.getFirst()); - astNode.setLastColumnNumber(endPosition.getSecond()); + astNode.setLastLineNumber(endPosition.getV1()); + astNode.setLastColumnNumber(endPosition.getV2()); } public static <T extends ASTNode> T configureAST(T astNode, ASTNode start, ASTNode stop) {