bazel syntax: rename ParserInput{Source,}

Also:
- make it concrete and final
- hide the getContent method, to allow the possibility of a scanner
  using code points or UTF-8 bytes, not UTF-16 chars.

This is necessarily a breaking API change for copybara.

RELNOTES: N/A
PiperOrigin-RevId: 269623736
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
index 278e659..eb6cbe5 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
@@ -39,7 +39,7 @@
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Expression;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.testutil.Scratch;
 import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.vfs.Path;
@@ -102,7 +102,7 @@
             RootedPath.toRootedPath(root, workspaceFile),
             "runfiles");
     ExtendedEventHandler listener = Mockito.mock(ExtendedEventHandler.class);
-    ParserInputSource input = ParserInputSource.fromLines("test()");
+    ParserInput input = ParserInput.fromLines("test()");
     FuncallExpression ast = (FuncallExpression) Expression.parse(input, listener);
     Rule rule =
         WorkspaceFactoryHelper.createAndAddRepositoryRule(
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
index bdb9c8f..e88bf80 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.packages.util.PackageFactoryApparatus;
 import com.google.devtools.build.lib.packages.util.PackageFactoryTestBase;
 import com.google.devtools.build.lib.syntax.BuildFileAST;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.testutil.TestUtils;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -1208,7 +1208,7 @@
     GlobPatternExtractor globPatternExtractor = new GlobPatternExtractor();
     globPatternExtractor.visit(
         BuildFileAST.parse(
-            ParserInputSource.fromLines(
+            ParserInput.fromLines(
                 "pattern = '*'",
                 "some_variable = glob([",
                 "  '**/*',",
diff --git a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
index 2e529bc..910f9ed 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/WorkspaceFactoryTestHelper.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.StoredEventHandler;
 import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -82,7 +82,7 @@
       byte[] bytes =
           FileSystemUtils.readWithKnownFileSize(workspaceFilePath, workspaceFilePath.getFileSize());
       factory.parseForTesting(
-          ParserInputSource.create(bytes, workspaceFilePath.asFragment()),
+          ParserInput.create(bytes, workspaceFilePath.asFragment()),
           starlarkSemantics,
           eventHandler);
     } catch (BuildFileContainsErrorsException e) {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java
index 7919033..cc33b98 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageFactoryApparatus.java
@@ -33,7 +33,7 @@
 import com.google.devtools.build.lib.packages.StarlarkSemanticsOptions;
 import com.google.devtools.build.lib.syntax.BuildFileAST;
 import com.google.devtools.build.lib.syntax.Environment.Extension;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.testutil.TestUtils;
@@ -141,7 +141,7 @@
    */
   public BuildFileAST ast(Path buildFile) throws IOException {
     byte[] bytes = FileSystemUtils.readWithKnownFileSize(buildFile, buildFile.getFileSize());
-    ParserInputSource input = ParserInputSource.create(bytes, buildFile.asFragment());
+    ParserInput input = ParserInput.create(bytes, buildFile.asFragment());
     return BuildFileAST.parse(input, eventHandler);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index ee94110..1a4b40a 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -53,7 +53,7 @@
 import com.google.devtools.build.lib.syntax.Environment;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.syntax.SkylarkDict;
 import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
 import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
@@ -703,7 +703,7 @@
   }
 
   protected void evalAndExport(String... lines) throws Exception {
-    ParserInputSource input = ParserInputSource.fromLines(lines);
+    ParserInput input = ParserInput.fromLines(lines);
     BuildFileAST file = BuildFileAST.parseAndValidateSkylark(input, ev.getEnvironment());
     SkylarkImportLookupFunction.execAndExport(
         file, FAKE_LABEL, ev.getEventHandler(), ev.getEnvironment());
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 78ab2ed..ff354c5 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -823,7 +823,7 @@
    * parameter of the template_action function contains a hack that assumes its input is a UTF-8
    * encoded string which has been ingested as Latin 1. The hack converts the string to its
    * "correct" UTF-8 value. Once {@link
-   * com.google.devtools.build.lib.syntax.ParserInputSource#create(byte[],
+   * com.google.devtools.build.lib.syntax.ParserInput#create(byte[],
    * com.google.devtools.build.lib.vfs.PathFragment)} parses files using UTF-8 and the hack for the
    * substituations parameter is removed, this test will fail.
    */
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
index f082f4e..4d98f40 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java
@@ -41,7 +41,7 @@
 import com.google.devtools.build.lib.syntax.Environment;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.syntax.Runtime;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.testutil.Scratch;
@@ -766,7 +766,7 @@
   private BuildFileAST parseBuildFile(String path, String... lines) throws IOException {
     Path file = scratch.file(path, lines);
     byte[] bytes = FileSystemUtils.readWithKnownFileSize(file, file.getFileSize());
-    ParserInputSource inputSource = ParserInputSource.create(bytes, file.asFragment());
+    ParserInput inputSource = ParserInput.create(bytes, file.asFragment());
     return BuildFileAST.parse(inputSource, events.reporter());
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java b/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java
index 505e366..87bb632 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java
@@ -47,7 +47,7 @@
   private BuildFileAST parseBuildFile(String... lines) throws IOException {
     Path file = scratch.file("/a/build/file/BUILD", lines);
     byte[] bytes = FileSystemUtils.readWithKnownFileSize(file, file.getFileSize());
-    ParserInputSource input = ParserInputSource.create(bytes, file.asFragment());
+    ParserInput input = ParserInput.create(bytes, file.asFragment());
     return BuildFileAST.parse(input, getEventHandler());
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentDebuggingTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentDebuggingTest.java
index 2c87598..f7d803d 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentDebuggingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentDebuggingTest.java
@@ -190,7 +190,7 @@
     Environment env = newEnvironment();
     env.update("a", 1);
 
-    Object result = env.debugEval(ParserInputSource.create("a", null));
+    Object result = env.debugEval(ParserInput.create("a", null));
 
     assertThat(result).isEqualTo(1);
   }
@@ -201,7 +201,7 @@
     env.update("a", 1);
 
     EvalException e =
-        assertThrows(EvalException.class, () -> env.debugEval(ParserInputSource.create("b", null)));
+        assertThrows(EvalException.class, () -> env.debugEval(ParserInput.create("b", null)));
     assertThat(e).hasMessageThat().isEqualTo("name 'b' is not defined");
   }
 
@@ -211,12 +211,12 @@
     env.update("a", "string");
 
     Object result =
-        env.debugEval(ParserInputSource.create("a.startswith('str')", PathFragment.EMPTY_FRAGMENT));
+        env.debugEval(ParserInput.create("a.startswith('str')", PathFragment.EMPTY_FRAGMENT));
     assertThat(result).isEqualTo(Boolean.TRUE);
 
-    env.debugExec(ParserInputSource.create("a = 1", PathFragment.EMPTY_FRAGMENT));
+    env.debugExec(ParserInput.create("a = 1", PathFragment.EMPTY_FRAGMENT));
 
-    result = env.debugEval(ParserInputSource.create("a", PathFragment.EMPTY_FRAGMENT));
+    result = env.debugEval(ParserInput.create("a", PathFragment.EMPTY_FRAGMENT));
     assertThat(result).isEqualTo(1);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java
index 2c1f926..5be58ad 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java
@@ -190,7 +190,7 @@
   @Test
   public void testBuiltinsCanBeShadowed() throws Exception {
     Environment env = newEnvironmentWithSkylarkOptions().setup("special_var", 42);
-    BuildFileAST.eval(ParserInputSource.fromLines("special_var = 41"), env);
+    BuildFileAST.eval(ParserInput.fromLines("special_var = 41"), env);
     assertThat(env.moduleLookup("special_var")).isEqualTo(41);
   }
 
@@ -199,8 +199,7 @@
     Environment env = newSkylarkEnvironment().update("global_var", 666);
     try {
       BuildFileAST.eval(
-          ParserInputSource.fromLines(
-              "def foo(x): x += global_var; global_var = 36; return x", "foo(1)"),
+          ParserInput.fromLines("def foo(x): x += global_var; global_var = 36; return x", "foo(1)"),
           env);
       throw new AssertionError("failed to fail");
     } catch (EvalExceptionWithStackTrace e) {
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/LValueBoundNamesTest.java b/src/test/java/com/google/devtools/build/lib/syntax/LValueBoundNamesTest.java
index 8832f9c..6be86ce 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/LValueBoundNamesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/LValueBoundNamesTest.java
@@ -51,7 +51,7 @@
   }
 
   private static void assertBoundNames(String assignment, String... expectedBoundNames) {
-    ParserInputSource input = ParserInputSource.fromLines(assignment);
+    ParserInput input = ParserInput.fromLines(assignment);
     BuildFileAST file = BuildFileAST.parse(input, Environment.FAIL_FAST_HANDLER);
     Expression lhs = ((AssignmentStatement) file.getStatements().get(0)).getLHS();
     Set<String> boundNames =
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
index 77d237a..74bba9b 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
@@ -42,7 +42,7 @@
    */
   private Lexer createLexer(String input) {
     PathFragment somePath = PathFragment.create("/some/path.txt");
-    ParserInputSource inputSource = ParserInputSource.create(input, somePath);
+    ParserInput inputSource = ParserInput.create(input, somePath);
     Reporter reporter = new Reporter(new EventBus());
     reporter.addHandler(new EventHandler() {
       @Override
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/NodeVisitorTest.java b/src/test/java/com/google/devtools/build/lib/syntax/NodeVisitorTest.java
index 09d1a62..1310076 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/NodeVisitorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/NodeVisitorTest.java
@@ -27,7 +27,7 @@
 public final class NodeVisitorTest {
 
   private BuildFileAST parse(String... lines) throws IOException {
-    ParserInputSource input = ParserInputSource.fromLines(lines);
+    ParserInput input = ParserInput.fromLines(lines);
     return BuildFileAST.parse(input, Environment.FAIL_FAST_HANDLER);
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserInputSourceTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserInputTest.java
similarity index 81%
rename from src/test/java/com/google/devtools/build/lib/syntax/ParserInputSourceTest.java
rename to src/test/java/com/google/devtools/build/lib/syntax/ParserInputTest.java
index ce90e28..7871fb2 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserInputSourceTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserInputTest.java
@@ -26,9 +26,9 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-/** A test case for {@link ParserInputSource}. */
+/** A test case for {@link ParserInput}. */
 @RunWith(JUnit4.class)
-public class ParserInputSourceTest {
+public class ParserInputTest {
 
   private Scratch scratch = new Scratch();
 
@@ -37,7 +37,7 @@
     String content = joinLines("Line 1", "Line 2", "Line 3", "");
     Path file = scratch.file("/tmp/my/file.txt", content.getBytes(StandardCharsets.UTF_8));
     byte[] bytes = FileSystemUtils.readWithKnownFileSize(file, file.getFileSize());
-    ParserInputSource input = ParserInputSource.create(bytes, file.asFragment());
+    ParserInput input = ParserInput.create(bytes, file.asFragment());
     assertThat(new String(input.getContent())).isEqualTo(content);
     assertThat(input.getPath().toString()).isEqualTo("/tmp/my/file.txt");
   }
@@ -46,7 +46,7 @@
   public void testCreateFromString() {
     String content = "Content provided as a string.";
     String pathName = "/the/name/of/the/content.txt";
-    ParserInputSource input = ParserInputSource.create(content, PathFragment.create(pathName));
+    ParserInput input = ParserInput.create(content, PathFragment.create(pathName));
     assertThat(new String(input.getContent())).isEqualTo(content);
     assertThat(input.getPath().toString()).isEqualTo(pathName);
   }
@@ -56,20 +56,19 @@
     String content = "Content provided as a string.";
     String pathName = "/the/name/of/the/content.txt";
     char[] contentChars = content.toCharArray();
-    ParserInputSource input = ParserInputSource.create(contentChars, PathFragment.create(pathName));
+    ParserInput input = ParserInput.create(contentChars, PathFragment.create(pathName));
     assertThat(new String(input.getContent())).isEqualTo(content);
     assertThat(input.getPath().toString()).isEqualTo(pathName);
   }
 
   @Test
   public void testWillNotTryToReadInputFileIfContentProvidedAsString() {
-    ParserInputSource.create(
-        "Content provided as string.", PathFragment.create("/will/not/try/to/read"));
+    ParserInput.create("Content provided as string.", PathFragment.create("/will/not/try/to/read"));
   }
 
   @Test
   public void testWillNotTryToReadInputFileIfContentProvidedAsChars() {
     char[] content = "Content provided as char array.".toCharArray();
-    ParserInputSource.create(content, PathFragment.create("/will/not/try/to/read"));
+    ParserInput.create(content, PathFragment.create("/will/not/try/to/read"));
   }
 }
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 349aaae..36ef855 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
@@ -37,7 +37,7 @@
 
   // Joins the lines, parses, and returns the file. No validation.
   private BuildFileAST parseFileWithComments(String... lines) {
-    ParserInputSource input = ParserInputSource.fromLines(lines);
+    ParserInput input = ParserInput.fromLines(lines);
     return BuildFileAST.parse(input, getEventHandler());
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/util/EvaluationTestCase.java b/src/test/java/com/google/devtools/build/lib/syntax/util/EvaluationTestCase.java
index 37a7ce8..44fa80c 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/util/EvaluationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/util/EvaluationTestCase.java
@@ -33,7 +33,7 @@
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Expression;
 import com.google.devtools.build.lib.syntax.Mutability;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.syntax.SkylarkUtils;
 import com.google.devtools.build.lib.syntax.SkylarkUtils.Phase;
 import com.google.devtools.build.lib.syntax.Statement;
@@ -159,7 +159,7 @@
   }
 
   protected final BuildFileAST parseBuildFileASTWithoutValidation(String... lines) {
-    ParserInputSource input = ParserInputSource.fromLines(lines);
+    ParserInput input = ParserInput.fromLines(lines);
     return BuildFileAST.parse(input, getEventHandler());
   }
 
@@ -183,7 +183,7 @@
 
   /** Parses an expression. */
   protected final Expression parseExpression(String... lines) {
-    return Expression.parse(ParserInputSource.fromLines(lines), getEventHandler());
+    return Expression.parse(ParserInput.fromLines(lines), getEventHandler());
   }
 
   public EvaluationTestCase update(String varname, Object value) throws Exception {
@@ -196,7 +196,7 @@
   }
 
   public Object eval(String... lines) throws Exception {
-    ParserInputSource input = ParserInputSource.fromLines(lines);
+    ParserInput input = ParserInput.fromLines(lines);
     if (testMode == TestMode.SKYLARK) {
       // TODO(adonovan): inline this call and factor with 'else' case.
       return BuildFileAST.eval(input, env);
diff --git a/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java b/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java
index fba1bdc..b71d34b0 100644
--- a/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java
+++ b/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java
@@ -22,7 +22,7 @@
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
-import com.google.devtools.build.lib.syntax.ParserInputSource;
+import com.google.devtools.build.lib.syntax.ParserInput;
 import com.google.devtools.build.lib.syntax.StarlarkFunction;
 import com.google.devtools.build.lib.syntax.StarlarkSemantics;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -60,10 +60,10 @@
             new SkylarkFileAccessor() {
 
               @Override
-              public ParserInputSource inputSource(String pathString) throws IOException {
+              public ParserInput inputSource(String pathString) throws IOException {
                 Path path = fileSystem.getPath("/" + pathString);
                 byte[] bytes = FileSystemUtils.asByteSource(path).read();
-                return ParserInputSource.create(bytes, path.asFragment());
+                return ParserInput.create(bytes, path.asFragment());
               }
 
               @Override