Don't call File.getCanonicalPath in KGP
Relates to KT-54579.
diff --git a/build-common/src/org/jetbrains/kotlin/build/report/ICReporterBase.kt b/build-common/src/org/jetbrains/kotlin/build/report/ICReporterBase.kt
index 8e31210..cad9071 100644
--- a/build-common/src/org/jetbrains/kotlin/build/report/ICReporterBase.kt
+++ b/build-common/src/org/jetbrains/kotlin/build/report/ICReporterBase.kt
@@ -23,7 +23,7 @@
}
protected fun relativizeIfPossible(files: Iterable<File>): List<File> =
- files.map { it.relativeOrCanonical() }
+ files.map { it.relativeOrAbsolute() }
protected fun pathsAsString(files: Iterable<File>): String =
relativizeIfPossible(files).map { it.path }.sorted().joinToString()
@@ -31,6 +31,6 @@
protected fun pathsAsString(vararg files: File): String =
pathsAsString(files.toList())
- protected fun File.relativeOrCanonical(): File =
- pathsBase?.let { relativeToOrNull(it) } ?: canonicalFile
+ protected fun File.relativeOrAbsolute(): File =
+ pathsBase?.let { relativeToOrNull(it) } ?: normalize().absoluteFile
}
\ No newline at end of file
diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt
index 7341a97..13af633 100644
--- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt
+++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt
@@ -104,7 +104,7 @@
className in multifileFacadeToParts
override fun getClassFilePath(internalClassName: String): String {
- return toSystemIndependentName(File(outputDir, "$internalClassName.class").canonicalPath)
+ return toSystemIndependentName(File(outputDir, "$internalClassName.class").normalize().absolutePath)
}
fun saveModuleMappingToCache(sourceFiles: Collection<File>, file: File) {
diff --git a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/ClientUtils.kt b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/ClientUtils.kt
index 49fcb4e..cd924eb 100644
--- a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/ClientUtils.kt
+++ b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/ClientUtils.kt
@@ -126,7 +126,7 @@
leftTS == 0L || rightTS == 0L -> 0 // cannot read any file timestamp, => undecidable
leftTS > rightTS -> -1
leftTS < rightTS -> 1
- else -> compareValues(left.canonicalPath, right.canonicalPath)
+ else -> compareValues(left.normalize().absolutePath, right.normalize().absolutePath)
}
}
}
diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt
index 6041e2a..5211327 100644
--- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt
+++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt
@@ -1063,7 +1063,7 @@
}
daemon.scheduleShutdown(true)
} catch (e: Throwable) {
- log.info("Cannot connect to a daemon, assuming dying ('${runFile.canonicalPath}'): ${e.message}")
+ log.info("Cannot connect to a daemon, assuming dying ('${runFile.normalize().absolutePath}'): ${e.message}")
}
}
}
diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt
index fbf4cd0..80d396d 100644
--- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt
+++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt
@@ -527,7 +527,7 @@
daemon.scheduleShutdown(true)
log.fine("other : SHUTDOWN_OK")
} catch (e: Throwable) {
- log.info("Cannot connect to a daemon, assuming dying ('${runFile.canonicalPath}'): ${e.message}")
+ log.info("Cannot connect to a daemon, assuming dying ('${runFile.normalize().absolutePath}'): ${e.message}")
}
}
}
diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/BuildReportICReporter.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/BuildReportICReporter.kt
index c6e3e78..6eae913 100644
--- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/BuildReportICReporter.kt
+++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/BuildReportICReporter.kt
@@ -37,7 +37,7 @@
icLogLines.add("Compile iteration:")
for (file in sourceFiles) {
val reason = recompilationReason[file]?.let { " <- $it" } ?: ""
- icLogLines.add(" ${file.relativeOrCanonical()}$reason")
+ icLogLines.add(" ${file.relativeOrAbsolute()}$reason")
}
recompilationReason.clear()
}
diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/experimental/RemoteICReporter.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/experimental/RemoteICReporter.kt
index b950e84..6c0cdf1 100644
--- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/experimental/RemoteICReporter.kt
+++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/report/experimental/RemoteICReporter.kt
@@ -80,7 +80,7 @@
icLogLines.add("Compile iteration:")
for (file in sourceFiles) {
val reason = recompilationReason[file]?.let { " <- $it" } ?: ""
- icLogLines.add(" ${file.relativeOrCanonical()}$reason")
+ icLogLines.add(" ${file.relativeOrAbsolute()}$reason")
}
recompilationReason.clear()
}
diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt
index b9cc910..ad888f7 100644
--- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt
+++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalCompilerRunner.kt
@@ -435,7 +435,7 @@
dirtySources.addAll(compiledSources)
allDirtySources.addAll(dirtySources)
- val text = allDirtySources.joinToString(separator = System.getProperty("line.separator")) { it.canonicalPath }
+ val text = allDirtySources.joinToString(separator = System.getProperty("line.separator")) { it.normalize().absolutePath }
dirtySourcesSinceLastTimeFile.writeText(text)
diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/snapshots/FileSnapshotExternalizer.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/snapshots/FileSnapshotExternalizer.kt
index 61c398e..33a6d26 100644
--- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/snapshots/FileSnapshotExternalizer.kt
+++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/snapshots/FileSnapshotExternalizer.kt
@@ -23,7 +23,7 @@
object FileSnapshotExternalizer : DataExternalizer<FileSnapshot> {
override fun save(out: DataOutput, value: FileSnapshot) {
- out.writeUTF(value.file.canonicalPath)
+ out.writeUTF(value.file.normalize().absolutePath)
out.writeLong(value.length)
out.writeInt(value.hash.size)
out.write(value.hash)
diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinDirtySourceFilesHolder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinDirtySourceFilesHolder.kt
index 32aca9b..5addd0f 100644
--- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinDirtySourceFilesHolder.kt
+++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinDirtySourceFilesHolder.kt
@@ -50,10 +50,10 @@
*/
internal fun _markDirty(file: File, root: JavaSourceRootDescriptor) {
val isCrossCompiled = root is KotlinIncludedModuleSourceRoot
- val old = _dirty.put(file.canonicalFile, KotlinModuleBuildTarget.Source(file, isCrossCompiled))
+ val old = _dirty.put(file.normalize().absoluteFile, KotlinModuleBuildTarget.Source(file, isCrossCompiled))
check(old == null || old.isCrossCompiled == isCrossCompiled) {
- "`${file.canonicalFile}` already marked as dirty: " +
+ "`${file.normalize().absoluteFile}` already marked as dirty: " +
"old is cross compiled: ${old!!.isCrossCompiled}, " +
"new is cross compiled: $isCrossCompiled"
}
diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt
index 841ad6f..c35433d 100644
--- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt
+++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/targets/KotlinJvmModuleBuildTarget.kt
@@ -400,8 +400,8 @@
}
callback.associate(
- FileUtil.toSystemIndependentName(output.outputFile.canonicalPath),
- sourceFiles.map { FileUtil.toSystemIndependentName(it.canonicalPath) },
+ FileUtil.toSystemIndependentName(output.outputFile.normalize().absolutePath),
+ sourceFiles.map { FileUtil.toSystemIndependentName(it.normalize().absolutePath) },
ClassReader(output.outputClass.fileContents)
)
}
diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt
index 62c0058..0268b75 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleSubplugin.kt
@@ -33,7 +33,7 @@
key: String,
val files: Iterable<File>,
val kind: FilesOptionKind = FilesOptionKind.INTERNAL,
- lazyValue: Lazy<String> = lazy { files.joinToString(File.pathSeparator) { it.canonicalPath } }
+ lazyValue: Lazy<String> = lazy { files.joinToString(File.pathSeparator) { it.normalize().absolutePath } }
) : SubpluginOption(key, lazyValue) {
constructor(
@@ -41,7 +41,7 @@
files: List<File>,
kind: FilesOptionKind = FilesOptionKind.INTERNAL,
value: String? = null
- ) : this(key, files, kind, lazy { value ?: files.joinToString(File.pathSeparator) { it.canonicalPath } })
+ ) : this(key, files, kind, lazy { value ?: files.joinToString(File.pathSeparator) { it.normalize().absolutePath } })
}
class CompositeSubpluginOption(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt
index 645f814..f3977a8 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt
@@ -347,12 +347,13 @@
kotlinTask.abiSnapshotFile.get().asFile
)
val jarTask = project.tasks.findByName(target.artifactsTaskName) as? AbstractArchiveTask ?: continue
- jarToModule[jarTask.archivePathCompatible.canonicalFile] = module
+ jarToModule[jarTask.archivePathCompatible.normalize().absoluteFile] = module
if (target is KotlinWithJavaTarget<*, *>) {
val jar = project.tasks.getByName(target.artifactsTaskName) as Jar
- jarToClassListFile[jar.archivePathCompatible.canonicalFile] = target.defaultArtifactClassesListFile.get()
+ jarToClassListFile[jar.archivePathCompatible.normalize().absoluteFile] =
+ target.defaultArtifactClassesListFile.get()
//configure abiSnapshot mapping for jars
- jarToAbiSnapshot[jar.archivePathCompatible.canonicalFile] =
+ jarToAbiSnapshot[jar.archivePathCompatible.normalize().absoluteFile] =
target.buildDir.get().file(kotlinTask.abiSnapshotRelativePath).get().asFile
}
@@ -414,9 +415,9 @@
internal fun getOrCreateClientFlagFile(log: Logger, projectName: String): File {
if (clientIsAliveFlagFile == null || !clientIsAliveFlagFile!!.exists()) {
clientIsAliveFlagFile = newTmpFile(prefix = "kotlin-compiler-in-${projectName}-", suffix = ".alive")
- log.kotlinDebug { CREATED_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.canonicalPath }
+ log.kotlinDebug { CREATED_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.normalize().absoluteFile }
} else {
- log.kotlinDebug { EXISTING_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.canonicalPath }
+ log.kotlinDebug { EXISTING_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.normalize().absoluteFile }
}
return clientIsAliveFlagFile!!
@@ -437,9 +438,9 @@
if (sessionFlagFile == null || !sessionFlagFile!!.exists()) {
val sessionFilesDir = sessionsDir.apply { mkdirs() }
sessionFlagFile = newTmpFile(prefix = "kotlin-compiler-", suffix = ".salive", directory = sessionFilesDir)
- log.kotlinDebug { CREATED_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeOrCanonical(projectCacheDirProvider) }
+ log.kotlinDebug { CREATED_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeOrAbsolute(projectCacheDirProvider) }
} else {
- log.kotlinDebug { EXISTING_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeOrCanonical(projectCacheDirProvider) }
+ log.kotlinDebug { EXISTING_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeOrAbsolute(projectCacheDirProvider) }
}
return sessionFlagFile!!
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt
index d78d702..4e18ecd 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerWork.kt
@@ -149,7 +149,7 @@
private fun compileWithDaemonOrFallbackImpl(messageCollector: MessageCollector): Pair<ExitCode, KotlinCompilerExecutionStrategy> {
with(log) {
kotlinDebug { "Kotlin compiler class: ${compilerClassName}" }
- kotlinDebug { "Kotlin compiler classpath: ${compilerFullClasspath.joinToString { it.canonicalPath }}" }
+ kotlinDebug { "Kotlin compiler classpath: ${compilerFullClasspath.joinToString { it.normalize().absolutePath }}" }
kotlinDebug { "$taskPath Kotlin compiler args: ${compilerArgs.joinToString(" ")}" }
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ProcessedFilesCache.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ProcessedFilesCache.kt
index 94b4b02..1caa811 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ProcessedFilesCache.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/ProcessedFilesCache.kt
@@ -198,7 +198,7 @@
state.remove(existedTarget)
}
}
- state[hash] = Element(file.canonicalPath, key)
+ state[hash] = Element(file.normalize().absolutePath, key)
return key
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/subpluginUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/subpluginUtils.kt
index 60bb637..b0ed9a5 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/subpluginUtils.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/subpluginUtils.kt
@@ -57,7 +57,7 @@
subpluginOptionsByPluginId.toMutableMap()
resultOptionsByPluginId.compute(Kapt3GradleSubplugin.KAPT_SUBPLUGIN_ID) { _, kaptOptions ->
- val changedFilesOption = changedFiles.map { SubpluginOption("changedFile", it.canonicalPath) }
+ val changedFilesOption = changedFiles.map { SubpluginOption("changedFile", it.normalize().absolutePath) }
val classpathChangesOption = classpathChanges.map { SubpluginOption("classpathChange", it) }
val processIncrementallyOption = SubpluginOption("processIncrementally", processIncrementally.toString())
val compiledSourcesOption =
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt
index 93c9e2b..981f2b7 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/AbstractKotlinPlugin.kt
@@ -81,7 +81,7 @@
}
val inspectTask = project.registerTask<InspectClassesForMultiModuleIC>(INSPECT_IC_CLASSES_TASK_NAME) { inspectTask ->
- inspectTask.archivePath.set(jarTask.map { it.archivePathCompatible.canonicalPath })
+ inspectTask.archivePath.set(jarTask.map { it.archivePathCompatible.normalize().absolutePath })
inspectTask.archivePath.disallowChanges()
inspectTask.sourceSetName.set(SourceSet.MAIN_SOURCE_SET_NAME)
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleFinishBuildHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleFinishBuildHandler.kt
index 3ed9906..64b6273 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleFinishBuildHandler.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinGradleFinishBuildHandler.kt
@@ -11,7 +11,7 @@
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskLoggers
-import org.jetbrains.kotlin.gradle.utils.relativeOrCanonical
+import org.jetbrains.kotlin.gradle.utils.relativeOrAbsolute
import org.jetbrains.kotlin.utils.addToStdlib.sumByLong
import java.io.File
import java.lang.management.ManagementFactory
@@ -45,11 +45,11 @@
// it is expected that only one session file per build exists
// afaik is is not possible to run multiple gradle builds in one project since gradle locks some dirs
if (sessionFiles.size > 1) {
- log.warn("w: Detected multiple Kotlin daemon sessions at ${sessionsDir.relativeOrCanonical(projectCacheDir)}")
+ log.warn("w: Detected multiple Kotlin daemon sessions at ${sessionsDir.relativeOrAbsolute(projectCacheDir)}")
}
for (file in sessionFiles) {
file.delete()
- log.kotlinDebug { DELETED_SESSION_FILE_PREFIX + file.relativeOrCanonical(projectCacheDir) }
+ log.kotlinDebug { DELETED_SESSION_FILE_PREFIX + file.relativeOrAbsolute(projectCacheDir) }
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt
index caa283e..a71e76b 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt
@@ -168,7 +168,7 @@
buildString {
append(name)
append(';')
- resDirectories.map { it.dir }.joinTo(this, separator = ";") { it.canonicalPath }
+ resDirectories.map { it.dir }.joinTo(this, separator = ";") { it.normalize().absolutePath }
}
}
pluginOptions += CompositeSubpluginOption(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/RewriteSourceMapFilterReader.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/RewriteSourceMapFilterReader.kt
index 72e02d9..499c6a1 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/RewriteSourceMapFilterReader.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/internal/RewriteSourceMapFilterReader.kt
@@ -144,7 +144,7 @@
protected open fun transformString(value: String): String {
val sourceFileResolved = File(srcSourceRoot)
.resolve(value)
- .canonicalFile
+ .normalize().absoluteFile
val transformedPath = sourceFileResolved.relativeToOrNull(File(targetSourceRoot))?.path ?: return sourceFileResolved.path
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt
index a3cc286..6054ba0 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinCompileCommon.kt
@@ -82,7 +82,7 @@
with(args) {
classpath = classpathList.joinToString(File.pathSeparator)
- destination = destinationDirectory.get().asFile.canonicalPath
+ destination = destinationDirectory.get().asFile.normalize().absolutePath
friendPaths = this@KotlinCompileCommon.friendPaths.files.map { it.absolutePath }.toTypedArray()
refinesPaths = refinesMetadataPaths.map { it.absolutePath }.toTypedArray()
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt
index e533191..6c576fa 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt
@@ -33,7 +33,7 @@
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDceOptions
import org.jetbrains.kotlin.gradle.logging.GradleKotlinLogger
-import org.jetbrains.kotlin.gradle.utils.canonicalPathWithoutExtension
+import org.jetbrains.kotlin.gradle.utils.absolutePathWithoutExtension
import org.jetbrains.kotlin.gradle.utils.fileExtensionCasePermutations
import org.jetbrains.kotlin.gradle.utils.newInstance
import java.io.File
@@ -160,7 +160,7 @@
return false
}
- return File("${file.canonicalPathWithoutExtension()}.meta.js").exists()
+ return File("${file.absolutePathWithoutExtension()}.meta.js").exists()
}
companion object {
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
index 142fbce..7dfee41 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt
@@ -1150,7 +1150,7 @@
val dependencies = libraries
.filter { it.exists() && libraryFilter(it) }
- .map { it.canonicalPath }
+ .map { it.normalize().absolutePath }
args.libraries = dependencies.distinct().let {
if (it.isNotEmpty())
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt
index cc7f24a..d6a5a2c 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/fileUtils.kt
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.gradle.utils
-import org.gradle.api.InvalidUserCodeException
import org.gradle.api.Project
import java.io.File
import java.io.IOException
@@ -44,17 +43,17 @@
return result
}
-internal fun File.relativeOrCanonical(base: File): String =
- relativeToOrNull(base)?.path ?: canonicalPath
+internal fun File.relativeOrAbsolute(base: File): String =
+ relativeToOrNull(base)?.path ?: normalize().absolutePath
internal fun Iterable<File>.pathsAsStringRelativeTo(base: File): String =
- map { it.relativeOrCanonical(base) }.sorted().joinToString()
+ map { it.relativeOrAbsolute(base) }.sorted().joinToString()
internal fun File.relativeToRoot(project: Project): String =
- relativeOrCanonical(project.rootProject.rootDir)
+ relativeOrAbsolute(project.rootProject.rootDir)
internal fun Iterable<File>.toPathsArray(): Array<String> =
- map { it.canonicalPath }.toTypedArray()
+ map { it.normalize().absolutePath }.toTypedArray()
internal fun newTmpFile(prefix: String, suffix: String? = null, directory: File? = null, deleteOnExit: Boolean = true): File {
return try {
@@ -82,8 +81,8 @@
}
}
-internal fun File.canonicalPathWithoutExtension(): String =
- canonicalPath.substringBeforeLast(".")
+internal fun File.absolutePathWithoutExtension(): String =
+ normalize().absolutePath.substringBeforeLast(".")
internal fun File.listFilesOrEmpty() = (if (exists()) listFiles() else null).orEmpty()
diff --git a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptContext.kt b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptContext.kt
index a573f5f..ff30bd1 100644
--- a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptContext.kt
+++ b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptContext.kt
@@ -127,8 +127,8 @@
@Suppress("SpellCheckingInspection")
putJavacOption("PROCESSORPATH", "PROCESSOR_PATH", options.processingClasspath.makePathsString())
- put(Option.S, options.sourcesOutputDir.canonicalPath)
- put(Option.D, options.classesOutputDir.canonicalPath)
+ put(Option.S, options.sourcesOutputDir.normalize().absolutePath)
+ put(Option.D, options.classesOutputDir.normalize().absolutePath)
put(Option.ENCODING, "UTF-8")
}
@@ -168,6 +168,6 @@
companion object {
const val MODULE_INFO_FILE = "module-info.java"
- private fun Iterable<File>.makePathsString(): String = joinToString(File.pathSeparator) { it.canonicalPath }
+ private fun Iterable<File>.makePathsString(): String = joinToString(File.pathSeparator) { it.normalize().absolutePath }
}
}
diff --git a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptOptions.kt b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptOptions.kt
index b460230..e9ef586 100644
--- a/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptOptions.kt
+++ b/plugins/kapt3/kapt3-base/src/org/jetbrains/kotlin/kapt3/base/KaptOptions.kt
@@ -157,7 +157,7 @@
.sortedBy { Files.isSymbolicLink(it.toPath()) } // Get non-symbolic paths first
.flatMap { root -> root.walk().filter { it.isFile && it.extension == "java" }.toList() }
.sortedBy { Files.isSymbolicLink(it.toPath()) } // This time is for .java files
- .distinctBy { it.canonicalPath }
+ .distinctBy { it.normalize().absolutePath }
}
return when (sourcesToReprocess) {
diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt
index 07b414c..0471fe1 100644
--- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt
+++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt
@@ -230,7 +230,7 @@
if (!options.mode.runAnnotationProcessing) return
val javaSourceFiles = options.collectJavaSourceFiles(kaptContext.sourcesToReprocess)
- logger.info { "Java source files: " + javaSourceFiles.joinToString { it.canonicalPath } }
+ logger.info { "Java source files: " + javaSourceFiles.joinToString { it.normalize().absolutePath } }
val (annotationProcessingTime) = measureTimeMillis {
kaptContext.doAnnotationProcessing(javaSourceFiles, processors.processors)