Clarify parser error for load() statements
RELNOTES: None
PiperOrigin-RevId: 186693205
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 b535030..3fcf76f 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
@@ -337,7 +337,7 @@
/**
* Consume tokens past the first token that has a kind that is in the set of
- * teminatingTokens.
+ * terminatingTokens.
* @param terminatingTokens
* @return the end offset of the terminating token.
*/
@@ -354,7 +354,7 @@
/**
* Consume tokens until we reach the first token that has a kind that is in
- * the set of teminatingTokens.
+ * the set of terminatingTokens.
* @param terminatingTokens
* @return the end offset of the terminating token.
*/
@@ -1047,7 +1047,7 @@
return list;
}
- // load '(' STRING (COMMA [IDENTIFIER EQUALS] STRING)* COMMA? ')'
+ // load '(' STRING (COMMA [IDENTIFIER EQUALS] STRING)+ COMMA? ')'
private void parseLoad(List<Statement> list) {
int start = token.left;
expect(TokenKind.LOAD);
@@ -1058,6 +1058,10 @@
}
StringLiteral importString = parseStringLiteral();
+ if (token.kind == TokenKind.RPAREN) {
+ syntaxError(token, "expected at least one symbol to load");
+ return;
+ }
expect(TokenKind.COMMA);
Map<Identifier, String> symbols = new HashMap<>();
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
index 50d6d88..85ffb0e 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
@@ -1221,7 +1221,7 @@
public void testLoadNoSymbol() throws Exception {
setFailFast(false);
parseFileForSkylark("load('/foo/bar/file')\n");
- assertContainsError("syntax error");
+ assertContainsError("expected at least one symbol to load");
}
@Test
diff --git a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DependencyAnalyzerTest.java b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DependencyAnalyzerTest.java
index 674c124..e34d86e 100644
--- a/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DependencyAnalyzerTest.java
+++ b/src/tools/skylark/javatests/com/google/devtools/skylark/skylint/DependencyAnalyzerTest.java
@@ -149,7 +149,7 @@
ImmutableMap.<String, String>builder()
.put("/WORKSPACE", "")
.put("/pkg1/BUILD", "")
- .put("/pkg1/test.bzl", "load('//pkg2:bar.bzl')")
+ .put("/pkg1/test.bzl", "load('//pkg2:bar.bzl', 'bar')")
.put("/pkg2/BUILD", "")
.put("/pkg2/bar.bzl", "def bar(): pass")
.build();
@@ -163,7 +163,7 @@
ImmutableMap.<String, String>builder()
.put("/WORKSPACE", "")
.put("/pkg1/BUILD.bazel", "")
- .put("/pkg1/test.bzl", "load('//pkg2:bar.bzl')")
+ .put("/pkg1/test.bzl", "load('//pkg2:bar.bzl', 'bar')")
.put("/pkg2/BUILD.bazel", "")
.put("/pkg2/bar.bzl", "def bar(): pass")
.build();