Fix JS DCE removing reachable functions

This commit is contained in:
Alexey Andreev
2017-10-09 20:12:03 +03:00
parent cb7d561c6c
commit 8cdef4139e
11 changed files with 108 additions and 13 deletions
@@ -542,13 +542,14 @@ abstract class BasicBoxTest(
val testFunctionFqn = testModuleName + (if (testPackage.isNullOrEmpty()) "" else ".$testPackage") + ".$testFunction"
val additionalReachableNodes = setOf(
testFunctionFqn, "kotlin.kotlin.io.BufferedOutput", "kotlin.kotlin.io.output.flush",
"kotlin.kotlin.io.output.buffer", "kotlin-test.kotlin.test.overrideAsserter_wbnzx$"
"kotlin.kotlin.io.output.buffer", "kotlin-test.kotlin.test.overrideAsserter_wbnzx$",
"kotlin-test.kotlin.test.DefaultAsserter"
)
val allFilesToMinify = filesToMinify.values + kotlinJsInputFile + kotlinTestJsInputFile
val dceResult = DeadCodeElimination.run(allFilesToMinify, additionalReachableNodes) { _, _ -> }
val reachableNodes = dceResult.reachableNodes
minificationThresholdChecker(reachableNodes.size)
minificationThresholdChecker(reachableNodes.count { it.reachable })
val runList = mutableListOf<String>()
runList += kotlinJsLibOutput
@@ -42,6 +42,12 @@ public class DceTestGenerated extends AbstractDceTest {
doTest(fileName);
}
@TestMetadata("arrayAccess.js")
public void testArrayAccess() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/dce/arrayAccess.js");
doTest(fileName);
}
@TestMetadata("commonjs.js")
public void testCommonjs() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/dce/commonjs.js");
@@ -53,4 +59,16 @@ public class DceTestGenerated extends AbstractDceTest {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/dce/cycle.js");
doTest(fileName);
}
@TestMetadata("localVarAndFunction.js")
public void testLocalVarAndFunction() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/dce/localVarAndFunction.js");
doTest(fileName);
}
@TestMetadata("typeOf.js")
public void testTypeOf() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/dce/typeOf.js");
doTest(fileName);
}
}