Automated conversion to Java 8

With a few manual fixes for readability.

RELNOTES: None.
PiperOrigin-RevId: 160582556
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalExceptionWithStackTrace.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalExceptionWithStackTrace.java
index f9d75bb..713f57f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalExceptionWithStackTrace.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalExceptionWithStackTrace.java
@@ -130,7 +130,7 @@
   private boolean isSameLocation(Location first, Location second) {
     try {
       return Objects.equals(first.getPath(), second.getPath())
-          && Objects.equals(first.getStartOffset(), second.getStartOffset());
+          && first.getStartOffset() == second.getStartOffset();
     } catch (NullPointerException ex) {
       return first == second;
     }
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FunctionSignature.java b/src/main/java/com/google/devtools/build/lib/syntax/FunctionSignature.java
index 401b4a3..9b0fb00 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/FunctionSignature.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/FunctionSignature.java
@@ -13,10 +13,11 @@
 // limitations under the License.
 package com.google.devtools.build.lib.syntax;
 
+import static com.google.common.collect.ImmutableList.toImmutableList;
+
 import com.google.auto.value.AutoValue;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Interner;
-import com.google.common.collect.Lists;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
 import com.google.devtools.build.lib.util.Preconditions;
@@ -159,8 +160,8 @@
 
   /** Intern a list of names */
   public static ImmutableList<String> names(List<String> names) {
-    return namesInterner.intern(ImmutableList.<String>copyOf(
-        Lists.transform(names, StringCanonicalizer.INTERN)));
+    return namesInterner.intern(
+        names.stream().map(StringCanonicalizer::intern).collect(toImmutableList()));
   }
 
   /** Intern a list of names */
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/GlobCriteria.java b/src/main/java/com/google/devtools/build/lib/syntax/GlobCriteria.java
index c1bd88b..91979fb 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/GlobCriteria.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/GlobCriteria.java
@@ -14,15 +14,16 @@
 
 package com.google.devtools.build.lib.syntax;
 
+import static com.google.common.collect.ImmutableList.toImmutableList;
+
 import com.google.common.base.Functions;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableList.Builder;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.util.Preconditions;
-
 import java.util.List;
-
+import java.util.stream.Stream;
 import javax.annotation.Nullable;
 
 /**
@@ -90,8 +91,9 @@
   public static GlobCriteria createWithAdditionalExcludes(GlobCriteria base,
       List<String> excludes) {
     Preconditions.checkArgument(base.isGlob());
-    return fromGlobCall(base.include,
-        ImmutableList.copyOf(Iterables.concat(base.exclude, excludes)));
+    return fromGlobCall(
+        base.include,
+        Stream.concat(base.exclude.stream(), excludes.stream()).collect(toImmutableList()));
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java b/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java
index d16a83d..eda6609 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/LineNumberTable.java
@@ -215,11 +215,7 @@
       Map<String, PathFragment> pathCache = new HashMap<>();
       while (m.find()) {
         String pathString = m.group(2);
-        PathFragment pathFragment = pathCache.get(pathString);
-        if (pathFragment == null) {
-          pathFragment = defaultPath.getRelative(pathString);
-          pathCache.put(pathString, pathFragment);
-        }
+        PathFragment pathFragment = pathCache.computeIfAbsent(pathString, defaultPath::getRelative);
         unorderedTable.add(new SingleHashLine(
                 m.start(0) + 1,  //offset (+1 to skip \n in pattern)
                 Integer.parseInt(m.group(1)),  // line number
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index 8f466b7..3b1a7c0 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -14,11 +14,12 @@
 
 package com.google.devtools.build.lib.syntax;
 
+import static java.util.stream.Collectors.joining;
+
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -2063,39 +2064,48 @@
         }
       };
 
-  @SkylarkSignature(name = "print", returnType = Runtime.NoneType.class,
-      doc = "Prints <code>args</code> as output. It will be prefixed with the string <code>"
-          + "\"WARNING\"</code> and the location (file and line number) of this call. It can be "
-          + "used for debugging."
-          + "<p>Using <code>print</code> in production code is discouraged due to the spam it "
-          + "creates for users. For deprecations, prefer a hard error using <a href=\"#fail\">"
-          + "fail()</a> when possible.",
-      parameters = {
-        @Param(name = "sep", type = String.class, defaultValue = "' '",
-            named = true, positional = false,
-            doc = "The separator string between the objects, default is space (\" \").")},
-      // NB: as compared to Python3, we're missing optional named-only arguments 'end' and 'file'
-      extraPositionals = @Param(name = "args", doc = "The objects to print."),
-      useLocation = true, useEnvironment = true)
-  private static final BuiltinFunction print = new BuiltinFunction("print") {
-    public Runtime.NoneType invoke(String sep, SkylarkList<?> starargs,
-        Location loc, Environment env) throws EvalException {
-      String msg = Joiner.on(sep).join(Iterables.transform(starargs,
-              new com.google.common.base.Function<Object, String>() {
-                @Override
-                public String apply(Object input) {
-                  return Printer.str(input);
-                }}));
-      // As part of the integration test "skylark_flag_test.sh", if the
-      // "--internal_skylark_flag_test_canary" flag is enabled, append an extra marker string to the
-      // output.
-      if (env.getSemantics().skylarkFlagTestCanary) {
-        msg += "<== skylark flag test ==>";
-      }
-      env.handleEvent(Event.warn(loc, msg));
-      return Runtime.NONE;
-    }
-  };
+  @SkylarkSignature(
+    name = "print",
+    returnType = Runtime.NoneType.class,
+    doc =
+        "Prints <code>args</code> as output. It will be prefixed with the string <code>"
+            + "\"WARNING\"</code> and the location (file and line number) of this call. It can be "
+            + "used for debugging."
+            + "<p>Using <code>print</code> in production code is discouraged due to the spam it "
+            + "creates for users. For deprecations, prefer a hard error using <a href=\"#fail\">"
+            + "fail()</a> when possible.",
+    parameters = {
+      @Param(
+        name = "sep",
+        type = String.class,
+        defaultValue = "' '",
+        named = true,
+        positional = false,
+        doc = "The separator string between the objects, default is space (\" \")."
+      )
+    },
+    // NB: as compared to Python3, we're missing optional named-only arguments 'end' and 'file'
+    extraPositionals = @Param(name = "args", doc = "The objects to print."),
+    useLocation = true,
+    useEnvironment = true
+  )
+  private static final BuiltinFunction print =
+      new BuiltinFunction("print") {
+        public Runtime.NoneType invoke(
+            String sep, SkylarkList<?> starargs, Location loc, Environment env)
+            throws EvalException {
+          String msg = starargs.stream().map(Printer::str).collect(joining(sep));
+          // As part of the integration test "skylark_flag_test.sh", if the
+          // "--internal_skylark_flag_test_canary" flag is enabled, append an extra marker string to
+          // the
+          // output.
+          if (env.getSemantics().skylarkFlagTestCanary) {
+            msg += "<== skylark flag test ==>";
+          }
+          env.handleEvent(Event.warn(loc, msg));
+          return Runtime.NONE;
+        }
+      };
 
   @SkylarkSignature(
     name = "zip",
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Mutability.java b/src/main/java/com/google/devtools/build/lib/syntax/Mutability.java
index ead4df0..1b00915 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Mutability.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Mutability.java
@@ -13,7 +13,6 @@
 // limitations under the License.
 package com.google.devtools.build.lib.syntax;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.util.Preconditions;
@@ -245,12 +244,8 @@
     }
 
     if (env.mutability().isLocked(object)) {
-      Iterable<String> locs = Iterables.transform(env.mutability().getLockLocations(object),
-          new Function<Location, String>() {
-              @Override
-              public String apply(Location loc) {
-                return loc.print();
-              }});
+      Iterable<String> locs =
+          Iterables.transform(env.mutability().getLockLocations(object), Location::print);
       throw new MutabilityException(
           "trying to mutate a locked object (is it currently being iterated over by a for loop "
           + "or comprehension?)\n"
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 ae97362..f5e5b51 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
@@ -568,7 +568,7 @@
 
   // arg_list ::= ( (arg ',')* arg ','? )?
   private List<Argument.Passed> parseFuncallArguments() {
-    List<Argument.Passed> arguments = parseFunctionArguments(() -> parseFuncallArgument());
+    List<Argument.Passed> arguments = parseFunctionArguments(this::parseFuncallArgument);
     try {
       Argument.validateFuncallArguments(arguments);
     } catch (Argument.ArgumentException e) {
@@ -1306,7 +1306,7 @@
     Identifier ident = parseIdent();
     expect(TokenKind.LPAREN);
     List<Parameter<Expression, Expression>> params =
-        parseFunctionArguments(() -> parseFunctionParameter());
+        parseFunctionArguments(this::parseFunctionParameter);
     FunctionSignature.WithValues<Expression, Expression> signature = functionSignature(params);
     expect(TokenKind.RPAREN);
     expect(TokenKind.COLON);
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
index 4280794..8f67212 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
@@ -146,9 +146,7 @@
     Preconditions.checkArgument(nameSpace.equals(getCanonicalRepresentation(nameSpace)));
     Preconditions.checkArgument(
         getCanonicalRepresentation(function.getObjectType()).equals(nameSpace));
-    if (!functions.containsKey(nameSpace)) {
-      functions.put(nameSpace, new HashMap<String, BaseFunction>());
-    }
+    functions.computeIfAbsent(nameSpace, k -> new HashMap<String, BaseFunction>());
     functions.get(nameSpace).put(function.getName(), function);
   }