| Index: pkg/compiler/lib/src/js/rewrite_async.dart | 
| diff --git a/pkg/compiler/lib/src/js/rewrite_async.dart b/pkg/compiler/lib/src/js/rewrite_async.dart | 
| index b6b971c95d7aaa524ed7db66da40d4f3d3865ee1..e29c10451ddff24797d8961e4324d91f807c6e5e 100644 | 
| --- a/pkg/compiler/lib/src/js/rewrite_async.dart | 
| +++ b/pkg/compiler/lib/src/js/rewrite_async.dart | 
| @@ -115,11 +115,9 @@ abstract class AsyncRewriterBase extends js.NodeVisitor { | 
| /// or error case. | 
| String errorCodeName; | 
|  | 
| -  final String suggestedBodyName; | 
| /// The inner function that is scheduled to do each await/yield, | 
| /// and called to do a new iteration for sync*. | 
| -  js.VariableUse get body => new js.VariableUse(bodyName); | 
| -  String bodyName; | 
| +  js.Name bodyName; | 
|  | 
| /// Used to simulate a goto. | 
| /// | 
| @@ -179,7 +177,7 @@ abstract class AsyncRewriterBase extends js.NodeVisitor { | 
| AsyncRewriterBase(this.diagnosticListener, | 
| spannable, | 
| this.safeVariableName, | 
| -                    this.suggestedBodyName) | 
| +                    this.bodyName) | 
| : _spannable = spannable; | 
|  | 
| /// Initialize names used by the subClass. | 
| @@ -199,7 +197,6 @@ abstract class AsyncRewriterBase extends js.NodeVisitor { | 
| // generated after the analysis. | 
| resultName = freshName("result"); | 
| errorCodeName = freshName("errorCode"); | 
| -    bodyName = freshName(suggestedBodyName); | 
| gotoName = freshName("goto"); | 
| handlerName = freshName("handler"); | 
| nextName = freshName("next"); | 
| @@ -1184,6 +1181,9 @@ abstract class AsyncRewriterBase extends js.NodeVisitor { | 
| js.Expression visitStringConcatenation(js.StringConcatenation node) => node; | 
|  | 
| @override | 
| +  js.Name visitName(js.Name node) => node; | 
| + | 
| +  @override | 
| visitNamedFunction(js.NamedFunction node) { | 
| unsupported(node); | 
| } | 
| @@ -1687,7 +1687,7 @@ class AsyncRewriter extends AsyncRewriterBase { | 
| {this.asyncHelper, | 
| this.newCompleter, | 
| String safeVariableName(String proposedName), | 
| -                 String bodyName}) | 
| +                 js.Name bodyName}) | 
| : super(diagnosticListener, | 
| spannable, | 
| safeVariableName, | 
| @@ -1750,12 +1750,12 @@ class AsyncRewriter extends AsyncRewriterBase { | 
| js.Statement awaitStatement(js.Expression value) { | 
| return js.js.statement(""" | 
| return #asyncHelper(#value, | 
| -                              #body, | 
| +                              #bodyName, | 
| #completer); | 
| """, { | 
| "asyncHelper": asyncHelper, | 
| "value": value, | 
| -            "body": body, | 
| +            "bodyName": bodyName, | 
| "completer": completer}); | 
| } | 
|  | 
| @@ -1819,7 +1819,7 @@ class SyncStarRewriter extends AsyncRewriterBase { | 
| this.yieldStarExpression, | 
| this.uncaughtErrorExpression, | 
| String safeVariableName(String proposedName), | 
| -                 String bodyName}) | 
| +                 js.Name bodyName}) | 
| : super(diagnosticListener, | 
| spannable, | 
| safeVariableName, | 
| @@ -1989,7 +1989,7 @@ class AsyncStarRewriter extends AsyncRewriterBase { | 
| this.yieldExpression, | 
| this.yieldStarExpression, | 
| String safeVariableName(String proposedName), | 
| -                 String bodyName}) | 
| +                 js.Name bodyName}) | 
| : super(diagnosticListener, | 
| spannable, | 
| safeVariableName, | 
| @@ -2017,12 +2017,12 @@ class AsyncStarRewriter extends AsyncRewriterBase { | 
| [nextWhenCanceled, new js.ArrayInitializer( | 
| enclosingFinallyLabels.map(js.number).toList())])); | 
| addStatement(js.js.statement(""" | 
| -        return #asyncStarHelper(#yieldExpression(#expression), #body, | 
| +        return #asyncStarHelper(#yieldExpression(#expression), #bodyName, | 
| #controller);""", { | 
| "asyncStarHelper": asyncStarHelper, | 
| "yieldExpression": node.hasStar ? yieldStarExpression : yieldExpression, | 
| "expression": expression, | 
| -      "body": body, | 
| +      "bodyName": bodyName, | 
| "controller": controllerName, | 
| })); | 
| } | 
| @@ -2120,12 +2120,12 @@ class AsyncStarRewriter extends AsyncRewriterBase { | 
| js.Statement awaitStatement(js.Expression value) { | 
| return js.js.statement(""" | 
| return #asyncHelper(#value, | 
| -                              #body, | 
| +                              #bodyName, | 
| #controller); | 
| """, { | 
| "asyncHelper": asyncStarHelper, | 
| "value": value, | 
| -            "body": body, | 
| +            "bodyName": bodyName, | 
| "controller": controllerName}); | 
| } | 
| } | 
| @@ -2445,6 +2445,11 @@ class PreTranslationAnalysis extends js.NodeVisitor<bool> { | 
| } | 
|  | 
| @override | 
| +  bool visitName(js.Name node) { | 
| +    return true; | 
| +  } | 
| + | 
| +  @override | 
| bool visitNamedFunction(js.NamedFunction node) { | 
| return false; | 
| } | 
|  |