From 2cf01f60b3dfa807097dae9d6253e4a1b7d8687d Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 29 Aug 2017 14:28:15 +0300 Subject: [PATCH] JS: generate paths in source maps relative to .map file location See KT-19818 Original commit: 9008791a54e56d87bf04b396775fbe293e066bc2 --- .../org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt | 2 +- .../src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt index 77c3968c5d7..82385cdf7f5 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt @@ -359,7 +359,7 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() { buildAllModules().assertSuccessful() val sourceMapContent = File(getOutputDir(PROJECT_NAME), "$PROJECT_NAME.js.map").readText() - val expectedPath = "prefix-dir/pkg/test1.kt" + val expectedPath = "prefix-dir/src/pkg/test1.kt" assertTrue("Source map file should contain relative path ($expectedPath)", sourceMapContent.contains("\"$expectedPath\"")) val librarySourceMapFile = File(getOutputDir(PROJECT_NAME), "lib/kotlin.js.map") diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 73780a77220..6b696ab58ac 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -67,6 +67,7 @@ import org.jetbrains.kotlin.progress.CompilationCanceledStatus import org.jetbrains.kotlin.utils.* import org.jetbrains.org.objectweb.asm.ClassReader import java.io.File +import java.net.URI import java.util.* class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { @@ -647,7 +648,10 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) { val compilerSettings = JpsKotlinCompilerSettings.getCompilerSettings(representativeModule) val k2JsArguments = JpsKotlinCompilerSettings.getK2JsCompilerArguments(representativeModule) - val sourceRoots = KotlinSourceFileCollector.getRelevantSourceRoots(representativeTarget).map { it.file } + val sourceRoots = representativeModule.contentRootsList.urls + .map { URI.create(it) } + .filter { it.scheme == "file" } + .map { File(it) } val friendPaths = KotlinBuilderModuleScriptGenerator.getProductionModulesWhichInternalsAreVisible(representativeTarget).mapNotNull { val file = getOutputMetaFile(it, false)