Minor refactoring in ContentRoots, JvmContentRoots and usages
This commit is contained in:
@@ -30,9 +30,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.CompileEnvironmentUtil
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoot
|
import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoot
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal
|
import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal
|
||||||
import org.jetbrains.kotlin.codegen.CompilationException
|
import org.jetbrains.kotlin.codegen.CompilationException
|
||||||
import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
|
import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
|
||||||
@@ -412,7 +412,7 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
|||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
messageCollector: MessageCollector,
|
messageCollector: MessageCollector,
|
||||||
scriptResolverEnv: HashMap<String, Any?>) {
|
scriptResolverEnv: HashMap<String, Any?>) {
|
||||||
val classpath = configuration.getList(JVMConfigurationKeys.CONTENT_ROOTS).filterIsInstance(JvmClasspathRoot::class.java).mapNotNull { it.file }
|
val classpath = configuration.jvmClasspathRoots
|
||||||
// TODO: consider using escaping to allow kotlin escaped names in class names
|
// TODO: consider using escaping to allow kotlin escaped names in class names
|
||||||
if (scriptTemplates != null && scriptTemplates.isNotEmpty()) {
|
if (scriptTemplates != null && scriptTemplates.isNotEmpty()) {
|
||||||
val classloader = URLClassLoader(classpath.map { it.toURI().toURL() }.toTypedArray(), Thread.currentThread().contextClassLoader)
|
val classloader = URLClassLoader(classpath.map { it.toURI().toURL() }.toTypedArray(), Thread.currentThread().contextClassLoader)
|
||||||
|
|||||||
@@ -22,35 +22,40 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.KotlinSourceRoot
|
import org.jetbrains.kotlin.config.KotlinSourceRoot
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
data class JvmClasspathRoot(override val file: File): JvmContentRoot
|
|
||||||
|
|
||||||
data class JavaSourceRoot(override val file: File, val packagePrefix: String?): JvmContentRoot
|
|
||||||
|
|
||||||
interface JvmContentRoot : ContentRoot {
|
interface JvmContentRoot : ContentRoot {
|
||||||
val file: File
|
val file: File
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class JvmClasspathRoot(override val file: File) : JvmContentRoot
|
||||||
|
|
||||||
|
data class JavaSourceRoot(override val file: File, val packagePrefix: String?) : JvmContentRoot
|
||||||
|
|
||||||
fun CompilerConfiguration.addJvmClasspathRoot(file: File) {
|
fun CompilerConfiguration.addJvmClasspathRoot(file: File) {
|
||||||
add(JVMConfigurationKeys.CONTENT_ROOTS, JvmClasspathRoot(file))
|
add(JVMConfigurationKeys.CONTENT_ROOTS, JvmClasspathRoot(file))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun CompilerConfiguration.addJvmClasspathRoots(files: List<File>): Unit = files.forEach { addJvmClasspathRoot(it) }
|
fun CompilerConfiguration.addJvmClasspathRoots(files: List<File>) {
|
||||||
|
files.forEach(this::addJvmClasspathRoot)
|
||||||
|
}
|
||||||
|
|
||||||
val CompilerConfiguration.jvmClasspathRoots: List<File>
|
val CompilerConfiguration.jvmClasspathRoots: List<File>
|
||||||
get() {
|
get() = getList(JVMConfigurationKeys.CONTENT_ROOTS).filterIsInstance<JvmClasspathRoot>().map(JvmContentRoot::file)
|
||||||
return get(JVMConfigurationKeys.CONTENT_ROOTS)?.filterIsInstance<JvmClasspathRoot>()?.map { it.file } ?: emptyList()
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmOverloads fun CompilerConfiguration.addJavaSourceRoot(file: File, packagePrefix: String? = null) {
|
@JvmOverloads
|
||||||
|
fun CompilerConfiguration.addJavaSourceRoot(file: File, packagePrefix: String? = null) {
|
||||||
add(JVMConfigurationKeys.CONTENT_ROOTS, JavaSourceRoot(file, packagePrefix))
|
add(JVMConfigurationKeys.CONTENT_ROOTS, JavaSourceRoot(file, packagePrefix))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmOverloads fun CompilerConfiguration.addJavaSourceRoots(files: List<File>, packagePrefix: String? = null): Unit =
|
@JvmOverloads
|
||||||
files.forEach { addJavaSourceRoot(it, packagePrefix) }
|
fun CompilerConfiguration.addJavaSourceRoots(files: List<File>, packagePrefix: String? = null) {
|
||||||
|
files.forEach { addJavaSourceRoot(it, packagePrefix) }
|
||||||
|
}
|
||||||
|
|
||||||
val CompilerConfiguration.javaSourceRoots: Set<String>
|
val CompilerConfiguration.javaSourceRoots: Set<String>
|
||||||
get() = get(JVMConfigurationKeys.CONTENT_ROOTS)
|
get() = getList(JVMConfigurationKeys.CONTENT_ROOTS).mapNotNullTo(linkedSetOf<String>()) { root ->
|
||||||
?.mapNotNullTo(hashSetOf<String>()) {
|
when (root) {
|
||||||
(it as? KotlinSourceRoot)?.path ?: (it as? JavaSourceRoot)?.file?.path
|
is KotlinSourceRoot -> root.path
|
||||||
|
is JavaSourceRoot -> root.file.path
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.orEmpty()
|
|
||||||
@@ -25,7 +25,7 @@ fun CompilerConfiguration.addKotlinSourceRoot(source: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun CompilerConfiguration.addKotlinSourceRoots(sources: List<String>): Unit =
|
fun CompilerConfiguration.addKotlinSourceRoots(sources: List<String>): Unit =
|
||||||
sources.forEach { addKotlinSourceRoot(it) }
|
sources.forEach(this::addKotlinSourceRoot)
|
||||||
|
|
||||||
val CompilerConfiguration.kotlinSourceRoots: List<String>
|
val CompilerConfiguration.kotlinSourceRoots: List<String>
|
||||||
get() = get(JVMConfigurationKeys.CONTENT_ROOTS)?.filterIsInstance<KotlinSourceRoot>()?.map { it.path }.orEmpty()
|
get() = get(JVMConfigurationKeys.CONTENT_ROOTS)?.filterIsInstance<KotlinSourceRoot>()?.map { it.path }.orEmpty()
|
||||||
|
|||||||
@@ -57,7 +57,10 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRootsKt;
|
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRootsKt;
|
||||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
||||||
import org.jetbrains.kotlin.config.*;
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys;
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||||
|
import org.jetbrains.kotlin.config.ContentRootsKt;
|
||||||
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||||
import org.jetbrains.kotlin.diagnostics.Errors;
|
import org.jetbrains.kotlin.diagnostics.Errors;
|
||||||
@@ -542,13 +545,10 @@ public class KotlinTestUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void resolveAllKotlinFiles(KotlinCoreEnvironment environment) throws IOException {
|
public static void resolveAllKotlinFiles(KotlinCoreEnvironment environment) throws IOException {
|
||||||
List<ContentRoot> paths = environment.getConfiguration().get(JVMConfigurationKeys.CONTENT_ROOTS);
|
List<String> paths = ContentRootsKt.getKotlinSourceRoots(environment.getConfiguration());
|
||||||
if (paths == null) return;
|
if (paths.isEmpty()) return;
|
||||||
List<KtFile> ktFiles = new ArrayList<>();
|
List<KtFile> ktFiles = new ArrayList<>();
|
||||||
for (ContentRoot root : paths) {
|
for (String path : paths) {
|
||||||
if (!(root instanceof KotlinSourceRoot)) continue;
|
|
||||||
|
|
||||||
String path = ((KotlinSourceRoot) root).getPath();
|
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
if (file.isFile()) {
|
if (file.isFile()) {
|
||||||
ktFiles.add(loadJetFile(environment.getProject(), file));
|
ktFiles.add(loadJetFile(environment.getProject(), file));
|
||||||
|
|||||||
Reference in New Issue
Block a user