Chromium Code Reviews| Index: src/ast/prettyprinter.cc |
| diff --git a/src/ast/prettyprinter.cc b/src/ast/prettyprinter.cc |
| index 3f624be864878428e16e6d30314e2091848b7bd0..9cc841601d9f9fed9824dc3d4d983e84b2bb8533 100644 |
| --- a/src/ast/prettyprinter.cc |
| +++ b/src/ast/prettyprinter.cc |
| @@ -1203,6 +1203,14 @@ const char* AstPrinter::PrintProgram(FunctionLiteral* program) { |
| } |
| +void AstPrinter::PrintOut(Isolate* isolate, AstNode* node) { |
| + AstPrinter printer(isolate); |
| + printer.Init(); |
| + printer.Visit(node); |
| + PrintF("%s", printer.Output()); |
| +} |
| + |
| + |
| void AstPrinter::PrintDeclarations(ZoneList<Declaration*>* declarations) { |
| if (declarations->length() > 0) { |
| IndentedScope indent(this, "DECLS"); |
| @@ -1390,6 +1398,10 @@ void AstPrinter::VisitForOfStatement(ForOfStatement* node) { |
| PrintIndentedVisit("FOR", node->each()); |
| PrintIndentedVisit("OF", node->iterable()); |
| PrintIndentedVisit("BODY", node->body()); |
| + PrintIndentedVisit("INIT", node->assign_iterator()); |
| + PrintIndentedVisit("NEXT", node->next_result()); |
| + PrintIndentedVisit("EACH", node->assign_each()); |
| + PrintIndentedVisit("DONE", node->result_done()); |
| } |
| @@ -1542,31 +1554,36 @@ void AstPrinter::VisitArrayLiteral(ArrayLiteral* node) { |
| void AstPrinter::VisitVariableProxy(VariableProxy* node) { |
| - Variable* var = node->var(); |
| EmbeddedVector<char, 128> buf; |
| int pos = |
| FormatSlotNode(&buf, node, "VAR PROXY", node->VariableFeedbackSlot()); |
| - switch (var->location()) { |
| - case VariableLocation::UNALLOCATED: |
| - break; |
| - case VariableLocation::PARAMETER: |
| - SNPrintF(buf + pos, " parameter[%d]", var->index()); |
| - break; |
| - case VariableLocation::LOCAL: |
| - SNPrintF(buf + pos, " local[%d]", var->index()); |
| - break; |
| - case VariableLocation::CONTEXT: |
| - SNPrintF(buf + pos, " context[%d]", var->index()); |
| - break; |
| - case VariableLocation::GLOBAL: |
| - SNPrintF(buf + pos, " global[%d]", var->index()); |
| - break; |
| - case VariableLocation::LOOKUP: |
| - SNPrintF(buf + pos, " lookup"); |
| - break; |
| + if (!node->is_resolved()) { |
| + SNPrintF(buf + pos, " unresolved"); |
| + PrintLiteralWithModeIndented(buf.start(), nullptr, node->name()); |
| + } else { |
| + Variable* var = node->var(); |
| + switch (var->location()) { |
| + case VariableLocation::UNALLOCATED: |
| + break; |
|
Dan Ehrenberg
2016/02/16 21:18:30
Minor: Did git cl format add these indents? It's a
rossberg
2016/02/17 12:54:44
No, nothing changed with that, see diff. What do y
|
| + case VariableLocation::PARAMETER: |
| + SNPrintF(buf + pos, " parameter[%d]", var->index()); |
| + break; |
| + case VariableLocation::LOCAL: |
| + SNPrintF(buf + pos, " local[%d]", var->index()); |
| + break; |
| + case VariableLocation::CONTEXT: |
| + SNPrintF(buf + pos, " context[%d]", var->index()); |
| + break; |
| + case VariableLocation::GLOBAL: |
| + SNPrintF(buf + pos, " global[%d]", var->index()); |
| + break; |
| + case VariableLocation::LOOKUP: |
| + SNPrintF(buf + pos, " lookup"); |
| + break; |
| + } |
| + PrintLiteralWithModeIndented(buf.start(), var, node->name()); |
| } |
| - PrintLiteralWithModeIndented(buf.start(), var, node->name()); |
| } |