aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2015-09-03 13:27:06 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-09-03 14:42:05 +0000
commit494eca9cf1ad0b1baeebb8a1f05cd0f9b69d03fb (patch)
treed3c3a39fc35f919c4f86da08108f212a34c006f8 /src/main/java/com/google/devtools/build/lib/syntax
parentf1ac09940559008e0537ef35b0400093d17ea194 (diff)
Fix a bug in SyntaxTreeVisitor to handle return statements.
-- MOS_MIGRATED_REVID=102237430
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Parser.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java4
2 files changed, 10 insertions, 2 deletions
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<Statement> 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());
}