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.KotlinCoreEnvironment
|
||||
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.addJvmClasspathRoots
|
||||
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal
|
||||
import org.jetbrains.kotlin.codegen.CompilationException
|
||||
import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
|
||||
@@ -412,7 +412,7 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
||||
configuration: CompilerConfiguration,
|
||||
messageCollector: MessageCollector,
|
||||
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
|
||||
if (scriptTemplates != null && scriptTemplates.isNotEmpty()) {
|
||||
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 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 {
|
||||
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) {
|
||||
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>
|
||||
get() {
|
||||
return get(JVMConfigurationKeys.CONTENT_ROOTS)?.filterIsInstance<JvmClasspathRoot>()?.map { it.file } ?: emptyList()
|
||||
}
|
||||
get() = getList(JVMConfigurationKeys.CONTENT_ROOTS).filterIsInstance<JvmClasspathRoot>().map(JvmContentRoot::file)
|
||||
|
||||
@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))
|
||||
}
|
||||
|
||||
@JvmOverloads fun CompilerConfiguration.addJavaSourceRoots(files: List<File>, packagePrefix: String? = null): Unit =
|
||||
files.forEach { addJavaSourceRoot(it, packagePrefix) }
|
||||
@JvmOverloads
|
||||
fun CompilerConfiguration.addJavaSourceRoots(files: List<File>, packagePrefix: String? = null) {
|
||||
files.forEach { addJavaSourceRoot(it, packagePrefix) }
|
||||
}
|
||||
|
||||
val CompilerConfiguration.javaSourceRoots: Set<String>
|
||||
get() = get(JVMConfigurationKeys.CONTENT_ROOTS)
|
||||
?.mapNotNullTo(hashSetOf<String>()) {
|
||||
(it as? KotlinSourceRoot)?.path ?: (it as? JavaSourceRoot)?.file?.path
|
||||
get() = getList(JVMConfigurationKeys.CONTENT_ROOTS).mapNotNullTo(linkedSetOf<String>()) { root ->
|
||||
when (root) {
|
||||
is KotlinSourceRoot -> root.path
|
||||
is JavaSourceRoot -> root.file.path
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
.orEmpty()
|
||||
Reference in New Issue
Block a user