[JS IR] Don't use full paths when generating comments with a path for file blocks
This commit is contained in:
+8
-1
@@ -44,6 +44,7 @@ class IrModuleToJsTransformer(
|
|||||||
statements.addWithComment("block: pre-declaration", preDeclarationBlock)
|
statements.addWithComment("block: pre-declaration", preDeclarationBlock)
|
||||||
|
|
||||||
val generateFilePaths = backendContext.configuration.getBoolean(JSConfigurationKeys.GENERATE_COMMENTS_WITH_FILE_PATH)
|
val generateFilePaths = backendContext.configuration.getBoolean(JSConfigurationKeys.GENERATE_COMMENTS_WITH_FILE_PATH)
|
||||||
|
val pathPrefixMap = backendContext.configuration.getMap(JSConfigurationKeys.FILE_PATHS_PREFIX_MAP)
|
||||||
|
|
||||||
module.files.forEach {
|
module.files.forEach {
|
||||||
val fileStatements = it.accept(IrFileToJsTransformer(), context).statements
|
val fileStatements = it.accept(IrFileToJsTransformer(), context).statements
|
||||||
@@ -55,7 +56,13 @@ class IrModuleToJsTransformer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (generateRegionComments || generateFilePaths) {
|
if (generateRegionComments || generateFilePaths) {
|
||||||
startComment += "file: ${it.path}"
|
val originalPath = it.path
|
||||||
|
val path = pathPrefixMap.entries
|
||||||
|
.find { (k, _) -> originalPath.startsWith(k) }
|
||||||
|
?.let { (k, v) -> v + originalPath.substring(k.length) }
|
||||||
|
?: originalPath
|
||||||
|
|
||||||
|
startComment += "file: $path"
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startComment.isNotEmpty()) {
|
if (startComment.isNotEmpty()) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.serialization.js.ModuleKind;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class JSConfigurationKeys {
|
public class JSConfigurationKeys {
|
||||||
public static final CompilerConfigurationKey<List<String>> TRANSITIVE_LIBRARIES =
|
public static final CompilerConfigurationKey<List<String>> TRANSITIVE_LIBRARIES =
|
||||||
@@ -80,5 +81,10 @@ public class JSConfigurationKeys {
|
|||||||
CompilerConfigurationKey.create("generate comments with file path at the start of each file block");
|
CompilerConfigurationKey.create("generate comments with file path at the start of each file block");
|
||||||
|
|
||||||
public static final CompilerConfigurationKey<Boolean> GENERATE_REGION_COMMENTS =
|
public static final CompilerConfigurationKey<Boolean> GENERATE_REGION_COMMENTS =
|
||||||
CompilerConfigurationKey.create("generate special comments at the start and the end of each file block, it allows to fold them and navigate to them in the IDEA");
|
CompilerConfigurationKey.create("generate special comments at the start and the end of each file block, " +
|
||||||
|
"it allows to fold them and navigate to them in the IDEA");
|
||||||
|
|
||||||
|
public static final CompilerConfigurationKey<Map<String, String>> FILE_PATHS_PREFIX_MAP =
|
||||||
|
CompilerConfigurationKey.create("this map used to shorten/replace prefix of paths in comments with file paths, " +
|
||||||
|
"including region comments");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,10 +156,10 @@ abstract class BasicBoxTest(
|
|||||||
val outputFileName = module.outputFileName(outputDir) + ".js"
|
val outputFileName = module.outputFileName(outputDir) + ".js"
|
||||||
val isMainModule = mainModuleName == module.name
|
val isMainModule = mainModuleName == module.name
|
||||||
generateJavaScriptFile(
|
generateJavaScriptFile(
|
||||||
|
testFactory.tmpDir,
|
||||||
file.parent, module, outputFileName, dependencies, allDependencies, friends, modules.size > 1,
|
file.parent, module, outputFileName, dependencies, allDependencies, friends, modules.size > 1,
|
||||||
!SKIP_SOURCEMAP_REMAPPING.matcher(fileContent).find(),
|
!SKIP_SOURCEMAP_REMAPPING.matcher(fileContent).find(), outputPrefixFile, outputPostfixFile,
|
||||||
outputPrefixFile, outputPostfixFile, actualMainCallParameters, testPackage, testFunction,
|
actualMainCallParameters, testPackage, testFunction, needsFullIrRuntime, isMainModule
|
||||||
needsFullIrRuntime, isMainModule
|
|
||||||
)
|
)
|
||||||
|
|
||||||
when {
|
when {
|
||||||
@@ -336,6 +336,7 @@ abstract class BasicBoxTest(
|
|||||||
private fun TestModule.outputFileName(directory: File) = directory.absolutePath + "/" + outputFileSimpleName() + "_v5"
|
private fun TestModule.outputFileName(directory: File) = directory.absolutePath + "/" + outputFileSimpleName() + "_v5"
|
||||||
|
|
||||||
private fun generateJavaScriptFile(
|
private fun generateJavaScriptFile(
|
||||||
|
tmpDir: File,
|
||||||
directory: String,
|
directory: String,
|
||||||
module: TestModule,
|
module: TestModule,
|
||||||
outputFileName: String,
|
outputFileName: String,
|
||||||
@@ -366,7 +367,7 @@ abstract class BasicBoxTest(
|
|||||||
val psiFiles = createPsiFiles(allSourceFiles.sortedBy { it.canonicalPath }.map { it.canonicalPath })
|
val psiFiles = createPsiFiles(allSourceFiles.sortedBy { it.canonicalPath }.map { it.canonicalPath })
|
||||||
|
|
||||||
val sourceDirs = (testFiles + additionalFiles).map { File(it).parent }.distinct()
|
val sourceDirs = (testFiles + additionalFiles).map { File(it).parent }.distinct()
|
||||||
val config = createConfig(sourceDirs, module, dependencies, allDependencies, friends, multiModule, incrementalData = null)
|
val config = createConfig(sourceDirs, module, dependencies, allDependencies, friends, multiModule, tmpDir, incrementalData = null)
|
||||||
val outputFile = File(outputFileName)
|
val outputFile = File(outputFileName)
|
||||||
|
|
||||||
val incrementalData = IncrementalData()
|
val incrementalData = IncrementalData()
|
||||||
@@ -377,7 +378,7 @@ abstract class BasicBoxTest(
|
|||||||
|
|
||||||
if (incrementalCompilationChecksEnabled && module.hasFilesToRecompile) {
|
if (incrementalCompilationChecksEnabled && module.hasFilesToRecompile) {
|
||||||
checkIncrementalCompilation(
|
checkIncrementalCompilation(
|
||||||
sourceDirs, module, kotlinFiles, dependencies, allDependencies, friends, multiModule, remap,
|
sourceDirs, module, kotlinFiles, dependencies, allDependencies, friends, multiModule, tmpDir, remap,
|
||||||
outputFile, outputPrefixFile, outputPostfixFile, mainCallParameters, incrementalData, testPackage, testFunction, needsFullIrRuntime
|
outputFile, outputPrefixFile, outputPostfixFile, mainCallParameters, incrementalData, testPackage, testFunction, needsFullIrRuntime
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -391,6 +392,7 @@ abstract class BasicBoxTest(
|
|||||||
allDependencies: List<String>,
|
allDependencies: List<String>,
|
||||||
friends: List<String>,
|
friends: List<String>,
|
||||||
multiModule: Boolean,
|
multiModule: Boolean,
|
||||||
|
tmpDir: File,
|
||||||
remap: Boolean,
|
remap: Boolean,
|
||||||
outputFile: File,
|
outputFile: File,
|
||||||
outputPrefixFile: File?,
|
outputPrefixFile: File?,
|
||||||
@@ -417,7 +419,7 @@ abstract class BasicBoxTest(
|
|||||||
.sortedBy { it.canonicalPath }
|
.sortedBy { it.canonicalPath }
|
||||||
.map { sourceToTranslationUnit[it]!! }
|
.map { sourceToTranslationUnit[it]!! }
|
||||||
|
|
||||||
val recompiledConfig = createConfig(sourceDirs, module, dependencies, allDependencies, friends, multiModule, incrementalData)
|
val recompiledConfig = createConfig(sourceDirs, module, dependencies, allDependencies, friends, multiModule, tmpDir, incrementalData)
|
||||||
val recompiledOutputFile = File(outputFile.parentFile, outputFile.nameWithoutExtension + "-recompiled.js")
|
val recompiledOutputFile = File(outputFile.parentFile, outputFile.nameWithoutExtension + "-recompiled.js")
|
||||||
|
|
||||||
translateFiles(
|
translateFiles(
|
||||||
@@ -628,8 +630,8 @@ abstract class BasicBoxTest(
|
|||||||
private fun createPsiFiles(fileNames: List<String>): List<KtFile> = fileNames.map(this::createPsiFile)
|
private fun createPsiFiles(fileNames: List<String>): List<KtFile> = fileNames.map(this::createPsiFile)
|
||||||
|
|
||||||
private fun createConfig(
|
private fun createConfig(
|
||||||
sourceDirs: List<String>, module: TestModule, dependencies: List<String>, allDependencies: List<String>, friends: List<String>,
|
sourceDirs: List<String>, module: TestModule, dependencies: List<String>, allDependencies: List<String>, friends: List<String>,
|
||||||
multiModule: Boolean, incrementalData: IncrementalData?
|
multiModule: Boolean, tmpDir: File, incrementalData: IncrementalData?
|
||||||
): JsConfig {
|
): JsConfig {
|
||||||
val configuration = environment.configuration.copy()
|
val configuration = environment.configuration.copy()
|
||||||
|
|
||||||
@@ -673,6 +675,14 @@ abstract class BasicBoxTest(
|
|||||||
|
|
||||||
configuration.put(JSConfigurationKeys.GENERATE_REGION_COMMENTS, true)
|
configuration.put(JSConfigurationKeys.GENERATE_REGION_COMMENTS, true)
|
||||||
|
|
||||||
|
configuration.put(
|
||||||
|
JSConfigurationKeys.FILE_PATHS_PREFIX_MAP,
|
||||||
|
mapOf(
|
||||||
|
tmpDir.absolutePath to "<TMP>",
|
||||||
|
File(".").absolutePath.removeSuffix(".") to ""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
return JsConfig(project, configuration, METADATA_CACHE, (JsConfig.JS_STDLIB + JsConfig.JS_KOTLIN_TEST).toSet())
|
return JsConfig(project, configuration, METADATA_CACHE, (JsConfig.JS_STDLIB + JsConfig.JS_KOTLIN_TEST).toSet())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user