private void ProcessVariableDeclaration( VariableDeclaration variableDeclaration, ParserContext context) { foreach (var variable in variableDeclaration.Declarations) { if (variable.Init != null) { var childContext = new ParserContext(context); ProcessExpression(variable.Id, childContext); ProcessExpression(variable.Init, childContext); } } }
public Completion ExecuteVariableDeclaration(VariableDeclaration statement) { foreach (var declaration in statement.Declarations) { if (declaration.Init != null) { var lhs = _engine.EvaluateExpression(declaration.Id) as Reference; if (lhs == null) { throw new ArgumentException(); } if (lhs.IsStrict() && lhs.GetBase().TryCast<EnvironmentRecord>() != null && (lhs.GetReferencedName() == "eval" || lhs.GetReferencedName() == "arguments")) { throw new JavaScriptException(_engine.SyntaxError); } lhs.GetReferencedName(); var value = _engine.GetValue(_engine.EvaluateExpression(declaration.Init)); _engine.PutValue(lhs, value); } } return new Completion(Completion.Normal, Undefined.Instance, null); }
private void EmitVariableDeclaration(VariableDeclaration e) { Write(e.Kind + " "); bool first = true; foreach (var decl in e.Declarations) { if (first) first = false; else Write(", "); Emit(decl); } Write(";"); }