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

Unified Diff: pkg/compiler/lib/src/js/rewrite_async.dart

Issue 1198293002: dart2js: Use an abstract Name class for names in the generated JavaScript ast. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: fix tests Created 5 years, 6 months 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 side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698