aboutsummaryrefslogtreecommitdiff
path: root/node_modules/babel-traverse/lib/path/replacement.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/babel-traverse/lib/path/replacement.js')
-rw-r--r--node_modules/babel-traverse/lib/path/replacement.js14
1 files changed, 10 insertions, 4 deletions
diff --git a/node_modules/babel-traverse/lib/path/replacement.js b/node_modules/babel-traverse/lib/path/replacement.js
index dc852334d..a60c73d54 100644
--- a/node_modules/babel-traverse/lib/path/replacement.js
+++ b/node_modules/babel-traverse/lib/path/replacement.js
@@ -230,10 +230,16 @@ function replaceExpressionWithStatements(nodes) {
return path.isLoop();
});
if (loop) {
- var callee = this.get("callee");
-
- var uid = callee.scope.generateDeclaredUidIdentifier("ret");
- callee.get("body").pushContainer("body", t.returnStatement(uid));
+ var uid = loop.getData("expressionReplacementReturnUid");
+
+ if (!uid) {
+ var callee = this.get("callee");
+ uid = callee.scope.generateDeclaredUidIdentifier("ret");
+ callee.get("body").pushContainer("body", t.returnStatement(uid));
+ loop.setData("expressionReplacementReturnUid", uid);
+ } else {
+ uid = t.identifier(uid.name);
+ }
path.get("expression").replaceWith(t.assignmentExpression("=", uid, path.node.expression));
} else {