diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractScriptCodegenTest.java b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractScriptCodegenTest.java index 75257a2a7a4..053311e4873 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractScriptCodegenTest.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractScriptCodegenTest.java @@ -18,12 +18,18 @@ package org.jetbrains.kotlin.codegen; import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.test.ConfigurationKind; +import org.jetbrains.kotlin.test.TestJdkKind; import org.jetbrains.kotlin.utils.ExceptionUtilsKt; +import java.io.File; import java.lang.reflect.Constructor; import java.lang.reflect.Field; +import java.util.List; + +import static org.jetbrains.kotlin.script.ScriptTestUtilKt.loadScriptingPlugin; public abstract class AbstractScriptCodegenTest extends CodegenTestCase { @Override @@ -32,6 +38,12 @@ public abstract class AbstractScriptCodegenTest extends CodegenTestCase { createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY); } + @Override + protected void updateConfiguration(@NotNull CompilerConfiguration configuration) { + loadScriptingPlugin(configuration); + super.updateConfiguration(configuration); + } + @Override protected void doTest(@NotNull String filename) { loadFileByFullPath(filename); diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/jvm/repl/ReplCompilerJava8Test.kt b/compiler/tests-java8/tests/org/jetbrains/kotlin/jvm/repl/ReplCompilerJava8Test.kt index 1af211127b8..258cab7ffe5 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/jvm/repl/ReplCompilerJava8Test.kt +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/jvm/repl/ReplCompilerJava8Test.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.integration.KotlinIntegrationTestBase import org.jetbrains.kotlin.script.StandardScriptDefinition +import org.jetbrains.kotlin.script.loadScriptingPlugin import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind @@ -56,6 +57,7 @@ class ReplCompilerJava8Test : KtUsefulTestCase() { addKotlinSourceRoot(tmpdir!!.absolutePath) put(JVMConfigurationKeys.OUTPUT_DIRECTORY, tmpdir!!) put(JVMConfigurationKeys.JVM_TARGET, JvmTarget.JVM_1_8) + loadScriptingPlugin(this) } val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) @@ -106,7 +108,9 @@ class ReplCompilerJava8Test : KtUsefulTestCase() { private fun makeConfiguration() = KotlinTestUtils.newConfiguration( ConfigurationKind.ALL, TestJdkKind.FULL_JDK, File(KotlinIntegrationTestBase.getCompilerLib(), "kotlin-stdlib.jar"), tmpdir - ) + ).also { + loadScriptingPlugin(it) + } private fun runTest(configuration: CompilerConfiguration): ReplCompileResult { val collector = PrintingMessageCollector(System.out, MessageRenderer.WITHOUT_PATHS, false) diff --git a/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt index a75fc724de6..c86fc3a007f 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.integration.KotlinIntegrationTestBase import org.jetbrains.kotlin.script.KotlinScriptDefinition import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate +import org.jetbrains.kotlin.script.loadScriptingPlugin import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind @@ -203,6 +204,7 @@ internal class TestRepl( private val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.MOCK_JDK, *templateClasspath.toTypedArray()).apply { put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script") + loadScriptingPlugin(this) } val baseClasspath: List get() = configuration.jvmClasspathRoots diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt index d816a86a2e0..483325199f1 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.codegen import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.script.loadScriptingPlugin import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContextOrStlib import org.jetbrains.kotlin.scripting.compiler.plugin.configureScriptDefinitions import org.jetbrains.kotlin.test.ConfigurationKind @@ -39,6 +40,8 @@ abstract class AbstractCustomScriptCodegenTest : CodegenTestCase() { } configuration.addJvmClasspathRoots(additionalDependencies.orEmpty()) + + loadScriptingPlugin(configuration) } override fun doMultiFileTest(wholeFile: File, files: MutableList, javaFilesDir: File?) { diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt index 3066b4da8fe..6e696caa9be 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate +import org.jetbrains.kotlin.script.loadScriptingPlugin import org.jetbrains.kotlin.scripts.TestKotlinScriptDependenciesResolver import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils @@ -124,6 +125,7 @@ class ScriptGenTest : CodegenTestCase() { addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" }) addJvmClasspathRoots(additionalDependencies) } + loadScriptingPlugin(configuration) myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) diff --git a/compiler/tests/org/jetbrains/kotlin/repl/AbstractReplInterpreterTest.kt b/compiler/tests/org/jetbrains/kotlin/repl/AbstractReplInterpreterTest.kt index 3b5762e4b43..5db000622b8 100644 --- a/compiler/tests/org/jetbrains/kotlin/repl/AbstractReplInterpreterTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/repl/AbstractReplInterpreterTest.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.util.text.StringUtil import org.jetbrains.kotlin.cli.common.repl.ReplEvalResult import org.jetbrains.kotlin.cli.jvm.repl.configuration.ConsoleReplConfiguration import org.jetbrains.kotlin.cli.jvm.repl.ReplInterpreter +import org.jetbrains.kotlin.script.loadScriptingPlugin import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind @@ -84,6 +85,7 @@ abstract class AbstractReplInterpreterTest : KtUsefulTestCase() { protected fun doTest(path: String) { val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.MOCK_JDK) + loadScriptingPlugin(configuration) val repl = ReplInterpreter(testRootDisposable, configuration, ConsoleReplConfiguration()) for ((code, expected) in loadLines(File(path))) { diff --git a/libraries/examples/kotlin-jsr223-local-example/build.gradle.kts b/libraries/examples/kotlin-jsr223-local-example/build.gradle.kts index 60abb70ca5c..e7adb614344 100644 --- a/libraries/examples/kotlin-jsr223-local-example/build.gradle.kts +++ b/libraries/examples/kotlin-jsr223-local-example/build.gradle.kts @@ -10,6 +10,7 @@ dependencies { compile(project(":kotlin-script-runtime")) compile(projectRuntimeJar(":kotlin-compiler-embeddable")) compile(project(":kotlin-script-util")) + runtime(projectRuntimeJar(":kotlin-scripting-compiler-embeddable")) testCompile(project(":kotlin-test:kotlin-test-junit")) testCompile(commonDep("junit:junit")) testRuntime(project(":kotlin-reflect")) diff --git a/libraries/tools/kotlin-script-util/build.gradle.kts b/libraries/tools/kotlin-script-util/build.gradle.kts index f3445c54f2e..b8be6c56e9b 100644 --- a/libraries/tools/kotlin-script-util/build.gradle.kts +++ b/libraries/tools/kotlin-script-util/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { compile(commonDep("org.jetbrains.intellij.deps", "trove4j")) compileOnly(project(":compiler:cli")) compileOnly(project(":compiler:daemon-common")) + compileOnly(project(":kotlin-scripting-compiler")) compile(projectRuntimeJar(":kotlin-daemon-client")) compileOnly("com.jcabi:jcabi-aether:1.0-SNAPSHOT") compileOnly("org.sonatype.aether:aether-api:1.13.1") diff --git a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt index 0a6da0e96d7..f5077c7b998 100644 --- a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt +++ b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt @@ -22,9 +22,11 @@ import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.cli.jvm.config.addJvmSdkRoots import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompiler +import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar import org.jetbrains.kotlin.config.* 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.net.URLClassLoader @@ -67,6 +69,7 @@ class KotlinJsr223JvmLocalScriptEngine( private fun makeCompilerConfiguration() = CompilerConfiguration().apply { addJvmSdkRoots(PathUtil.getJdkClassesRootsFromCurrentJre()) addJvmClasspathRoots(templateClasspath) + add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar()) put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script") languageVersionSettings = LanguageVersionSettingsImpl( LanguageVersion.LATEST_STABLE, ApiVersion.LATEST_STABLE, mapOf(AnalysisFlags.skipMetadataVersionCheck to true)