Add error message for skylark for-else statement, and fix error message for single else statement.
--
MOS_MIGRATED_REVID=119260729
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 b6fe82a..d446e3f 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
@@ -1404,7 +1404,8 @@
list.add(parseIfStatement());
} else if (token.kind == TokenKind.FOR && parsingMode == SKYLARK) {
if (isTopLevel) {
- reportError(lexer.createLocation(token.left, token.right),
+ reportError(
+ lexer.createLocation(token.left, token.right),
"for loops are not allowed on top-level. Put it into a function");
}
parseForStatement(list);
@@ -1446,7 +1447,11 @@
int start = token.left;
Token blockToken = token;
syncTo(EnumSet.of(TokenKind.COLON, TokenKind.EOF)); // skip over expression or name
- if (parsingMode != PYTHON) {
+ if (blockToken.kind == TokenKind.ELSE && parsingMode == SKYLARK) {
+ reportError(
+ lexer.createLocation(blockToken.left, blockToken.right),
+ "syntax error at 'else': not allowed here.");
+ } else if (parsingMode != PYTHON) {
String msg =
ILLEGAL_BLOCK_KEYWORDS.containsKey(blockToken.kind)
? String.format("%ss are not supported.", ILLEGAL_BLOCK_KEYWORDS.get(blockToken.kind))