Add scripting configuration to daemon repl, fix and add tests
This commit is contained in:
@@ -11,6 +11,7 @@ dependencies {
|
||||
compile(project(":kotlin-build-common"))
|
||||
compile(commonDep("org.fusesource.jansi", "jansi"))
|
||||
compile(commonDep("org.jline", "jline"))
|
||||
compileOnly(project(":kotlin-scripting-compiler"))
|
||||
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||
compileOnly(intellijDep()) { includeIntellijCoreJarDependencies(project) }
|
||||
}
|
||||
|
||||
@@ -24,11 +24,13 @@ import org.jetbrains.kotlin.cli.common.repl.*
|
||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompiler
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompilerState
|
||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.daemon.common.CompileService
|
||||
import org.jetbrains.kotlin.daemon.common.RemoteOperationsTracer
|
||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
import java.io.File
|
||||
import java.io.PrintStream
|
||||
@@ -56,6 +58,7 @@ open class KotlinJvmReplService(
|
||||
languageVersionSettings = LanguageVersionSettingsImpl(
|
||||
LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlags.skipMetadataVersionCheck to true)
|
||||
)
|
||||
configureScripting()
|
||||
}
|
||||
|
||||
protected fun makeScriptDefinition(templateClasspath: List<File>, templateClassName: String): KotlinScriptDefinition? {
|
||||
@@ -171,3 +174,20 @@ inline internal fun getValidId(counter: AtomicInteger, check: (Int) -> Boolean):
|
||||
}
|
||||
return newId
|
||||
}
|
||||
|
||||
private fun CompilerConfiguration.configureScripting() {
|
||||
val error = try {
|
||||
add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar())
|
||||
null
|
||||
} catch (e: NoClassDefFoundError) {
|
||||
e
|
||||
} catch (e: ClassNotFoundException) {
|
||||
e
|
||||
}
|
||||
if (error != null) {
|
||||
throw IllegalStateException(
|
||||
"Unable to use scripting/REPL in the daemon, no kotlin-scripting-compiler.jar or its dependencies are found in the compiler classpath",
|
||||
error
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user