JS inline refactor: extracted flattenStatement() function
This commit is contained in:
committed by
Zalim Bashorov
parent
80eca3e49e
commit
7fbed5ee86
@@ -32,6 +32,7 @@ import static org.jetbrains.k2js.inline.clean.CleanPackage.removeUnusedFunctionD
|
||||
import static org.jetbrains.k2js.inline.FunctionInlineMutator.getInlineableCallReplacement;
|
||||
import static org.jetbrains.k2js.inline.util.UtilPackage.IdentitySet;
|
||||
import static org.jetbrains.k2js.inline.util.UtilPackage.collectNamedFunctions;
|
||||
import static org.jetbrains.k2js.translate.utils.JsAstUtils.flattenStatement;
|
||||
|
||||
public class JsInliner extends JsVisitorWithContextImpl {
|
||||
|
||||
@@ -145,12 +146,7 @@ public class JsInliner extends JsVisitorWithContextImpl {
|
||||
/** @see #lastStatementWasShifted */
|
||||
statementContext.shiftCurrentStatementForward();
|
||||
InsertionPoint<JsStatement> insertionPoint = statementContext.getInsertionPoint();
|
||||
if (inlineableBody instanceof JsBlock) {
|
||||
JsBlock block = (JsBlock) inlineableBody;
|
||||
insertionPoint.insertAllAfter(block.getStatements());
|
||||
} else {
|
||||
insertionPoint.insertAfter(inlineableBody);
|
||||
}
|
||||
insertionPoint.insertAllAfter(flattenStatement(inlineableBody));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
||||
import org.jetbrains.k2js.translate.context.Namer;
|
||||
import org.jetbrains.k2js.translate.context.TranslationContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -456,4 +457,13 @@ public final class JsAstUtils {
|
||||
qualifier = (JsNameRef) parent;
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<JsStatement> flattenStatement(@NotNull JsStatement statement) {
|
||||
if (statement instanceof JsBlock) {
|
||||
return ((JsBlock) statement).getStatements();
|
||||
}
|
||||
|
||||
return new SmartList<JsStatement>(statement);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user