From 30d675d49faaf941031ac8044032c850e3e37db7 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 11 Sep 2015 16:20:11 +0300 Subject: [PATCH] Repl: fix paths on windows --- .../org/jetbrains/kotlin/utils/KotlinPaths.java | 3 +++ .../kotlin/utils/KotlinPathsFromHomeDir.java | 6 ++++++ .../src/org/jetbrains/kotlin/utils/PathUtil.java | 5 +++-- .../kotlin/console/KotlinConsoleKeeper.kt | 14 ++++++++------ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java index 191bdf4ea09..29c0245baa5 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java +++ b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java @@ -47,4 +47,7 @@ public interface KotlinPaths { @NotNull File getJsStdLibSrcJarPath(); + + @NotNull + File getCompilerPath(); } diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java index c30ec18086a..6ba4985fe20 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java +++ b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java @@ -82,6 +82,12 @@ public class KotlinPathsFromHomeDir implements KotlinPaths { return getLibraryFile(PathUtil.JS_LIB_SRC_JAR_NAME); } + @NotNull + @Override + public File getCompilerPath() { + return getLibraryFile(PathUtil.KOTLIN_COMPILER_JAR); + } + @NotNull private File getLibraryFile(@NotNull String fileName) { return new File(getLibPath(), fileName); diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java b/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java index a8af90c9148..92220d377e0 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java +++ b/compiler/util/src/org/jetbrains/kotlin/utils/PathUtil.java @@ -38,8 +38,9 @@ public class PathUtil { public static final String KOTLIN_JAVA_RUNTIME_JAR = "kotlin-runtime.jar"; public static final String KOTLIN_JAVA_REFLECT_JAR = "kotlin-reflect.jar"; public static final String KOTLIN_JAVA_RUNTIME_SRC_JAR = "kotlin-runtime-sources.jar"; - public static final String HOME_FOLDER_NAME = "kotlinc"; + public static final String KOTLIN_COMPILER_JAR = "kotlin-compiler.jar"; + public static final String HOME_FOLDER_NAME = "kotlinc"; private static final File NO_PATH = new File(""); private PathUtil() {} @@ -90,7 +91,7 @@ public class PathUtil { if (!jar.exists()) return NO_PATH; - if (jar.getName().equals("kotlin-compiler.jar")) { + if (jar.getName().equals(KOTLIN_COMPILER_JAR)) { File lib = jar.getParentFile(); return lib.getParentFile(); } diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleKeeper.kt b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleKeeper.kt index f2c87d5cb3b..c85742866ba 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleKeeper.kt +++ b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleKeeper.kt @@ -33,6 +33,7 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.SystemProperties import org.jetbrains.kotlin.console.actions.errorNotification import org.jetbrains.kotlin.utils.PathUtil +import org.jetbrains.kotlin.utils.join import java.io.File import java.util.concurrent.ConcurrentHashMap @@ -64,21 +65,22 @@ public class KotlinConsoleKeeper(val project: Project) { val commandLine = JdkUtil.setupJVMCommandLine(exePath, javaParameters, true) - // set parameters to run compiler val paramList = commandLine.parametersList paramList.clearAll() // use to debug repl process //paramList.add("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005") - // set classpath for process to compiler - paramList.add("-cp") - paramList.add("${PathUtil.getKotlinPathsForIdeaPlugin().libPath.absolutePath}/*") + val kotlinPaths = PathUtil.getKotlinPathsForIdeaPlugin() + val replClassPath = listOf(kotlinPaths.compilerPath, kotlinPaths.reflectPath, kotlinPaths.runtimePath) + .map { it.absolutePath } + .joinToString(File.pathSeparator) + + paramList.add("-cp") + paramList.add(replClassPath) - // set param to prevent process from repeating input backwards paramList.add("-Drepl.ideMode=true") - // path to compiler and his options paramList.add("org.jetbrains.kotlin.cli.jvm.K2JVMCompiler") addPathToCompiledOutput(paramList, module)