| Index: runtime/vm/ast_printer.cc
|
| diff --git a/runtime/vm/ast_printer.cc b/runtime/vm/ast_printer.cc
|
| index e19610911ba9f3713b8cc27cf1ca4fc6a52d4edb..de639406de038637996bbc53d831cb6645369251 100644
|
| --- a/runtime/vm/ast_printer.cc
|
| +++ b/runtime/vm/ast_printer.cc
|
| @@ -44,10 +44,7 @@ void AstPrinter::VisitSequenceNode(SequenceNode* node) {
|
| }
|
| logger_->Print(")");
|
| for (int i = 0; i < node->length(); ++i) {
|
| - logger_->Print("\n");
|
| - for (intptr_t p = 0; p < indent_; p++) {
|
| - logger_->Print(" ");
|
| - }
|
| + PrintNewlineAndIndent();
|
| node->NodeAt(i)->Visit(this);
|
| }
|
| logger_->Print(")");
|
| @@ -88,18 +85,9 @@ void AstPrinter::VisitReturnNode(ReturnNode* node) {
|
|
|
|
|
| void AstPrinter::VisitGenericLocalNode(AstNode* node,
|
| - const LocalVariable& var) {
|
| - logger_->Print(
|
| - "(%s %s%s \"%s\"", node->Name(), var.is_final() ? "final " : "",
|
| - String::Handle(var.type().Name()).ToCString(), var.name().ToCString());
|
| - if (var.HasIndex()) {
|
| - if (var.is_captured()) {
|
| - logger_->Print(" (context %d %d)", var.owner()->context_level(),
|
| - var.index());
|
| - } else {
|
| - logger_->Print(" (stack %d)", var.index());
|
| - }
|
| - }
|
| + const LocalVariable& variable) {
|
| + logger_->Print("(%s ", node->Name());
|
| + PrintLocalVariable(&variable);
|
| logger_->Print(" ");
|
| node->VisitChildren(this);
|
| logger_->Print(")");
|
| @@ -146,8 +134,51 @@ void AstPrinter::VisitStoreStaticFieldNode(StoreStaticFieldNode* node) {
|
| }
|
|
|
|
|
| +void AstPrinter::PrintLocalVariable(const LocalVariable* variable) {
|
| + logger_->Print("%s%s \"%s\"", variable->is_final() ? "final " : "",
|
| + String::Handle(variable->type().Name()).ToCString(),
|
| + variable->name().ToCString());
|
| + if (variable->HasIndex()) {
|
| + if (variable->is_captured()) {
|
| + logger_->Print(" (context %d %d)", variable->owner()->context_level(),
|
| + variable->index());
|
| + } else {
|
| + logger_->Print(" (stack %d)", variable->index());
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| +void AstPrinter::PrintNewlineAndIndent() {
|
| + logger_->Print("\n");
|
| + for (intptr_t p = 0; p < indent_; ++p) {
|
| + logger_->Print(" ");
|
| + }
|
| +}
|
| +
|
| +
|
| void AstPrinter::VisitLetNode(LetNode* node) {
|
| - VisitGenericAstNode(node);
|
| + logger_->Print("(Let (");
|
| + // Indent the variables and initializers by two.
|
| + indent_ += 2;
|
| + for (intptr_t i = 0; i < node->num_temps(); ++i) {
|
| + if (i != 0) PrintNewlineAndIndent();
|
| + logger_->Print("(");
|
| + PrintLocalVariable(node->TempAt(i));
|
| + logger_->Print(" ");
|
| + node->InitializerAt(i)->Visit(this);
|
| + logger_->Print(")");
|
| + }
|
| + logger_->Print(")");
|
| +
|
| + // Indent the body nodes by one.
|
| + --indent_;
|
| + for (intptr_t i = 0; i < node->nodes().length(); ++i) {
|
| + PrintNewlineAndIndent();
|
| + node->nodes()[i]->Visit(this);
|
| + }
|
| + logger_->Print(")");
|
| + --indent_;
|
| }
|
|
|
|
|
|
|