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

Side by Side Diff: lib/src/js/printer.dart

Issue 963343002: implement private members, fixes #74 (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « lib/src/codegen/js_codegen.dart ('k') | test/codegen/expect/_interceptors/_interceptors.js » ('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 (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 849 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 case "yield": 860 case "yield":
861 return true; 861 return true;
862 } 862 }
863 return false; 863 return false;
864 } 864 }
865 865
866 visitAccess(PropertyAccess access) { 866 visitAccess(PropertyAccess access) {
867 visitNestedExpression(access.receiver, CALL, 867 visitNestedExpression(access.receiver, CALL,
868 newInForInit: inForInit, 868 newInForInit: inForInit,
869 newAtStatementBegin: atStatementBegin); 869 newAtStatementBegin: atStatementBegin);
870 Node selector = access.selector; 870 propertyNameOut(access.selector, inAccess: true);
871 if (selector is LiteralString) {
872 LiteralString selectorString = selector;
873 String fieldWithQuotes = selectorString.value;
874 if (isValidJavaScriptId(fieldWithQuotes)) {
875 if (access.receiver is LiteralNumber) out(" ");
876 out(".");
877 out(fieldWithQuotes.substring(1, fieldWithQuotes.length - 1));
878 return;
879 }
880 }
881 out("[");
882 visitNestedExpression(selector, EXPRESSION,
883 newInForInit: false, newAtStatementBegin: false);
884 out("]");
885 } 871 }
886 872
887 visitNamedFunction(NamedFunction namedFunction) { 873 visitNamedFunction(NamedFunction namedFunction) {
888 VarCollector vars = new VarCollector(); 874 VarCollector vars = new VarCollector();
889 vars.visitNamedFunction(namedFunction); 875 vars.visitNamedFunction(namedFunction);
890 functionOut(namedFunction.function, namedFunction.name, vars); 876 functionOut(namedFunction.function, namedFunction.name, vars);
891 } 877 }
892 878
893 visitFun(Fun fun) { 879 visitFun(Fun fun) {
894 VarCollector vars = new VarCollector(); 880 VarCollector vars = new VarCollector();
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 spaceOut(); 1063 spaceOut();
1078 out("{}"); 1064 out("{}");
1079 } else { 1065 } else {
1080 blockBody(fun.body, needsSeparation: false, needsNewline: false); 1066 blockBody(fun.body, needsSeparation: false, needsNewline: false);
1081 } 1067 }
1082 localNamer.leaveScope(); 1068 localNamer.leaveScope();
1083 } 1069 }
1084 1070
1085 visitPropertyName(PropertyName node) => propertyNameOut(node); 1071 visitPropertyName(PropertyName node) => propertyNameOut(node);
1086 1072
1087 void propertyNameOut(Expression node, {bool inMethod: false}) { 1073 void propertyNameOut(Expression node, {bool inMethod: false,
1088 inForInit = false; 1074 bool inAccess: false}) {
1089 atStatementBegin = false;
1090 1075
1091 if (node is LiteralNumber) { 1076 if (node is LiteralNumber) {
1092 LiteralNumber nameNumber = node; 1077 LiteralNumber nameNumber = node;
1078 if (inAccess) out('[');
1093 out(nameNumber.value); 1079 out(nameNumber.value);
1080 if (inAccess) out(']');
1094 } else { 1081 } else {
1095 String quotedName; 1082 String quotedName;
1096 if (node is PropertyName) { 1083 if (node is PropertyName) {
1097 quotedName = "'${node.name}'"; 1084 quotedName = "'${node.name}'";
1098 } else if (node is LiteralString) { 1085 } else if (node is LiteralString) {
1099 quotedName = node.value; 1086 quotedName = node.value;
1100 } 1087 }
1101 if (quotedName != null) { 1088 if (quotedName != null) {
1102 if (isValidJavaScriptId(quotedName)) { 1089 if (isValidJavaScriptId(quotedName)) {
1090 if (inAccess) out('.');
1103 out(quotedName.substring(1, quotedName.length - 1)); 1091 out(quotedName.substring(1, quotedName.length - 1));
1104 } else { 1092 } else {
1105 if (inMethod) out("["); 1093 if (inMethod || inAccess) out("[");
1106 out(quotedName); 1094 out(quotedName);
1107 if (inMethod) out("]"); 1095 if (inMethod || inAccess) out("]");
1108 } 1096 }
1109 } else { 1097 } else {
1110 // ComputedPropertyName 1098 // ComputedPropertyName
1111 out("["); 1099 out("[");
1112 visit(node); 1100 visitNestedExpression(node, EXPRESSION,
1101 newInForInit: false, newAtStatementBegin: false);
1113 out("]"); 1102 out("]");
1114 } 1103 }
1115 } 1104 }
1116 } 1105 }
1117 1106
1118 visitLiteralExpression(LiteralExpression node) { 1107 visitLiteralExpression(LiteralExpression node) {
1119 String template = node.template; 1108 String template = node.template;
1120 List<Expression> inputs = node.inputs; 1109 List<Expression> inputs = node.inputs;
1121 1110
1122 List<String> parts = template.split('#'); 1111 List<String> parts = template.split('#');
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 codes.add(nthLetter((n ~/ nameSpaceSize) % LETTERS)); 1447 codes.add(nthLetter((n ~/ nameSpaceSize) % LETTERS));
1459 } 1448 }
1460 codes.add(charCodes.$0 + digit); 1449 codes.add(charCodes.$0 + digit);
1461 newName = new String.fromCharCodes(codes); 1450 newName = new String.fromCharCodes(codes);
1462 } 1451 }
1463 assert(new RegExp(r'[a-zA-Z][a-zA-Z0-9]*').hasMatch(newName)); 1452 assert(new RegExp(r'[a-zA-Z][a-zA-Z0-9]*').hasMatch(newName));
1464 maps.last[oldName] = newName; 1453 maps.last[oldName] = newName;
1465 return newName; 1454 return newName;
1466 } 1455 }
1467 } 1456 }
OLDNEW
« no previous file with comments | « lib/src/codegen/js_codegen.dart ('k') | test/codegen/expect/_interceptors/_interceptors.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698