Keep function parameters in the AST.
--
MOS_MIGRATED_REVID=102330569
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 67c9ceb..1075e15 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
@@ -1329,21 +1329,17 @@
expect(TokenKind.DEF);
Identifier ident = parseIdent();
expect(TokenKind.LPAREN);
- FunctionSignature.WithValues<Expression, Expression> args = parseFunctionSignature();
+ List<Parameter<Expression, Expression>> params = parseParameters();
+ FunctionSignature.WithValues<Expression, Expression> signature = functionSignature(params);
expect(TokenKind.RPAREN);
expect(TokenKind.COLON);
List<Statement> block = parseSuite();
- FunctionDefStatement stmt = new FunctionDefStatement(ident, args, block);
+ FunctionDefStatement stmt = new FunctionDefStatement(ident, params, signature, block);
list.add(setLocation(stmt, start, token.right));
}
- private FunctionSignature.WithValues<Expression, Expression> parseFunctionSignature() {
- List<Parameter<Expression, Expression>> parameters =
- parseFunctionArguments(new Supplier<Parameter<Expression, Expression>>() {
- @Override public Parameter<Expression, Expression> get() {
- return parseFunctionParameter();
- }
- });
+ private FunctionSignature.WithValues<Expression, Expression> functionSignature(
+ List<Parameter<Expression, Expression>> parameters) {
try {
return FunctionSignature.WithValues.<Expression, Expression>of(parameters);
} catch (FunctionSignature.SignatureException e) {
@@ -1353,6 +1349,15 @@
}
}
+ 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