Refactor: Parse return statements without an expression properly
This is an internal refactoring necessary for the Skylark linter.
It does not change any behavior.
RELNOTES: None
PiperOrigin-RevId: 166199367
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 56e6233..e948b84 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
@@ -1389,15 +1389,12 @@
int end = token.right;
expect(TokenKind.RETURN);
- Expression expression;
- if (STATEMENT_TERMINATOR_SET.contains(token.kind)) {
- // this None makes the AST not correspond to the source exactly anymore
- expression = new Identifier("None");
- setLocation(expression, start, end);
- } else {
- expression = parseExpression();
+ Expression expression = null;
+ if (!STATEMENT_TERMINATOR_SET.contains(token.kind)) {
+ expression = parseExpression();
+ end = expression.getLocation().getEndOffset();
}
- return setLocation(new ReturnStatement(expression), start, expression);
+ return setLocation(new ReturnStatement(expression), start, end);
}
// create a comment node