Remap source maps in JS DCE. Improve JS DCE error logging
See KT-19821
This commit is contained in:
@@ -25,8 +25,8 @@ abstract class AbstractDceTest : TestCase() {
|
||||
fun doTest(filePath: String) {
|
||||
val file = File(filePath)
|
||||
val fileContents = file.readText()
|
||||
val inputFile = InputFile(filePath, File(pathToOutputDir, file.relativeTo(File(pathToTestDir)).path).path, "main")
|
||||
val dceResult = DeadCodeElimination.run(setOf(inputFile), extractDeclarations(REQUEST_REACHABLE_PATTERN, fileContents)) {}
|
||||
val inputFile = InputFile(filePath, null, File(pathToOutputDir, file.relativeTo(File(pathToTestDir)).path).path, "main")
|
||||
val dceResult = DeadCodeElimination.run(setOf(inputFile), extractDeclarations(REQUEST_REACHABLE_PATTERN, fileContents)) { _, _ -> }
|
||||
val reachableNodeStrings = dceResult.reachableNodes.map { it.toString().removePrefix("<unknown>.") }.toSet()
|
||||
|
||||
for (assertedDeclaration in extractDeclarations(ASSERT_REACHABLE_PATTERN, fileContents)) {
|
||||
|
||||
@@ -440,7 +440,7 @@ abstract class BasicBoxTest(
|
||||
val codeWithLines = generatedProgram.toStringWithLineNumbers()
|
||||
|
||||
val parsedProgram = JsProgram()
|
||||
parsedProgram.globalBlock.statements += parse(code, ThrowExceptionOnErrorReporter, parsedProgram.scope, outputFile.path)
|
||||
parsedProgram.globalBlock.statements += parse(code, ThrowExceptionOnErrorReporter, parsedProgram.scope, outputFile.path).orEmpty()
|
||||
removeLocationFromBlocks(parsedProgram)
|
||||
val sourceMapParseResult = SourceMapParser.parse(StringReader(generatedSourceMap))
|
||||
val sourceMap = when (sourceMapParseResult) {
|
||||
@@ -524,12 +524,12 @@ abstract class BasicBoxTest(
|
||||
val kotlinJsLibOutput = File(workDir, "kotlin.min.js").path
|
||||
val kotlinTestJsLibOutput = File(workDir, "kotlin-test.min.js").path
|
||||
|
||||
val kotlinJsInputFile = InputFile(kotlinJsLib, kotlinJsLibOutput, "kotlin")
|
||||
val kotlinTestJsInputFile = InputFile(kotlinTestJsLib, kotlinTestJsLibOutput, "kotlin-test")
|
||||
val kotlinJsInputFile = InputFile(kotlinJsLib, null, kotlinJsLibOutput, "kotlin")
|
||||
val kotlinTestJsInputFile = InputFile(kotlinTestJsLib, null, kotlinTestJsLibOutput, "kotlin-test")
|
||||
|
||||
val filesToMinify = generatedJsFiles.associate { (fileName, module) ->
|
||||
val inputFileName = File(fileName).nameWithoutExtension
|
||||
fileName to InputFile(fileName, File(workDir, inputFileName + ".min.js").absolutePath, module.name)
|
||||
fileName to InputFile(fileName, null, File(workDir, inputFileName + ".min.js").absolutePath, module.name)
|
||||
}
|
||||
|
||||
val testFunctionFqn = testModuleName + (if (testPackage.isNullOrEmpty()) "" else ".$testPackage") + ".$testFunction"
|
||||
@@ -538,7 +538,7 @@ abstract class BasicBoxTest(
|
||||
"kotlin.kotlin.io.output.buffer", "kotlin-test.kotlin.test.overrideAsserter_wbnzx$"
|
||||
)
|
||||
val allFilesToMinify = filesToMinify.values + kotlinJsInputFile + kotlinTestJsInputFile
|
||||
val dceResult = DeadCodeElimination.run(allFilesToMinify, additionalReachableNodes) { }
|
||||
val dceResult = DeadCodeElimination.run(allFilesToMinify, additionalReachableNodes) { _, _ -> }
|
||||
|
||||
val reachableNodes = dceResult.reachableNodes
|
||||
minificationThresholdChecker(reachableNodes.size)
|
||||
|
||||
@@ -57,8 +57,8 @@ class NameResolutionTest {
|
||||
val expectedCode = FileUtil.loadFile(File(expectedName))
|
||||
|
||||
val parserScope = JsFunctionScope(JsRootScope(JsProgram()), "<js fun>")
|
||||
val originalAst = JsGlobalBlock().apply { statements += parse(originalCode, errorReporter, parserScope, originalName) }
|
||||
val expectedAst = JsGlobalBlock().apply { statements += parse(expectedCode, errorReporter, parserScope, expectedName) }
|
||||
val originalAst = JsGlobalBlock().apply { statements += parse(originalCode, errorReporter, parserScope, originalName).orEmpty() }
|
||||
val expectedAst = JsGlobalBlock().apply { statements += parse(expectedCode, errorReporter, parserScope, expectedName).orEmpty() }
|
||||
|
||||
originalAst.accept(object : RecursiveJsVisitor() {
|
||||
val cache = mutableMapOf<JsName, JsName>()
|
||||
|
||||
@@ -54,7 +54,7 @@ abstract class BasicOptimizerTest(private var basePath: String) {
|
||||
|
||||
private fun checkOptimizer(unoptimizedCode: String, optimizedCode: String) {
|
||||
val parserScope = JsFunctionScope(JsRootScope(JsProgram()), "<js fun>")
|
||||
val unoptimizedAst = parse(unoptimizedCode, errorReporter, parserScope, "<unknown file>")
|
||||
val unoptimizedAst = parse(unoptimizedCode, errorReporter, parserScope, "<unknown file>")!!
|
||||
|
||||
updateMetadata(unoptimizedCode, unoptimizedAst)
|
||||
|
||||
@@ -62,7 +62,7 @@ abstract class BasicOptimizerTest(private var basePath: String) {
|
||||
process(statement)
|
||||
}
|
||||
|
||||
val optimizedAst = parse(optimizedCode, errorReporter, parserScope, "<unknown file>")
|
||||
val optimizedAst = parse(optimizedCode, errorReporter, parserScope, "<unknown file>")!!
|
||||
Assert.assertEquals(astToString(optimizedAst), astToString(unoptimizedAst))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user