[Sourcemap] Extract addLink from SourceMap3Builder as a addSourceMappingURL
The general goal is remove dependency on TextOutput and make it simpler to use for wasm backend.
This commit is contained in:
committed by
Space Team
parent
9f82c43b1b
commit
e34d3d09bc
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapParser
|
|||||||
import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapSuccess
|
import org.jetbrains.kotlin.js.parser.sourcemaps.SourceMapSuccess
|
||||||
import org.jetbrains.kotlin.js.sourceMap.SourceFilePathResolver
|
import org.jetbrains.kotlin.js.sourceMap.SourceFilePathResolver
|
||||||
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
|
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
|
||||||
|
import org.jetbrains.kotlin.js.sourceMap.addSourceMappingURL
|
||||||
import org.jetbrains.kotlin.js.util.TextOutputImpl
|
import org.jetbrains.kotlin.js.util.TextOutputImpl
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.InputStreamReader
|
import java.io.InputStreamReader
|
||||||
@@ -115,18 +116,19 @@ class DeadCodeElimination(
|
|||||||
for ((file, block) in inputFiles.zip(blocks)) {
|
for ((file, block) in inputFiles.zip(blocks)) {
|
||||||
val sourceMapFile = File(file.outputPath + ".map")
|
val sourceMapFile = File(file.outputPath + ".map")
|
||||||
val textOutput = TextOutputImpl()
|
val textOutput = TextOutputImpl()
|
||||||
val sourceMapBuilder = SourceMap3Builder(File(file.outputPath), textOutput, "")
|
val outputFile = File(file.outputPath)
|
||||||
|
val sourceMapBuilder = SourceMap3Builder(outputFile, textOutput, "")
|
||||||
|
|
||||||
val inputFile = File(file.resource.name)
|
val inputFile = File(file.resource.name)
|
||||||
val sourceBaseDir = if (inputFile.exists()) inputFile.parentFile else File(".")
|
val sourceBaseDir = if (inputFile.exists()) inputFile.parentFile else File(".")
|
||||||
|
|
||||||
val sourcePathResolver = SourceFilePathResolver(emptyList(), File(file.outputPath).parentFile)
|
val sourcePathResolver = SourceFilePathResolver(emptyList(), outputFile.parentFile)
|
||||||
val consumer = SourceMapBuilderConsumer(sourceBaseDir, sourceMapBuilder, sourcePathResolver, true, true)
|
val consumer = SourceMapBuilderConsumer(sourceBaseDir, sourceMapBuilder, sourcePathResolver, true, true)
|
||||||
block.accept(JsToStringGenerationVisitor(textOutput, consumer))
|
block.accept(JsToStringGenerationVisitor(textOutput, consumer))
|
||||||
val sourceMapContent = sourceMapBuilder.build()
|
val sourceMapContent = sourceMapBuilder.build()
|
||||||
sourceMapBuilder.addLink()
|
textOutput.addSourceMappingURL(outputFile)
|
||||||
|
|
||||||
with(File(file.outputPath)) {
|
with(outputFile) {
|
||||||
parentFile.mkdirs()
|
parentFile.mkdirs()
|
||||||
writeText(textOutput.toString())
|
writeText(textOutput.toString())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ package org.jetbrains.kotlin.js.sourceMap
|
|||||||
|
|
||||||
import gnu.trove.TObjectIntHashMap
|
import gnu.trove.TObjectIntHashMap
|
||||||
import org.jetbrains.kotlin.js.parser.sourcemaps.*
|
import org.jetbrains.kotlin.js.parser.sourcemaps.*
|
||||||
import org.jetbrains.kotlin.js.util.TextOutput
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.Reader
|
import java.io.Reader
|
||||||
@@ -192,12 +191,6 @@ class SourceMap3Builder(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addLink() {
|
|
||||||
textOutput.print("\n//# sourceMappingURL=")
|
|
||||||
textOutput.print(generatedFile!!.name)
|
|
||||||
textOutput.print(".map\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
private object Base64VLQ {
|
private object Base64VLQ {
|
||||||
// A Base64 VLQ digit can represent 5 bits, so it is base-32.
|
// A Base64 VLQ digit can represent 5 bits, so it is base-32.
|
||||||
private const val VLQ_BASE_SHIFT = 5
|
private const val VLQ_BASE_SHIFT = 5
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ import java.io.File;
|
|||||||
public interface SourceMapBuilder extends SourceMapMappingConsumer {
|
public interface SourceMapBuilder extends SourceMapMappingConsumer {
|
||||||
void skipLinesAtBeginning(int count);
|
void skipLinesAtBeginning(int count);
|
||||||
|
|
||||||
void addLink();
|
|
||||||
|
|
||||||
File getOutFile();
|
File getOutFile();
|
||||||
|
|
||||||
String build();
|
String build();
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.js.sourceMap
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.js.util.TextOutput
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
fun TextOutput.addSourceMappingURL(outputJsFile: File) {
|
||||||
|
print("\n//# sourceMappingURL=")
|
||||||
|
print(outputJsFile.name)
|
||||||
|
print(".map\n")
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.js.config.SourceMapSourceEmbedding
|
|||||||
import org.jetbrains.kotlin.js.sourceMap.SourceFilePathResolver
|
import org.jetbrains.kotlin.js.sourceMap.SourceFilePathResolver
|
||||||
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
|
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
|
||||||
import org.jetbrains.kotlin.js.sourceMap.SourceMapBuilderConsumer
|
import org.jetbrains.kotlin.js.sourceMap.SourceMapBuilderConsumer
|
||||||
|
import org.jetbrains.kotlin.js.sourceMap.addSourceMappingURL
|
||||||
import org.jetbrains.kotlin.js.util.TextOutput
|
import org.jetbrains.kotlin.js.util.TextOutput
|
||||||
import org.jetbrains.kotlin.js.util.TextOutputImpl
|
import org.jetbrains.kotlin.js.util.TextOutputImpl
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -134,7 +135,7 @@ abstract class TranslationResult protected constructor(val diagnostics: Diagnost
|
|||||||
|
|
||||||
getCode(output, sourceMapBuilderConsumer)
|
getCode(output, sourceMapBuilderConsumer)
|
||||||
if (sourceMapBuilderConsumer != null) {
|
if (sourceMapBuilderConsumer != null) {
|
||||||
sourceMapBuilder.addLink()
|
output.addSourceMappingURL(outputFile)
|
||||||
}
|
}
|
||||||
val code = output.toString()
|
val code = output.toString()
|
||||||
|
|
||||||
@@ -150,7 +151,7 @@ abstract class TranslationResult protected constructor(val diagnostics: Diagnost
|
|||||||
sourceMapBuilder.skipLinesAtBeginning(StringUtil.getLineBreakCount(prefix))
|
sourceMapBuilder.skipLinesAtBeginning(StringUtil.getLineBreakCount(prefix))
|
||||||
val sourceMapFile = SimpleOutputFile(sourceFiles, sourceMapBuilder.outFile.name, sourceMapBuilder.build())
|
val sourceMapFile = SimpleOutputFile(sourceFiles, sourceMapBuilder.outFile.name, sourceMapBuilder.build())
|
||||||
outputFiles.add(sourceMapFile)
|
outputFiles.add(sourceMapFile)
|
||||||
sourceMapBuilder.addLink()
|
output.addSourceMappingURL(outputFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
return SimpleOutputFileCollection(outputFiles)
|
return SimpleOutputFileCollection(outputFiles)
|
||||||
|
|||||||
Reference in New Issue
Block a user