mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 14:24:38 +00:00
Rename the inner function of async functions.
Before they were all named `body`, now they have the same name as their enclosing function. BUG= dartbug.com/22942 R=floitsch@google.com Review URL: https://codereview.chromium.org//1018393003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44682 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
parent
bb0a3b8216
commit
2008f189ad
|
@ -117,6 +117,7 @@ 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);
|
||||
|
@ -179,7 +180,8 @@ abstract class AsyncRewriterBase extends js.NodeVisitor {
|
|||
|
||||
AsyncRewriterBase(this.diagnosticListener,
|
||||
spannable,
|
||||
this.safeVariableName)
|
||||
this.safeVariableName,
|
||||
this.suggestedBodyName)
|
||||
: _spannable = spannable;
|
||||
|
||||
/// Initialize names used by the subClass.
|
||||
|
@ -199,7 +201,7 @@ abstract class AsyncRewriterBase extends js.NodeVisitor {
|
|||
// generated after the analysis.
|
||||
resultName = freshName("result");
|
||||
errorCodeName = freshName("errorCode");
|
||||
bodyName = freshName("body");
|
||||
bodyName = freshName(suggestedBodyName);
|
||||
gotoName = freshName("goto");
|
||||
handlerName = freshName("handler");
|
||||
nextName = freshName("next");
|
||||
|
@ -1674,10 +1676,12 @@ class AsyncRewriter extends AsyncRewriterBase {
|
|||
spannable,
|
||||
{this.asyncHelper,
|
||||
this.newCompleter,
|
||||
safeVariableName})
|
||||
String safeVariableName(String proposedName),
|
||||
String bodyName})
|
||||
: super(diagnosticListener,
|
||||
spannable,
|
||||
safeVariableName);
|
||||
safeVariableName,
|
||||
bodyName);
|
||||
|
||||
@override
|
||||
void addYield(js.DartYield node, js.Expression expression) {
|
||||
|
@ -1804,10 +1808,12 @@ class SyncStarRewriter extends AsyncRewriterBase {
|
|||
this.newIterable,
|
||||
this.yieldStarExpression,
|
||||
this.uncaughtErrorExpression,
|
||||
safeVariableName})
|
||||
String safeVariableName(String proposedName),
|
||||
String bodyName})
|
||||
: super(diagnosticListener,
|
||||
spannable,
|
||||
safeVariableName);
|
||||
safeVariableName,
|
||||
bodyName);
|
||||
|
||||
/// Translates a yield/yield* in an sync*.
|
||||
///
|
||||
|
@ -1972,10 +1978,12 @@ class AsyncStarRewriter extends AsyncRewriterBase {
|
|||
this.newController,
|
||||
this.yieldExpression,
|
||||
this.yieldStarExpression,
|
||||
String safeVariableName(String original)})
|
||||
String safeVariableName(String proposedName),
|
||||
String bodyName})
|
||||
: super(diagnosticListener,
|
||||
spannable,
|
||||
safeVariableName);
|
||||
safeVariableName,
|
||||
bodyName);
|
||||
|
||||
|
||||
/// Translates a yield/yield* in an async* function.
|
||||
|
|
|
@ -25,7 +25,7 @@ class SsaFunctionCompiler implements FunctionCompiler {
|
|||
JavaScriptBackend backend = builder.backend;
|
||||
|
||||
AsyncRewriterBase rewriter = null;
|
||||
|
||||
String name = backend.namer.methodPropertyName(element);
|
||||
if (element.asyncMarker == AsyncMarker.ASYNC) {
|
||||
rewriter = new AsyncRewriter(
|
||||
backend.compiler,
|
||||
|
@ -34,7 +34,8 @@ class SsaFunctionCompiler implements FunctionCompiler {
|
|||
backend.emitter.staticFunctionAccess(backend.getAsyncHelper()),
|
||||
newCompleter: backend.emitter.staticFunctionAccess(
|
||||
backend.getCompleterConstructor()),
|
||||
safeVariableName: backend.namer.safeVariableName);
|
||||
safeVariableName: backend.namer.safeVariableName,
|
||||
bodyName: name);
|
||||
} else if (element.asyncMarker == AsyncMarker.SYNC_STAR) {
|
||||
rewriter = new SyncStarRewriter(
|
||||
backend.compiler,
|
||||
|
@ -47,7 +48,8 @@ class SsaFunctionCompiler implements FunctionCompiler {
|
|||
backend.getYieldStar()),
|
||||
uncaughtErrorExpression: backend.emitter.staticFunctionAccess(
|
||||
backend.getSyncStarUncaughtError()),
|
||||
safeVariableName: backend.namer.safeVariableName);
|
||||
safeVariableName: backend.namer.safeVariableName,
|
||||
bodyName: name);
|
||||
}
|
||||
else if (element.asyncMarker == AsyncMarker.ASYNC_STAR) {
|
||||
rewriter = new AsyncStarRewriter(
|
||||
|
@ -63,7 +65,8 @@ class SsaFunctionCompiler implements FunctionCompiler {
|
|||
yieldExpression: backend.emitter.staticFunctionAccess(
|
||||
backend.getYieldSingle()),
|
||||
yieldStarExpression: backend.emitter.staticFunctionAccess(
|
||||
backend.getYieldStar()));
|
||||
backend.getYieldStar()),
|
||||
bodyName: name);
|
||||
}
|
||||
if (rewriter != null) {
|
||||
result = rewriter.rewrite(result);
|
||||
|
|
|
@ -15,7 +15,8 @@ void testTransform(String source, String expected) {
|
|||
null,
|
||||
asyncHelper: new VariableUse("thenHelper"),
|
||||
newCompleter: new VariableUse("Completer"),
|
||||
safeVariableName: (String name) => "__$name").rewrite(fun);
|
||||
safeVariableName: (String name) => "__$name",
|
||||
bodyName: "body").rewrite(fun);
|
||||
|
||||
JavaScriptPrintingOptions options = new JavaScriptPrintingOptions();
|
||||
SimpleJavaScriptPrintingContext context =
|
||||
|
|
Loading…
Reference in a new issue