Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: src/prettyprinter.cc

Issue 561913002: Class syntax parsing (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: git rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/prettyprinter.h ('k') | src/scanner.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdarg.h> 5 #include <stdarg.h>
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #include "src/ast-value-factory.h" 9 #include "src/ast-value-factory.h"
10 #include "src/base/platform/platform.h" 10 #include "src/base/platform/platform.h"
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 } 282 }
283 283
284 284
285 void PrettyPrinter::VisitFunctionLiteral(FunctionLiteral* node) { 285 void PrettyPrinter::VisitFunctionLiteral(FunctionLiteral* node) {
286 Print("("); 286 Print("(");
287 PrintFunctionLiteral(node); 287 PrintFunctionLiteral(node);
288 Print(")"); 288 Print(")");
289 } 289 }
290 290
291 291
292 void PrettyPrinter::VisitClassLiteral(ClassLiteral* node) {
293 Print("(class ");
294 PrintLiteral(node->name(), false);
295 if (node->extends()) {
296 Print(" extends ");
297 Visit(node->extends());
298 }
299 Print(" { ");
300 for (int i = 0; i < node->properties()->length(); i++) {
301 PrintObjectLiteralProperty(node->properties()->at(i));
302 }
303 Print(" })");
304 }
305
306
292 void PrettyPrinter::VisitNativeFunctionLiteral(NativeFunctionLiteral* node) { 307 void PrettyPrinter::VisitNativeFunctionLiteral(NativeFunctionLiteral* node) {
293 Print("("); 308 Print("(");
294 PrintLiteral(node->name(), false); 309 PrintLiteral(node->name(), false);
295 Print(")"); 310 Print(")");
296 } 311 }
297 312
298 313
299 void PrettyPrinter::VisitConditional(Conditional* node) { 314 void PrettyPrinter::VisitConditional(Conditional* node) {
300 Visit(node->condition()); 315 Visit(node->condition());
301 Print(" ? "); 316 Print(" ? ");
(...skipping 14 matching lines...) Expand all
316 Print(","); 331 Print(",");
317 PrintLiteral(node->flags(), false); 332 PrintLiteral(node->flags(), false);
318 Print(") "); 333 Print(") ");
319 } 334 }
320 335
321 336
322 void PrettyPrinter::VisitObjectLiteral(ObjectLiteral* node) { 337 void PrettyPrinter::VisitObjectLiteral(ObjectLiteral* node) {
323 Print("{ "); 338 Print("{ ");
324 for (int i = 0; i < node->properties()->length(); i++) { 339 for (int i = 0; i < node->properties()->length(); i++) {
325 if (i != 0) Print(","); 340 if (i != 0) Print(",");
326 ObjectLiteral::Property* property = node->properties()->at(i); 341 PrintObjectLiteralProperty(node->properties()->at(i));
327 Print(" ");
328 Visit(property->key());
329 Print(": ");
330 Visit(property->value());
331 } 342 }
332 Print(" }"); 343 Print(" }");
333 } 344 }
334 345
335 346
347 void PrettyPrinter::PrintObjectLiteralProperty(
348 ObjectLiteralProperty* property) {
349 // TODO(arv): Better printing of methods etc.
350 Print(" ");
351 Visit(property->key());
352 Print(": ");
353 Visit(property->value());
354 }
355
356
336 void PrettyPrinter::VisitArrayLiteral(ArrayLiteral* node) { 357 void PrettyPrinter::VisitArrayLiteral(ArrayLiteral* node) {
337 Print("[ "); 358 Print("[ ");
338 for (int i = 0; i < node->values()->length(); i++) { 359 for (int i = 0; i < node->values()->length(); i++) {
339 if (i != 0) Print(","); 360 if (i != 0) Print(",");
340 Visit(node->values()->at(i)); 361 Visit(node->values()->at(i));
341 } 362 }
342 Print(" ]"); 363 Print(" ]");
343 } 364 }
344 365
345 366
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 PrintLiteralIndented("NAME", node->name(), false); 983 PrintLiteralIndented("NAME", node->name(), false);
963 PrintLiteralIndented("INFERRED NAME", node->inferred_name(), false); 984 PrintLiteralIndented("INFERRED NAME", node->inferred_name(), false);
964 PrintParameters(node->scope()); 985 PrintParameters(node->scope());
965 // We don't want to see the function literal in this case: it 986 // We don't want to see the function literal in this case: it
966 // will be printed via PrintProgram when the code for it is 987 // will be printed via PrintProgram when the code for it is
967 // generated. 988 // generated.
968 // PrintStatements(node->body()); 989 // PrintStatements(node->body());
969 } 990 }
970 991
971 992
993 void AstPrinter::VisitClassLiteral(ClassLiteral* node) {
994 IndentedScope indent(this, "CLASS LITERAL");
995 PrintLiteralIndented("NAME", node->name(), false);
996 }
997
998
972 void AstPrinter::VisitNativeFunctionLiteral(NativeFunctionLiteral* node) { 999 void AstPrinter::VisitNativeFunctionLiteral(NativeFunctionLiteral* node) {
973 IndentedScope indent(this, "NATIVE FUNC LITERAL"); 1000 IndentedScope indent(this, "NATIVE FUNC LITERAL");
974 PrintLiteralIndented("NAME", node->name(), false); 1001 PrintLiteralIndented("NAME", node->name(), false);
975 } 1002 }
976 1003
977 1004
978 void AstPrinter::VisitConditional(Conditional* node) { 1005 void AstPrinter::VisitConditional(Conditional* node) {
979 IndentedScope indent(this, "CONDITIONAL"); 1006 IndentedScope indent(this, "CONDITIONAL");
980 PrintIndentedVisit("CONDITION", node->condition()); 1007 PrintIndentedVisit("CONDITION", node->condition());
981 PrintIndentedVisit("THEN", node->then_expression()); 1008 PrintIndentedVisit("THEN", node->then_expression());
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 } 1178 }
1152 1179
1153 1180
1154 void AstPrinter::VisitSuperReference(SuperReference* node) { 1181 void AstPrinter::VisitSuperReference(SuperReference* node) {
1155 IndentedScope indent(this, "SUPER-REFERENCE"); 1182 IndentedScope indent(this, "SUPER-REFERENCE");
1156 } 1183 }
1157 1184
1158 #endif // DEBUG 1185 #endif // DEBUG
1159 1186
1160 } } // namespace v8::internal 1187 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/prettyprinter.h ('k') | src/scanner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698