Keep function parameters in the AST.
--
MOS_MIGRATED_REVID=102330569
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java b/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java
index f9e26ed..ae7c027 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/FunctionDefStatement.java
@@ -16,7 +16,6 @@
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
/**
@@ -25,20 +24,23 @@
public class FunctionDefStatement extends Statement {
private final Identifier ident;
- private final FunctionSignature.WithValues<Expression, Expression> args;
+ private final FunctionSignature.WithValues<Expression, Expression> signature;
private final ImmutableList<Statement> statements;
+ private final ImmutableList<Parameter<Expression, Expression>> parameters;
public FunctionDefStatement(Identifier ident,
- FunctionSignature.WithValues<Expression, Expression> args,
- Collection<Statement> statements) {
+ Iterable<Parameter<Expression, Expression>> parameters,
+ FunctionSignature.WithValues<Expression, Expression> signature,
+ Iterable<Statement> statements) {
this.ident = ident;
- this.args = args;
+ this.signature = signature;
this.statements = ImmutableList.copyOf(statements);
+ this.parameters = ImmutableList.copyOf(parameters);
}
@Override
void exec(Environment env) throws EvalException, InterruptedException {
- List<Expression> defaultExpressions = args.getDefaultValues();
+ List<Expression> defaultExpressions = signature.getDefaultValues();
ArrayList<Object> defaultValues = null;
ArrayList<SkylarkType> types = null;
@@ -50,13 +52,13 @@
}
env.update(ident.getName(), new UserDefinedFunction(
ident, FunctionSignature.WithValues.<Object, SkylarkType>create(
- args.getSignature(), defaultValues, types),
+ signature.getSignature(), defaultValues, types),
statements, (SkylarkEnvironment) env));
}
@Override
public String toString() {
- return "def " + ident + "(" + args + "):\n";
+ return "def " + ident + "(" + signature + "):\n";
}
public Identifier getIdent() {
@@ -67,8 +69,12 @@
return statements;
}
- public FunctionSignature.WithValues<Expression, Expression> getArgs() {
- return args;
+ public ImmutableList<Parameter<Expression, Expression>> getParameters() {
+ return parameters;
+ }
+
+ public FunctionSignature.WithValues<Expression, Expression> getSignature() {
+ return signature;
}
@Override
@@ -79,10 +85,10 @@
@Override
void validate(final ValidationEnvironment env) throws EvalException {
ValidationEnvironment localEnv = new ValidationEnvironment(env);
- FunctionSignature sig = args.getSignature();
+ FunctionSignature sig = signature.getSignature();
FunctionSignature.Shape shape = sig.getShape();
ImmutableList<String> names = sig.getNames();
- List<Expression> defaultExpressions = args.getDefaultValues();
+ List<Expression> defaultExpressions = signature.getDefaultValues();
int positionals = shape.getPositionals();
int mandatoryPositionals = shape.getMandatoryPositionals();