JS: prevent generation of excessive this.$result statements in coroutines

This commit is contained in:
Alexey Andreev
2016-11-09 18:18:33 +03:00
parent 2d315c3df8
commit 4c0eb8fc31
2 changed files with 6 additions and 3 deletions
@@ -45,7 +45,9 @@ public class TemporaryVariable {
@NotNull @NotNull
public JsNameRef reference() { public JsNameRef reference() {
return variableName.makeRef(); JsNameRef result = variableName.makeRef();
MetadataProperties.setSynthetic(result, true);
return result;
} }
@NotNull @NotNull
@@ -53,8 +53,9 @@ public final class JsAstUtils {
assert (jsNode instanceof JsExpression) || (jsNode instanceof JsStatement) assert (jsNode instanceof JsExpression) || (jsNode instanceof JsStatement)
: "Unexpected node of type: " + jsNode.getClass().toString(); : "Unexpected node of type: " + jsNode.getClass().toString();
if (jsNode instanceof JsExpression) { if (jsNode instanceof JsExpression) {
JsExpressionStatement statement = new JsExpressionStatement((JsExpression) jsNode); JsExpression expression = (JsExpression) jsNode;
if (jsNode instanceof JsNullLiteral) { JsExpressionStatement statement = new JsExpressionStatement(expression);
if (expression instanceof JsNullLiteral || MetadataProperties.getSynthetic(expression)) {
MetadataProperties.setSynthetic(statement, true); MetadataProperties.setSynthetic(statement, true);
} }
return statement; return statement;