| OLD | NEW | 
|    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  Loading... | 
|  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  Loading... | 
|  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  Loading... | 
|  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 } | 
| OLD | NEW |