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();