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

Side by Side Diff: pkg/js_ast/lib/src/printer.dart

Issue 1196433002: Create and test source mapping for invocations. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Update comments. Created 5 years, 5 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of js_ast; 5 part of js_ast;
6 6
7 7
8 class JavaScriptPrintingOptions { 8 class JavaScriptPrintingOptions {
9 final bool shouldCompressOutput; 9 final bool shouldCompressOutput;
10 final bool minifyLocalVariables; 10 final bool minifyLocalVariables;
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 blockBody(then, needsSeparation: false, needsNewline: !hasElse); 353 blockBody(then, needsSeparation: false, needsNewline: !hasElse);
354 if (hasElse) { 354 if (hasElse) {
355 if (thenWasBlock) { 355 if (thenWasBlock) {
356 spaceOut(); 356 spaceOut();
357 } else { 357 } else {
358 indent(); 358 indent();
359 } 359 }
360 out("else"); 360 out("else");
361 if (elsePart is If) { 361 if (elsePart is If) {
362 pendingSpace = true; 362 pendingSpace = true;
363 startNode(elsePart);
363 ifOut(elsePart, false); 364 ifOut(elsePart, false);
365 endNode(elsePart);
364 } else { 366 } else {
365 blockBody(unwrapBlockIfSingleStatement(elsePart), 367 blockBody(unwrapBlockIfSingleStatement(elsePart),
366 needsSeparation: true, needsNewline: true); 368 needsSeparation: true, needsNewline: true);
367 } 369 }
368 } 370 }
369 } 371 }
370 372
371 @override 373 @override
372 void visitIf(If node) { 374 void visitIf(If node) {
373 ifOut(node, true); 375 ifOut(node, true);
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 localNamer.leaveScope(); 623 localNamer.leaveScope();
622 return closingPosition; 624 return closingPosition;
623 625
624 } 626 }
625 627
626 @override 628 @override
627 visitFunctionDeclaration(FunctionDeclaration declaration) { 629 visitFunctionDeclaration(FunctionDeclaration declaration) {
628 VarCollector vars = new VarCollector(); 630 VarCollector vars = new VarCollector();
629 vars.visitFunctionDeclaration(declaration); 631 vars.visitFunctionDeclaration(declaration);
630 indent(); 632 indent();
631 functionOut(declaration.function, declaration.name, vars); 633 startNode(declaration.function);
634 currentNode.closingPosition =
635 functionOut(declaration.function, declaration.name, vars);
636 endNode(declaration.function);
632 lineOut(); 637 lineOut();
633 } 638 }
634 639
635 visitNestedExpression(Expression node, int requiredPrecedence, 640 visitNestedExpression(Expression node, int requiredPrecedence,
636 {bool newInForInit, bool newAtStatementBegin}) { 641 {bool newInForInit, bool newAtStatementBegin}) {
637 bool needsParentheses = 642 bool needsParentheses =
638 // a - (b + c). 643 // a - (b + c).
639 (requiredPrecedence != EXPRESSION && 644 (requiredPrecedence != EXPRESSION &&
640 node.precedenceLevel < requiredPrecedence) || 645 node.precedenceLevel < requiredPrecedence) ||
641 // for (a = (x in o); ... ; ... ) { ... } 646 // for (a = (x in o); ... ; ... ) { ... }
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 visitNestedExpression(access.receiver, CALL, 922 visitNestedExpression(access.receiver, CALL,
918 newInForInit: inForInit, 923 newInForInit: inForInit,
919 newAtStatementBegin: atStatementBegin); 924 newAtStatementBegin: atStatementBegin);
920 Node selector = access.selector; 925 Node selector = access.selector;
921 if (selector is LiteralString) { 926 if (selector is LiteralString) {
922 LiteralString selectorString = selector; 927 LiteralString selectorString = selector;
923 String fieldWithQuotes = selectorString.value; 928 String fieldWithQuotes = selectorString.value;
924 if (isValidJavaScriptId(fieldWithQuotes)) { 929 if (isValidJavaScriptId(fieldWithQuotes)) {
925 if (access.receiver is LiteralNumber) out(" ", isWhitespace: true); 930 if (access.receiver is LiteralNumber) out(" ", isWhitespace: true);
926 out("."); 931 out(".");
932 startNode(selector);
927 out(fieldWithQuotes.substring(1, fieldWithQuotes.length - 1)); 933 out(fieldWithQuotes.substring(1, fieldWithQuotes.length - 1));
934 endNode(selector);
928 return; 935 return;
929 } 936 }
930 } 937 }
931 out("["); 938 out("[");
932 visitNestedExpression(selector, EXPRESSION, 939 visitNestedExpression(selector, EXPRESSION,
933 newInForInit: false, newAtStatementBegin: false); 940 newInForInit: false, newAtStatementBegin: false);
934 out("]"); 941 out("]");
935 } 942 }
936 943
937 @override 944 @override
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 void visitArrayInitializer(ArrayInitializer node) { 1012 void visitArrayInitializer(ArrayInitializer node) {
1006 out("["); 1013 out("[");
1007 List<Expression> elements = node.elements; 1014 List<Expression> elements = node.elements;
1008 for (int i = 0; i < elements.length; i++) { 1015 for (int i = 0; i < elements.length; i++) {
1009 Expression element = elements[i]; 1016 Expression element = elements[i];
1010 if (element is ArrayHole) { 1017 if (element is ArrayHole) {
1011 // Note that array holes must have a trailing "," even if they are 1018 // Note that array holes must have a trailing "," even if they are
1012 // in last position. Otherwise `[,]` (having length 1) would become 1019 // in last position. Otherwise `[,]` (having length 1) would become
1013 // equal to `[]` (the empty array) 1020 // equal to `[]` (the empty array)
1014 // and [1,,] (array with 1 and a hole) would become [1,] = [1]. 1021 // and [1,,] (array with 1 and a hole) would become [1,] = [1].
1022 startNode(element);
1015 out(","); 1023 out(",");
1024 endNode(element);
1016 continue; 1025 continue;
1017 } 1026 }
1018 if (i != 0) spaceOut(); 1027 if (i != 0) spaceOut();
1019 visitNestedExpression(element, ASSIGNMENT, 1028 visitNestedExpression(element, ASSIGNMENT,
1020 newInForInit: false, newAtStatementBegin: false); 1029 newInForInit: false, newAtStatementBegin: false);
1021 // We can skip the trailing "," for the last element (since it's not 1030 // We can skip the trailing "," for the last element (since it's not
1022 // an array hole). 1031 // an array hole).
1023 if (i != elements.length - 1) out(","); 1032 if (i != elements.length - 1) out(",");
1024 } 1033 }
1025 out("]"); 1034 out("]");
(...skipping 26 matching lines...) Expand all
1052 indentLess(); 1061 indentLess();
1053 if (!node.isOneLiner && !properties.isEmpty) { 1062 if (!node.isOneLiner && !properties.isEmpty) {
1054 lineOut(); 1063 lineOut();
1055 indent(); 1064 indent();
1056 } 1065 }
1057 out("}"); 1066 out("}");
1058 } 1067 }
1059 1068
1060 @override 1069 @override
1061 void visitProperty(Property node) { 1070 void visitProperty(Property node) {
1071 startNode(node.name);
1062 if (node.name is LiteralString) { 1072 if (node.name is LiteralString) {
1063 LiteralString nameString = node.name; 1073 LiteralString nameString = node.name;
1064 String name = nameString.value; 1074 String name = nameString.value;
1065 if (isValidJavaScriptId(name)) { 1075 if (isValidJavaScriptId(name)) {
1066 out(name.substring(1, name.length - 1)); 1076 out(name.substring(1, name.length - 1));
1067 } else { 1077 } else {
1068 out(name); 1078 out(name);
1069 } 1079 }
1070 } else { 1080 } else {
1071 assert(node.name is LiteralNumber); 1081 assert(node.name is LiteralNumber);
1072 LiteralNumber nameNumber = node.name; 1082 LiteralNumber nameNumber = node.name;
1073 out(nameNumber.value); 1083 out(nameNumber.value);
1074 } 1084 }
1085 endNode(node.name);
1075 out(":"); 1086 out(":");
1076 spaceOut(); 1087 spaceOut();
1077 visitNestedExpression(node.value, ASSIGNMENT, 1088 visitNestedExpression(node.value, ASSIGNMENT,
1078 newInForInit: false, newAtStatementBegin: false); 1089 newInForInit: false, newAtStatementBegin: false);
1079 } 1090 }
1080 1091
1081 @override 1092 @override
1082 void visitRegExpLiteral(RegExpLiteral node) { 1093 void visitRegExpLiteral(RegExpLiteral node) {
1083 out(node.pattern); 1094 out(node.pattern);
1084 } 1095 }
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
1450 } 1461 }
1451 } 1462 }
1452 1463
1453 EnterExitNode exitNode(JavaScriptPrintingContext context, int position) { 1464 EnterExitNode exitNode(JavaScriptPrintingContext context, int position) {
1454 // Enter must happen before exit. 1465 // Enter must happen before exit.
1455 addToNode(context, position); 1466 addToNode(context, position);
1456 context.exitNode(node, startPosition, position, closingPosition); 1467 context.exitNode(node, startPosition, position, closingPosition);
1457 return parent; 1468 return parent;
1458 } 1469 }
1459 } 1470 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698