Prohibit multiple load() statements from appearing on the same line This is an incompatible change, but it's an obvious bug. RELNOTES[INC]: Fixed a bug whereby multiple load() statements could appear on the same line PiperOrigin-RevId: 161070399
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 06f0ac9..7bc94c1 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
@@ -1116,6 +1116,7 @@ LoadStatement stmt = new LoadStatement(importString, symbols); list.add(setLocation(stmt, start, token.left)); + expectAndRecover(TokenKind.NEWLINE); } /**
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 62e176e..f0cd551 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
@@ -1219,16 +1219,23 @@ } @Test - public void testLoadSyntaxError() throws Exception { + public void testLoadLabelQuoteError() throws Exception { setFailFast(false); parseFileForSkylark("load(non_quoted, 'a')\n"); assertContainsError("syntax error"); } @Test - public void testLoadSyntaxError2() throws Exception { + public void testLoadSymbolQuoteError() throws Exception { setFailFast(false); - parseFileForSkylark("load('non_quoted', a)\n"); + parseFileForSkylark("load('label', non_quoted)\n"); + assertContainsError("syntax error"); + } + + @Test + public void testLoadDisallowSameLine() throws Exception { + setFailFast(false); + parseFileForSkylark("load('foo.bzl', 'foo') load('bar.bzl', 'bar')"); assertContainsError("syntax error"); }