| Index: runtime/vm/ast.cc | 
| =================================================================== | 
| --- runtime/vm/ast.cc	(revision 23243) | 
| +++ runtime/vm/ast.cc	(working copy) | 
| @@ -73,6 +73,34 @@ | 
| } | 
|  | 
|  | 
| +LetNode::LetNode(intptr_t token_pos) | 
| +  : AstNode(token_pos), | 
| +    vars_(1), | 
| +    initializers_(1), | 
| +    body_(NULL) { } | 
| + | 
| + | 
| +LocalVariable* LetNode::AddInitializer(AstNode* node) { | 
| +  initializers_.Add(node); | 
| +  char name[64]; | 
| +  OS::SNPrint(name, sizeof(name), ":lt%"Pd"_%d", token_pos(), vars_.length()); | 
| +  LocalVariable* temp_var = | 
| +      new LocalVariable(token_pos(), | 
| +                        String::ZoneHandle(Symbols::New(name)), | 
| +                        Type::ZoneHandle(Type::DynamicType())); | 
| +  vars_.Add(temp_var); | 
| +  return temp_var; | 
| +} | 
| + | 
| + | 
| +void LetNode::VisitChildren(AstNodeVisitor* visitor) const { | 
| +  for (intptr_t i = 0; i < num_temps(); ++i) { | 
| +    initializers_[i]->Visit(visitor); | 
| +  } | 
| +  body_->Visit(visitor); | 
| +} | 
| + | 
| + | 
| void ArrayNode::VisitChildren(AstNodeVisitor* visitor) const { | 
| for (intptr_t i = 0; i < this->length(); i++) { | 
| ElementAt(i)->Visit(visitor); | 
|  |