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

Side by Side Diff: lib/compiler/implementation/js/printer.dart

Issue 11238035: Make isEmpty a getter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update status file with co19 issue number. Created 8 years, 1 month 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
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 class Printer implements NodeVisitor { 5 class Printer implements NodeVisitor {
6 final bool shouldCompressOutput; 6 final bool shouldCompressOutput;
7 leg.Compiler compiler; 7 leg.Compiler compiler;
8 leg.CodeBuffer outBuffer; 8 leg.CodeBuffer outBuffer;
9 int indentLevel = 0; 9 int indentLevel = 0;
10 bool inForInit = false; 10 bool inForInit = false;
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 visitAll(node.cases); 324 visitAll(node.cases);
325 indentLevel--; 325 indentLevel--;
326 outIndentLn("}"); 326 outIndentLn("}");
327 } 327 }
328 328
329 visitCase(Case node) { 329 visitCase(Case node) {
330 outIndent("case "); 330 outIndent("case ");
331 visitNestedExpression(node.expression, EXPRESSION, 331 visitNestedExpression(node.expression, EXPRESSION,
332 newInForInit: false, newAtStatementBegin: false); 332 newInForInit: false, newAtStatementBegin: false);
333 outLn(":"); 333 outLn(":");
334 if (!node.body.statements.isEmpty()) { 334 if (!node.body.statements.isEmpty) {
335 indentLevel++; 335 indentLevel++;
336 blockOutWithoutBraces(node.body); 336 blockOutWithoutBraces(node.body);
337 indentLevel--; 337 indentLevel--;
338 } 338 }
339 } 339 }
340 340
341 visitDefault(Default node) { 341 visitDefault(Default node) {
342 outIndentLn("default:"); 342 outIndentLn("default:");
343 if (!node.body.statements.isEmpty()) { 343 if (!node.body.statements.isEmpty) {
344 indentLevel++; 344 indentLevel++;
345 blockOutWithoutBraces(node.body); 345 blockOutWithoutBraces(node.body);
346 indentLevel--; 346 indentLevel--;
347 } 347 }
348 } 348 }
349 349
350 visitLabeledStatement(LabeledStatement node) { 350 visitLabeledStatement(LabeledStatement node) {
351 outIndent("${node.label}:"); 351 outIndent("${node.label}:");
352 blockBody(node.body, needsSeparation: false, needsNewline: true); 352 blockBody(node.body, needsSeparation: false, needsNewline: true);
353 } 353 }
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 return oldName; 938 return oldName;
939 } 939 }
940 940
941 static int nthLetter(int n) { 941 static int nthLetter(int n) {
942 return (n < 26) ? charCodes.$a + n : charCodes.$A + n - 26; 942 return (n < 26) ? charCodes.$a + n : charCodes.$A + n - 26;
943 } 943 }
944 944
945 String declareName(String oldName) { 945 String declareName(String oldName) {
946 const LETTERS = 52; 946 const LETTERS = 52;
947 const DIGITS = 10; 947 const DIGITS = 10;
948 if (maps.isEmpty()) return oldName; 948 if (maps.isEmpty) return oldName;
949 949
950 String newName; 950 String newName;
951 int n = nameNumber; 951 int n = nameNumber;
952 if (n < LETTERS) { 952 if (n < LETTERS) {
953 // Start naming variables a, b, c, ..., z, A, B, C, ..., Z. 953 // Start naming variables a, b, c, ..., z, A, B, C, ..., Z.
954 newName = new String.fromCharCodes([nthLetter(n)]); 954 newName = new String.fromCharCodes([nthLetter(n)]);
955 } else { 955 } else {
956 // Then name variables a0, a1, a2, ..., a9, b0, b1, ..., Z9, aa0, aa1, ... 956 // Then name variables a0, a1, a2, ..., a9, b0, b1, ..., Z9, aa0, aa1, ...
957 // For all functions with fewer than 500 locals this is just as compact 957 // For all functions with fewer than 500 locals this is just as compact
958 // as using aa, ab, etc. but avoids clashes with keywords. 958 // as using aa, ab, etc. but avoids clashes with keywords.
(...skipping 16 matching lines...) Expand all
975 } 975 }
976 codes.add(charCodes.$0 + digit); 976 codes.add(charCodes.$0 + digit);
977 newName = new String.fromCharCodes(codes); 977 newName = new String.fromCharCodes(codes);
978 } 978 }
979 assert(const RegExp(r'[a-zA-Z][a-zA-Z0-9]*').hasMatch(newName)); 979 assert(const RegExp(r'[a-zA-Z][a-zA-Z0-9]*').hasMatch(newName));
980 nameNumber++; 980 nameNumber++;
981 maps.last()[oldName] = newName; 981 maps.last()[oldName] = newName;
982 return newName; 982 return newName;
983 } 983 }
984 } 984 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/enqueue.dart ('k') | lib/compiler/implementation/js_backend/emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698