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