Replace File.relativePath from stdlib with File.descendantRelativeTo in fileUtils.
IO utils: cleanup java usages.
This commit is contained in:
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.cli.common.messages;
|
|||||||
import kotlin.io.FilesKt;
|
import kotlin.io.FilesKt;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.kotlin.utils.fileUtils.FileUtilsKt;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@@ -43,13 +44,14 @@ public interface MessageRenderer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
MessageRenderer PLAIN_RELATIVE_PATHS = new PlainTextMessageRenderer() {
|
MessageRenderer PLAIN_RELATIVE_PATHS = new PlainTextMessageRenderer() {
|
||||||
|
@NotNull
|
||||||
private final File cwd = new File(".").getAbsoluteFile();
|
private final File cwd = new File(".").getAbsoluteFile();
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
protected String getPath(@NotNull CompilerMessageLocation location) {
|
protected String getPath(@NotNull CompilerMessageLocation location) {
|
||||||
String path = location.getPath();
|
String path = location.getPath();
|
||||||
return cwd == null || path == null ? path : FilesKt.relativePath(cwd, new File(path));
|
return path == null ? path : FileUtilsKt.descendantRelativeTo(new File(path), cwd).getPath();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import com.intellij.psi.PsiManager;
|
|||||||
import kotlin.Unit;
|
import kotlin.Unit;
|
||||||
import kotlin.io.FilesKt;
|
import kotlin.io.FilesKt;
|
||||||
import kotlin.jvm.functions.Function1;
|
import kotlin.jvm.functions.Function1;
|
||||||
|
import kotlin.sequences.SequencesKt;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.backend.common.output.OutputFile;
|
import org.jetbrains.kotlin.backend.common.output.OutputFile;
|
||||||
@@ -162,7 +163,7 @@ public class CompileEnvironmentUtil {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
FilesKt.recurse(new File(sourceRootPath), new Function1<File, Unit>() {
|
SequencesKt.forEach(FilesKt.walkTopDown(new File(sourceRootPath)), new Function1<File, Unit>() {
|
||||||
@Override
|
@Override
|
||||||
public Unit invoke(File file) {
|
public Unit invoke(File file) {
|
||||||
if (file.isFile()) {
|
if (file.isFile()) {
|
||||||
|
|||||||
@@ -31,4 +31,24 @@ fun File.withReplacedExtensionOrNull(oldExt: String, newExt: String): File? {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates the relative path to this file from [base] file.
|
||||||
|
* Note that the [base] file is treated as a directory.
|
||||||
|
*
|
||||||
|
* If this file matches the [base] directory an empty path is returned.
|
||||||
|
* If this file does not belong to the [base] directory, it is returned unchanged.
|
||||||
|
*/
|
||||||
|
public fun File.descendantRelativeTo(base: File): File {
|
||||||
|
val prefix = base.canonicalPath
|
||||||
|
val answer = this.canonicalPath
|
||||||
|
return if (answer.startsWith(prefix)) {
|
||||||
|
val prefixSize = prefix.length
|
||||||
|
if (answer.length > prefixSize) {
|
||||||
|
File(answer.substring(prefixSize + 1))
|
||||||
|
} else File("")
|
||||||
|
} else {
|
||||||
|
this
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user