Skylark: Allow traling comma in load statements

--
MOS_MIGRATED_REVID=88726457
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 90f79ec..45eae4c 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
@@ -977,8 +977,11 @@
       symbols.add(new Ident((String) token.value));
     }
     expect(TokenKind.STRING);
-    while (token.kind == TokenKind.COMMA) {
+    while (token.kind != TokenKind.RPAREN) {
       expect(TokenKind.COMMA);
+      if (token.kind == TokenKind.RPAREN) {
+        break;
+      }
       if (token.kind == TokenKind.STRING) {
         symbols.add(new Ident((String) token.value));
       }
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 9a407d2..0e69eff 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
@@ -855,6 +855,15 @@
   }
 
   @Test
+  public void testLoadOneSymbolWithTrailingComma() throws Exception {
+    List<Statement> statements = parseFileForSkylark(
+        "load('/foo/bar/file', 'fun_test',)\n");
+    LoadStatement stmt = (LoadStatement) statements.get(0);
+    assertEquals("/foo/bar/file.bzl", stmt.getImportPath().toString());
+    assertThat(stmt.getSymbols()).hasSize(1);
+  }
+
+  @Test
   public void testLoadMultipleSymbols() throws Exception {
     List<Statement> statements = parseFileForSkylark(
         "load('file', 'foo', 'bar')\n");