diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/CompilationOutputs.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/CompilationOutputs.kt index 1ed89b61b1e..de549eb4be1 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/CompilationOutputs.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/CompilationOutputs.kt @@ -35,7 +35,7 @@ abstract class CompilationOutputs { fun File.writeAsJsFile(out: CompilationOutputs) { parentFile.mkdirs() val jsMapFile = mapForJsFile - val jsFile = canonicalFile + val jsFile = normalizedAbsoluteFile out.writeJsCode(jsFile, jsMapFile) writtenFiles += jsFile @@ -65,11 +65,14 @@ abstract class CompilationOutputs { return allTsDefinitions.toTypeScript(moduleName, moduleKind) } + private val File.normalizedAbsoluteFile + get() = absoluteFile.normalize() + private val File.mapForJsFile - get() = resolveSibling("$name.map").canonicalFile + get() = resolveSibling("$name.map").normalizedAbsoluteFile private val File.dtsForJsFile - get() = resolveSibling("$nameWithoutExtension.d.ts").canonicalFile + get() = resolveSibling("$nameWithoutExtension.d.ts").normalizedAbsoluteFile } private fun File.copyModificationTimeFrom(from: File) { diff --git a/js/js.sourcemap/src/org/jetbrains/kotlin/js/sourceMap/RelativePathCalculator.kt b/js/js.sourcemap/src/org/jetbrains/kotlin/js/sourceMap/RelativePathCalculator.kt index 53ee42952d1..c88c02c9fb2 100644 --- a/js/js.sourcemap/src/org/jetbrains/kotlin/js/sourceMap/RelativePathCalculator.kt +++ b/js/js.sourcemap/src/org/jetbrains/kotlin/js/sourceMap/RelativePathCalculator.kt @@ -8,20 +8,22 @@ package org.jetbrains.kotlin.js.sourceMap import java.io.File class RelativePathCalculator(baseDir: File) { - private val baseDirPath = generateSequence(baseDir.canonicalFile) { it.parentFile }.toList().asReversed() + private fun File.getAllParents() = generateSequence(absoluteFile.normalize()) { it.parentFile }.toList().asReversed() + + private val baseDirPath = baseDir.getAllParents() fun calculateRelativePathTo(file: File): String? { - val path = generateSequence(file.canonicalFile) { it.parentFile }.toList().asReversed() - if (baseDirPath[0] != path[0]) return null + val parents = file.getAllParents() + if (baseDirPath[0] != parents[0]) return null - val commonLength = baseDirPath.zip(path).takeWhile { (first, second) -> first == second }.size + val commonLength = baseDirPath.zip(parents).count { (first, second) -> first == second } val sb = StringBuilder() for (i in commonLength until baseDirPath.size) { sb.append("../") } - for (i in commonLength until path.size) { - sb.append(path[i].name).append('/') + for (i in commonLength until parents.size) { + sb.append(parents[i].name).append('/') } sb.setLength(sb.lastIndex)