Repository: groovy Updated Branches: refs/heads/master b5d4d7ab8 -> e22974b0e
Refine the text of rule context Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/e22974b0 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/e22974b0 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/e22974b0 Branch: refs/heads/master Commit: e22974b0edaeaf83410c5737cd09b229e505f226 Parents: b5d4d7a Author: Daniel Sun <sun...@apache.org> Authored: Sun Dec 2 15:47:21 2018 +0800 Committer: Daniel Sun <sun...@apache.org> Committed: Sun Dec 2 15:47:21 2018 +0800 ---------------------------------------------------------------------- .../java/org/apache/groovy/parser/antlr4/AstBuilder.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/e22974b0/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 1697088..01bd38a 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 @@ -23,10 +23,12 @@ import org.antlr.v4.runtime.ANTLRErrorListener; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.Recognizer; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.atn.PredictionMode; +import org.antlr.v4.runtime.misc.Interval; import org.antlr.v4.runtime.misc.ParseCancellationException; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.TerminalNode; @@ -2127,10 +2129,11 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov Expression baseExpr = (Expression) this.visit(ctx.expression()); + if (hasArgumentList || hasCommandArgument) { if (baseExpr instanceof BinaryExpression) { if (!"[".equals(((BinaryExpression) baseExpr).getOperation().getText()) && !isInsideParentheses(baseExpr)) { - throw createParsingFailedException("Unexpected input: '" + ctx.expression().getText() + "'", ctx.expression()); + throw createParsingFailedException("Unexpected input: '" + getOriginalText(ctx.expression()) + "'", ctx.expression()); } } } @@ -4593,6 +4596,12 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov } + private String getOriginalText(ParserRuleContext context) { + CharStream charStream = lexer.getInputStream(); + return charStream.getText(Interval.of(context.getStart().getStartIndex(), context.getStop().getStopIndex())); + + } + private boolean isTrue(NodeMetaDataHandler nodeMetaDataHandler, String key) { Object nmd = nodeMetaDataHandler.getNodeMetaData(key);