| Index: sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart b/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
|
| index 7920ec74211c5c743fb22954ce178c5ed70309ea..6bd8ff4522b289f42248763b2339204b3c93569b 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/dart_backend/tree_tracer.dart
|
| @@ -9,8 +9,8 @@ import '../tracer.dart';
|
| import 'dart_tree.dart';
|
|
|
| class Block {
|
| + Label label;
|
| int index;
|
| - final Label label;
|
| /// Mixed list of [Statement] and [Block].
|
| /// A [Block] represents a synthetic goto statement.
|
| final List statements = [];
|
| @@ -223,7 +223,8 @@ class TreeTracer extends TracerUtil with StatementVisitor {
|
| visitAssign(Assign node) {
|
| String name = names.varName(node.variable);
|
| String rhs = expr(node.definition);
|
| - printStatement(name, "let $name = $rhs");
|
| + String extra = node.hasExactlyOneUse ? "[single-use]" : "";
|
| + printStatement(null, "assign $name = $rhs $extra");
|
| }
|
|
|
| visitReturn(Return node) {
|
| @@ -236,7 +237,7 @@ class TreeTracer extends TracerUtil with StatementVisitor {
|
|
|
| visitContinue(Continue node) {
|
| printStatement(null,
|
| - "continue ${collector.breakTargets[node.target].name}");
|
| + "continue ${collector.continueTargets[node.target].name}");
|
| }
|
|
|
| visitIf(If node) {
|
| @@ -397,12 +398,9 @@ class Names {
|
| String varName(Variable v) {
|
| String name = _names[v];
|
| if (name == null) {
|
| - name = v.name;
|
| - if (v.cachedName != null) {
|
| - name = v.cachedName;
|
| - }
|
| + String prefix = v.element == null ? 'v' : '${v.element.name}_';
|
| while (name == null || _usedNames.contains(name)) {
|
| - name = "v${_counter++}";
|
| + name = "$prefix${_counter++}";
|
| }
|
| _names[v] = name;
|
| _usedNames.add(name);
|
|
|