From 494eca9cf1ad0b1baeebb8a1f05cd0f9b69d03fb Mon Sep 17 00:00:00 2001 From: Laurent Le Brun Date: Thu, 3 Sep 2015 13:27:06 +0000 Subject: Fix a bug in SyntaxTreeVisitor to handle return statements. -- MOS_MIGRATED_REVID=102237430 --- src/main/java/com/google/devtools/build/lib/syntax/Parser.java | 8 ++++++-- .../com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/syntax') diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java index bbed96e332..67c9ceb3fb 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java @@ -43,6 +43,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import javax.annotation.Nullable; + /** * Recursive descent parser for LL(2) BUILD language. * Loosely based on Python 2 grammar. @@ -208,12 +210,14 @@ class Parser { Lexer lexer, EventHandler eventHandler, CachingPackageLocator locator, - ValidationEnvironment validationEnvironment) { + @Nullable ValidationEnvironment validationEnvironment) { Parser parser = new Parser(lexer, eventHandler, locator, SKYLARK); List statements = parser.parseFileInput(); boolean hasSemanticalErrors = false; try { - validationEnvironment.validateAst(statements); + if (validationEnvironment != null) { + validationEnvironment.validateAst(statements); + } } catch (EvalException e) { // Do not report errors caused by a previous parsing error, as it has already been reported. if (!e.isDueToIncompleteAST()) { diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java b/src/main/java/com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java index 67690617cd..2e0f19d4ff 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java @@ -117,6 +117,10 @@ public class SyntaxTreeVisitor { visitAll(node.getStatements()); } + public void visit(ReturnStatement node) { + visit(node.getReturnExpression()); + } + public void visit(DictionaryLiteral node) { visitAll(node.getEntries()); } -- cgit v1.2.3