public AddLocal ( string name, |
||
name | string | |
type | ||
Résultat | System.Linq.Expressions.ParameterExpression |
public ParamExpr AddLocal(string name, Type type = null)
{
// We have this behavior so that ex. "local x, x = 1, 2" works
ParamExpr param;
if (!variables.TryGetValue(name, out param))
variables.Add(name, param = Expr.Variable(type ?? typeof(object)));
return param;
}
Expr IStatementVisitor <Expr> .Visit(Statement.LocalAssign statement) { var values = WrapWithVarargsFirst(statement.Values); var locals = statement.Identifiers.Select(v => scope.AddLocal(v)).ToList(); if (statement.Values.Last().IsVarargs() || statement.Values.Last().IsFunctionCall()) { return(VarargsExpandAssignment(locals, values)); } return(AssignWithTemporaries(locals, values, Expr.Assign)); }