Lambda cleanup
RELNOTES: None.
PiperOrigin-RevId: 160516183
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
index 4672af1..9333e29 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/DotExpression.java
@@ -13,12 +13,12 @@
// limitations under the License.
package com.google.devtools.build.lib.syntax;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import com.google.common.collect.Streams;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.syntax.FuncallExpression.MethodDescriptor;
import com.google.devtools.build.lib.util.SpellChecker;
import java.io.IOException;
+import java.util.Optional;
/** Syntax node for a dot expression. e.g. obj.field, but not obj.method() */
public final class DotExpression extends Expression {
@@ -107,20 +107,13 @@
: FuncallExpression.getMethods(objValue.getClass(), name);
if (methods != null) {
- methods =
- Iterables.filter(
- methods,
- new Predicate<MethodDescriptor>() {
- @Override
- public boolean apply(MethodDescriptor methodDescriptor) {
- return methodDescriptor.getAnnotation().structField();
- }
- });
- if (methods.iterator().hasNext()) {
- MethodDescriptor method = Iterables.getOnlyElement(methods);
- if (method.getAnnotation().structField()) {
- return FuncallExpression.callMethod(method, name, objValue, new Object[] {}, loc, env);
- }
+ Optional<MethodDescriptor> method =
+ Streams.stream(methods)
+ .filter(methodDescriptor -> methodDescriptor.getAnnotation().structField())
+ .findFirst();
+ if (method.isPresent() && method.get().getAnnotation().structField()) {
+ return FuncallExpression.callMethod(
+ method.get(), name, objValue, new Object[] {}, loc, env);
}
}
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 df37954..ae97362 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,12 +568,7 @@
// arg_list ::= ( (arg ',')* arg ','? )?
private List<Argument.Passed> parseFuncallArguments() {
- List<Argument.Passed> arguments =
- parseFunctionArguments(new Supplier<Argument.Passed>() {
- @Override public Argument.Passed get() {
- return parseFuncallArgument();
- }
- });
+ List<Argument.Passed> arguments = parseFunctionArguments(() -> parseFuncallArgument());
try {
Argument.validateFuncallArguments(arguments);
} catch (Argument.ArgumentException e) {
@@ -1310,7 +1305,8 @@
expect(TokenKind.DEF);
Identifier ident = parseIdent();
expect(TokenKind.LPAREN);
- List<Parameter<Expression, Expression>> params = parseParameters();
+ List<Parameter<Expression, Expression>> params =
+ parseFunctionArguments(() -> parseFunctionParameter());
FunctionSignature.WithValues<Expression, Expression> signature = functionSignature(params);
expect(TokenKind.RPAREN);
expect(TokenKind.COLON);
@@ -1330,15 +1326,6 @@
}
}
- private List<Parameter<Expression, Expression>> parseParameters() {
- return parseFunctionArguments(
- new Supplier<Parameter<Expression, Expression>>() {
- @Override public Parameter<Expression, Expression> get() {
- return parseFunctionParameter();
- }
- });
- }
-
/**
* Parse a list of Argument-s. The arguments can be of class Argument.Passed or Parameter,
* as returned by the Supplier parseArgument (that, taking no argument, must be closed over