diff --git a/compiler/build.gradle.kts b/compiler/build.gradle.kts index e601a0a9377..3ec9f90d63c 100644 --- a/compiler/build.gradle.kts +++ b/compiler/build.gradle.kts @@ -52,7 +52,7 @@ dependencies { testCompile(projectTests(":generators:test-generator")) testCompile(project(":compiler:ir.ir2cfg")) testCompile(project(":compiler:ir.tree")) // used for deepCopyWithSymbols call that is removed by proguard from the compiler TODO: make it more straightforward - testCompile(project(":kotlin-scripting-compiler")) + testCompile(project(":kotlin-scripting-compiler-impl")) testCompile(project(":kotlin-script-util")) testCompileOnly(projectRuntimeJar(":kotlin-daemon-client")) testCompileOnly(project(":kotlin-reflect-api")) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/KotlinJsr223JvmInvocableScriptEngine.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/KotlinJsr223JvmInvocableScriptEngine.kt index b5d8ddeaa6e..711dd8a6805 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/KotlinJsr223JvmInvocableScriptEngine.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/repl/KotlinJsr223JvmInvocableScriptEngine.kt @@ -16,7 +16,7 @@ package org.jetbrains.kotlin.cli.common.repl -import org.jetbrains.kotlin.script.tryCreateCallableMapping +import org.jetbrains.kotlin.utils.tryCreateCallableMapping import java.lang.reflect.Proxy import javax.script.Invocable import javax.script.ScriptException diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index ea7ceb8fb8d..d1979f35aca 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -56,8 +56,8 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade -import org.jetbrains.kotlin.script.tryConstructClassFromStringArgs import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize +import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import java.io.File import java.lang.reflect.InvocationTargetException import java.net.URLClassLoader diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java index e97d1463269..ddd8465a4f1 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java @@ -19,8 +19,6 @@ package org.jetbrains.kotlin.config; import org.jetbrains.kotlin.load.java.JavaClassesTracker; import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents; import org.jetbrains.kotlin.modules.Module; -import org.jetbrains.kotlin.script.KotlinScriptDefinition; -import org.jetbrains.kotlin.script.ScriptDefinitionsSource; import java.io.File; import java.util.List; @@ -42,12 +40,6 @@ public class JVMConfigurationKeys { public static final CompilerConfigurationKey NO_JDK = CompilerConfigurationKey.create("no jdk"); - public static final CompilerConfigurationKey> SCRIPT_DEFINITIONS = - CompilerConfigurationKey.create("script definitions"); - - public static final CompilerConfigurationKey> SCRIPT_DEFINITIONS_SOURCES = - CompilerConfigurationKey.create("script definitions sources"); - public static final CompilerConfigurationKey DISABLE_STANDARD_SCRIPT_DEFINITION = CompilerConfigurationKey.create("Disable standard kotlin script support"); diff --git a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt b/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt deleted file mode 100644 index 71218627b1f..00000000000 --- a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionProvider.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.script - -import com.intellij.openapi.components.ServiceManager -import com.intellij.openapi.project.Project - -interface ScriptDefinitionProvider { - fun findScriptDefinition(fileName: String): KotlinScriptDefinition? - fun isScript(fileName: String): Boolean - fun getDefaultScriptDefinition(): KotlinScriptDefinition - - fun getKnownFilenameExtensions(): Sequence - - companion object { - fun getInstance(project: Project): ScriptDefinitionProvider? = - ServiceManager.getService(project, ScriptDefinitionProvider::class.java) - } -} - - diff --git a/compiler/psi/src/org/jetbrains/kotlin/script/ScriptPriorities.java b/compiler/psi/src/org/jetbrains/kotlin/script/ScriptPriorities.java deleted file mode 100644 index 1eb4dd12326..00000000000 --- a/compiler/psi/src/org/jetbrains/kotlin/script/ScriptPriorities.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.script; - -import com.intellij.openapi.util.Key; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.psi.KtScript; - -public class ScriptPriorities { - - public static final Key PRIORITY_KEY = Key.create(KtScript.class.getName() + ".priority"); - - public static int getScriptPriority(@NotNull KtScript script) { - Integer priority = script.getUserData(PRIORITY_KEY); - return priority == null ? 0 : priority; - } -} diff --git a/compiler/tests-common/build.gradle.kts b/compiler/tests-common/build.gradle.kts index 16e837c8406..5961a92109d 100644 --- a/compiler/tests-common/build.gradle.kts +++ b/compiler/tests-common/build.gradle.kts @@ -33,6 +33,7 @@ dependencies { testCompile(project(":kotlin-test:kotlin-test-jvm")) testCompile(projectTests(":compiler:tests-common-jvm6")) testCompileOnly(project(":kotlin-reflect-api")) + testCompile(project(":kotlin-scripting-compiler-impl")) testCompile(commonDep("junit:junit")) testCompile(androidDxJar()) { isTransitive = false } testCompileOnly(intellijCoreDep()) { includeJars("intellij-core") } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java index 1d731fa7d1e..0e43bdf2f44 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java @@ -22,8 +22,8 @@ import org.jetbrains.kotlin.TestsCompilerError; import org.jetbrains.kotlin.TestsCompiletimeError; import org.jetbrains.kotlin.backend.common.output.OutputFile; import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection; -import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil; import org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettings; +import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil; import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys; import org.jetbrains.kotlin.cli.common.output.OutputUtilsKt; import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.config.*; import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.KtFile; -import org.jetbrains.kotlin.script.ScriptDependenciesProvider; +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider; import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.InTextDirectivesUtils; import org.jetbrains.kotlin.test.KotlinTestUtils; 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 ccdeafed8dc..67cda93857d 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 @@ -29,8 +29,8 @@ import org.jetbrains.kotlin.config.CompilerConfiguration 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.scripting.definitions.StandardScriptDefinition import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler import org.jetbrains.kotlin.scripting.repl.KOTLIN_REPL_JVM_TARGET_PROPERTY import org.jetbrains.kotlin.test.ConfigurationKind @@ -114,7 +114,8 @@ class ReplCompilerJava8Test : KtUsefulTestCase() { private fun runTest(configuration: CompilerConfiguration): ReplCompileResult { val collector = PrintingMessageCollector(System.out, MessageRenderer.WITHOUT_PATHS, false) - val replCompiler = GenericReplCompiler(testRootDisposable, StandardScriptDefinition, configuration, collector) + val replCompiler = GenericReplCompiler(testRootDisposable, + StandardScriptDefinition, configuration, collector) val state = replCompiler.createState() return replCompiler.compile(state, ReplCodeLine(0, 0, script)) 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 980d0583d45..c61c310c81a 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/cli/jvm/repl/GenericReplTest.kt @@ -26,10 +26,10 @@ import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots 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.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt index 24c530f6ec6..d6eae4ddebe 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCustomScriptCodegenTest.kt @@ -10,7 +10,7 @@ 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.scripting.configuration.configureScriptDefinitions import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.TestJdkKind diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/CustomScriptCodegenTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/CustomScriptCodegenTest.kt index 23607db9c47..8ff01bfea66 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/CustomScriptCodegenTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/CustomScriptCodegenTest.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment 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.scripting.configuration.configureScriptDefinitions import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.utils.PathUtil diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt index 6e696caa9be..421ec18ac21 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ScriptGenTest.kt @@ -24,8 +24,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles 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.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.scripts.TestKotlinScriptDependenciesResolver import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils @@ -36,8 +37,10 @@ import kotlin.script.templates.ScriptTemplateDefinition class ScriptGenTest : CodegenTestCase() { companion object { - private val FIB_SCRIPT_DEFINITION = KotlinScriptDefinitionFromAnnotatedTemplate(ScriptWithIntParam::class) - private val NO_PARAM_SCRIPT_DEFINITION = KotlinScriptDefinitionFromAnnotatedTemplate(Any::class) + private val FIB_SCRIPT_DEFINITION = + KotlinScriptDefinitionFromAnnotatedTemplate(ScriptWithIntParam::class) + private val NO_PARAM_SCRIPT_DEFINITION = + KotlinScriptDefinitionFromAnnotatedTemplate(Any::class) } override fun setUp() { @@ -118,8 +121,8 @@ class ScriptGenTest : CodegenTestCase() { private fun setUpEnvironment(sourcePaths: List) { val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK).apply { put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false)) - add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, FIB_SCRIPT_DEFINITION) - add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION) + add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, FIB_SCRIPT_DEFINITION) + add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION) put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" }) diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/CollectScriptCompilationDependenciesTest.kt b/compiler/tests/org/jetbrains/kotlin/scripts/CollectScriptCompilationDependenciesTest.kt index d1bbb9d6b86..44fee51085b 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/CollectScriptCompilationDependenciesTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/scripts/CollectScriptCompilationDependenciesTest.kt @@ -10,9 +10,9 @@ import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots -import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.script.KotlinScriptDefinition import org.jetbrains.kotlin.script.loadScriptingPlugin +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPI import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils @@ -66,7 +66,7 @@ class CollectScriptCompilationDependenciesTest : KtUsefulTestCase() { ), hostConfiguration ) - add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) + add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) addKotlinSourceRoot(File(testDataPath, scriptFile).path) diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptCliCompilationTest.kt b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptCliCompilationTest.kt index 1fb8f8bcc5b..3e4c251aff9 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptCliCompilationTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptCliCompilationTest.kt @@ -12,10 +12,10 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector 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.config.JVMConfigurationKeys import org.jetbrains.kotlin.daemon.TestMessageCollector -import org.jetbrains.kotlin.script.KotlinScriptDefinition import org.jetbrains.kotlin.script.loadScriptingPlugin +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPI import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils @@ -82,7 +82,7 @@ class ScriptCliCompilationTest : KtUsefulTestCase() { ), hostConfiguration ) - add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) + add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) } loadScriptingPlugin(this) } diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt index d3f2408454a..04a30e5661f 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTemplateTest.kt @@ -27,12 +27,17 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.daemon.TestMessageCollector import org.jetbrains.kotlin.daemon.assertHasMessage import org.jetbrains.kotlin.daemon.toFile -import org.jetbrains.kotlin.script.* +import org.jetbrains.kotlin.script.loadScriptingPlugin +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.resolve.InvalidScriptResolverAnnotation +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.jetbrains.kotlin.utils.PathUtil +import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import org.junit.Assert import java.io.File import java.io.OutputStream @@ -43,9 +48,6 @@ import java.net.URLClassLoader import java.util.concurrent.Future import kotlin.reflect.KClass import kotlin.script.dependencies.* -import kotlin.script.dependencies.KotlinScriptExternalDependencies -import kotlin.script.dependencies.ScriptContents -import kotlin.script.dependencies.ScriptDependenciesResolver import kotlin.script.experimental.dependencies.* import kotlin.script.experimental.dependencies.DependenciesResolver.ResolveResult import kotlin.script.templates.AcceptedAnnotations @@ -230,7 +232,7 @@ class ScriptTemplateTest : KtUsefulTestCase() { val aClass = compileScript("fib.kts", ScriptWithIntParam::class, messageCollector = messageCollector) Assert.assertNotNull("Compilation failed:\n$messageCollector", aClass) captureOut { - val anObj = tryConstructClassFromStringArgs(aClass!!, listOf("4")) + val anObj = tryConstructClassFromStringArgs(aClass!!, listOf("4")) Assert.assertNotNull(anObj) }.let { assertEqualsTrimmed(NUM_4_LINE + FIB_SCRIPT_OUTPUT_TAIL, it) @@ -324,16 +326,17 @@ class ScriptTemplateTest : KtUsefulTestCase() { messageCollector: MessageCollector = PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false), includeKotlinRuntime: Boolean = true ): Class<*>? = - compileScriptImpl("compiler/testData/script/" + scriptPath, KotlinScriptDefinitionFromAnnotatedTemplate( - scriptTemplate, environment - ), runIsolated, messageCollector, includeKotlinRuntime) + compileScriptImpl("compiler/testData/script/" + scriptPath, + KotlinScriptDefinitionFromAnnotatedTemplate( + scriptTemplate, environment + ), runIsolated, messageCollector, includeKotlinRuntime) private fun compileScriptImpl( - scriptPath: String, - scriptDefinition: KotlinScriptDefinition, - runIsolated: Boolean, - messageCollector: MessageCollector, - includeKotlinRuntime: Boolean + scriptPath: String, + scriptDefinition: KotlinScriptDefinition, + runIsolated: Boolean, + messageCollector: MessageCollector, + includeKotlinRuntime: Boolean ): Class<*>? { val rootDisposable = Disposer.newDisposable() try { @@ -345,7 +348,7 @@ class ScriptTemplateTest : KtUsefulTestCase() { *additionalClasspath) configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) configuration.addKotlinSourceRoot(scriptPath) - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) + configuration.add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) configuration.put(JVMConfigurationKeys.DISABLE_STANDARD_SCRIPT_DEFINITION, true) configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt index 2e0f4e2d65b..87cd157cbbb 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.kt @@ -25,14 +25,15 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler import org.jetbrains.kotlin.codegen.CompilationException import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.StandardScriptDefinition import org.jetbrains.kotlin.script.loadScriptingPlugin -import org.jetbrains.kotlin.script.tryConstructClassFromStringArgs +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase +import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import org.junit.Assert import java.io.File import java.net.URLClassLoader @@ -86,11 +87,11 @@ class ScriptTest : KtUsefulTestCase() { } private fun compileScript( - scriptPath: String, - scriptDefinition: KotlinScriptDefinition, - runIsolated: Boolean = true, - suppressOutput: Boolean = false, - saveClassesDir: File? = null + scriptPath: String, + scriptDefinition: KotlinScriptDefinition, + runIsolated: Boolean = true, + suppressOutput: Boolean = false, + saveClassesDir: File? = null ): Class<*>? { val messageCollector = if (suppressOutput) MessageCollector.NONE @@ -101,7 +102,7 @@ class ScriptTest : KtUsefulTestCase() { val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK) configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) configuration.addKotlinSourceRoot("compiler/testData/script/$scriptPath") - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) + configuration.add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) if (saveClassesDir != null) { configuration.put(JVMConfigurationKeys.OUTPUT_DIRECTORY, saveClassesDir) diff --git a/compiler/tests/org/jetbrains/kotlin/util/ArgsToParamsMatchingTest.kt b/compiler/tests/org/jetbrains/kotlin/util/ArgsToParamsMatchingTest.kt index 1d7842b7289..a16aa059f23 100644 --- a/compiler/tests/org/jetbrains/kotlin/util/ArgsToParamsMatchingTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/util/ArgsToParamsMatchingTest.kt @@ -18,8 +18,8 @@ package org.jetbrains.kotlin.util -import org.jetbrains.kotlin.script.tryCreateCallableMappingFromNamedArgs -import org.jetbrains.kotlin.script.tryCreateCallableMappingFromStringArgs +import org.jetbrains.kotlin.utils.tryCreateCallableMappingFromNamedArgs +import org.jetbrains.kotlin.utils.tryCreateCallableMappingFromStringArgs import org.junit.Assert import org.junit.Test import kotlin.reflect.KParameter @@ -30,22 +30,41 @@ class ArgsToParamsMatchingTest { Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf())) Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2"))) - assertParamMapsEquals(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2", "s", "0.1")), - "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) + assertParamMapsEquals( + tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2", "s", "0.1")), + "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "258", "s", "0.1"))) Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "258", "s", "0"))) Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "258", "sss", "0.1"))) - assertParamMapsEquals(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2", "s", "0.1", "abc", "true", "1", "2", "3")), - "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1, "s" to "abc", "t" to true, "v" to arrayOf(1L, 2L, 3L)) + assertParamMapsEquals( + tryCreateCallableMappingFromStringArgs( + ::foo, + listOf("1", "2", "s", "0.1", "abc", "true", "1", "2", "3") + ), + "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1, "s" to "abc", "t" to true, "v" to arrayOf(1L, 2L, 3L)) Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("i", "b", "c"))) - Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2", "s", "0.1", "abc", "true", "not-a-long"))) + Assert.assertNull( + tryCreateCallableMappingFromStringArgs( + ::foo, + listOf( + "1", + "2", + "s", + "0.1", + "abc", + "true", + "not-a-long" + ) + ) + ) Assert.assertNull(tryCreateCallableMappingFromStringArgs(::charArray, listOf(""))) - assertParamMapsEquals(tryCreateCallableMappingFromStringArgs(::varargStrings, listOf("a", "b", "c")), - "s" to arrayOf("a", "b", "c")) + assertParamMapsEquals( + tryCreateCallableMappingFromStringArgs(::varargStrings, listOf("a", "b", "c")), + "s" to arrayOf("a", "b", "c")) } @Test @@ -53,30 +72,75 @@ class ArgsToParamsMatchingTest { Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf())) Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2))) - assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2.toByte(), null to 's', null to 0.1)), - "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) + assertParamMapsEquals( + tryCreateCallableMappingFromNamedArgs( + ::foo, + listOf(null to 1, null to 2.toByte(), null to 's', null to 0.1) + ), + "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) - assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2.toByte(), "c" to 's', "d" to 0.1)), - "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) + assertParamMapsEquals( + tryCreateCallableMappingFromNamedArgs( + ::foo, + listOf(null to 1, null to 2.toByte(), "c" to 's', "d" to 0.1) + ), + "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) - assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2.toByte(), "d" to 0.1, "c" to 's')), - "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) + assertParamMapsEquals( + tryCreateCallableMappingFromNamedArgs( + ::foo, + listOf(null to 1, null to 2.toByte(), "d" to 0.1, "c" to 's') + ), + "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1) - assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2.toByte(), null to 's', null to 0.1, "v" to arrayOf(1L, 2L, 3L))), - "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1, "v" to arrayOf(1L, 2L, 3L)) + assertParamMapsEquals( + tryCreateCallableMappingFromNamedArgs( + ::foo, + listOf( + null to 1, + null to 2.toByte(), + null to 's', + null to 0.1, + "v" to arrayOf(1L, 2L, 3L) + ) + ), + "i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1, "v" to arrayOf(1L, 2L, 3L)) - Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2.toByte(), null to 's', "x" to 0.1))) // wrong name - Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2.toByte(), "c" to 's', null to 0.1))) // unnamed after named + Assert.assertNull( + tryCreateCallableMappingFromNamedArgs( + ::foo, + listOf( + null to 1, + null to 2.toByte(), + null to 's', + "x" to 0.1 + ) + ) + ) // wrong name + Assert.assertNull( + tryCreateCallableMappingFromNamedArgs( + ::foo, + listOf( + null to 1, + null to 2.toByte(), + "c" to 's', + null to 0.1 + ) + ) + ) // unnamed after named Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to null))) - assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::nullableNumber, listOf(null to null)), - "n" to null) - assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to 42)), - "n" to 42) + assertParamMapsEquals( + tryCreateCallableMappingFromNamedArgs(::nullableNumber, listOf(null to null)), + "n" to null) + assertParamMapsEquals( + tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to 42)), + "n" to 42) Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to "42"))) - assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::varargStrings, listOf("a", "b", "c").map { null to it }), - "s" to arrayOf("a", "b", "c")) + assertParamMapsEquals( + tryCreateCallableMappingFromNamedArgs(::varargStrings, listOf("a", "b", "c").map { null to it }), + "s" to arrayOf("a", "b", "c")) } } diff --git a/compiler/util/build.gradle.kts b/compiler/util/build.gradle.kts index 47e9d95f1cc..c7864e52463 100644 --- a/compiler/util/build.gradle.kts +++ b/compiler/util/build.gradle.kts @@ -7,6 +7,7 @@ plugins { dependencies { compile(kotlinStdlib()) compile(project(":core:deserialization")) + compileOnly(project(":kotlin-reflect-api")) compileOnly(intellijCoreDep()) { includeJars("intellij-core") } compileOnly(intellijDep()) { includeIntellijCoreJarDependencies(project) } compileOnly(jpsStandalone()) { includeJars("jps-model") } diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.kt b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.kt index 0bc89484914..fbd2d1dec2a 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.utils import java.io.File +import java.lang.IllegalStateException interface KotlinPaths { val homePath: File @@ -93,7 +94,7 @@ interface KotlinPaths { Trove4j(PathUtil.TROVE4J_NAME), Compiler(PathUtil.KOTLIN_COMPILER_NAME), ScriptingPlugin(PathUtil.KOTLIN_SCRIPTING_COMPILER_PLUGIN_NAME), - ScriptingCompilerImpl(PathUtil.KOTLIN_SCRIPTING_COMPILER_IMPL_NAME), + ScriptingImpl(PathUtil.KOTLIN_SCRIPTING_COMPILER_IMPL_NAME), ScriptingLib(PathUtil.KOTLIN_SCRIPTING_COMMON_NAME), ScriptingJvmLib(PathUtil.KOTLIN_SCRIPTING_JVM_NAME), CoroutinesCore(PathUtil.KOTLINX_COROUTINES_CORE_NAME), @@ -102,7 +103,7 @@ interface KotlinPaths { enum class ClassPaths(val contents: List = emptyList()) { Empty(), Compiler(Jar.Compiler, Jar.StdLib, Jar.Reflect, Jar.ScriptRuntime, Jar.Trove4j), - CompilerWithScripting(Compiler, Jar.ScriptingPlugin, Jar.ScriptingCompilerImpl, Jar.ScriptingLib, Jar.ScriptingJvmLib) + CompilerWithScripting(Compiler, Jar.ScriptingPlugin, Jar.ScriptingImpl, Jar.ScriptingLib, Jar.ScriptingJvmLib) ; constructor(vararg jars: Jar) : this(jars.asList()) @@ -120,7 +121,12 @@ interface KotlinPaths { fun classPath(vararg jars: Jar): List = classPath(jars.asSequence()) } -abstract class KotlinPathsFromBaseDirectory(val basePath: File) : KotlinPaths { +open class KotlinPathsFromBaseDirectory(val basePath: File) : KotlinPaths { + + override val homePath: File + get() { + throw IllegalStateException("No home path defined") + } override val libPath: File get() = basePath diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/reflectionUtil.kt b/compiler/util/src/org/jetbrains/kotlin/utils/parametersMap.kt similarity index 91% rename from compiler/frontend.script/src/org/jetbrains/kotlin/script/reflectionUtil.kt rename to compiler/util/src/org/jetbrains/kotlin/utils/parametersMap.kt index f92b293a5f1..a3257a16f4b 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/reflectionUtil.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/parametersMap.kt @@ -1,20 +1,9 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.utils import kotlin.reflect.* import kotlin.reflect.full.isSubclassOf @@ -41,13 +30,30 @@ fun tryConstructClassFromStringArgs(clazz: Class<*>, args: List): Any? { } fun tryCreateCallableMapping(callable: KCallable<*>, args: List): Map? = - tryCreateCallableMapping(callable, args.map { NamedArgument(null, it) }.iterator(), AnyArgsConverter()) + tryCreateCallableMapping( + callable, + args.map { NamedArgument(null, it) }.iterator(), + AnyArgsConverter() + ) fun tryCreateCallableMappingFromStringArgs(callable: KCallable<*>, args: List): Map? = - tryCreateCallableMapping(callable, args.map { NamedArgument(null, it) }.iterator(), StringArgsConverter()) + tryCreateCallableMapping( + callable, + args.map { NamedArgument(null, it) }.iterator(), + StringArgsConverter() + ) fun tryCreateCallableMappingFromNamedArgs(callable: KCallable<*>, args: List>): Map? = - tryCreateCallableMapping(callable, args.map { NamedArgument(it.first, it.second) }.iterator(), AnyArgsConverter()) + tryCreateCallableMapping( + callable, + args.map { + NamedArgument( + it.first, + it.second + ) + }.iterator(), + AnyArgsConverter() + ) // ------------------------------------------------ @@ -75,8 +81,10 @@ private fun tryCreateCallableMapping(callable: KCallable<*>, args: Iterator< if (unboundParams.isEmpty()) return null // failed to match: no param left for the arg val arg = argIt.next() when (state) { - ArgsTraversalState.UNNAMED -> if (arg.name != null) state = ArgsTraversalState.NAMED - ArgsTraversalState.NAMED -> if (arg.name == null) state = ArgsTraversalState.TAIL + ArgsTraversalState.UNNAMED -> if (arg.name != null) state = + ArgsTraversalState.NAMED + ArgsTraversalState.NAMED -> if (arg.name == null) state = + ArgsTraversalState.TAIL ArgsTraversalState.TAIL -> if (arg.name != null) throw IllegalArgumentException("Illegal mix of named and unnamed arguments") } // TODO: check the logic of named/unnamed/tail(vararg or lambda) arguments matching diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt index 3dea254ead7..966ad08ac95 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager import org.jetbrains.kotlin.idea.core.script.dependencies.ScriptAdditionalIdeaDependenciesProvider import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import java.io.File import kotlin.script.experimental.dependencies.ScriptDependencies diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt index 021146939de..d40ec104860 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt @@ -37,7 +37,7 @@ import org.jetbrains.kotlin.idea.caches.project.* import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.project.platform -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.utils.Jsr305State object IDELanguageSettingsProvider : LanguageSettingsProvider { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java index ea28fdfedbb..5e2b32bfd80 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java @@ -31,8 +31,8 @@ import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.psi.KtPsiFactoryKt; import org.jetbrains.kotlin.resolve.TargetPlatform; import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform; -import org.jetbrains.kotlin.script.KotlinScriptDefinition; import org.jetbrains.kotlin.scripting.definitions.DefinitionsKt; +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition; public class TargetPlatformDetector { public static final TargetPlatformDetector INSTANCE = new TargetPlatformDetector(); diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/IdeScriptReportSink.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/IdeScriptReportSink.kt index e889ca72418..09f692b869a 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/IdeScriptReportSink.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/IdeScriptReportSink.kt @@ -23,7 +23,7 @@ import com.intellij.openapi.util.Key import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiManager import com.intellij.ui.EditorNotifications -import org.jetbrains.kotlin.script.ScriptReportSink +import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink import kotlin.script.experimental.dependencies.ScriptReport class IdeScriptReportSink(val project: Project) : ScriptReportSink { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt index c68e31e2aa9..ebc989ae6c8 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt @@ -38,12 +38,12 @@ import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.project.SdkInfo import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate -import org.jetbrains.kotlin.script.ScriptDefinitionProvider import org.jetbrains.kotlin.script.ScriptTemplatesProvider +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPI import org.jetbrains.kotlin.scripting.definitions.LazyScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import org.jetbrains.kotlin.utils.addToStdlib.flattenTo diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt index 50aedb39f84..96c32b368cc 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesManager.kt @@ -24,7 +24,7 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.io.URLUtil import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.idea.core.script.dependencies.SyncScriptDependenciesLoader -import org.jetbrains.kotlin.script.ScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition import java.io.File import kotlin.script.experimental.dependencies.ScriptDependencies diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt index e289c30aef7..8dd0dc5ca63 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt @@ -39,9 +39,11 @@ import org.jetbrains.kotlin.idea.core.script.dependencies.SyncScriptDependencies import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.NotNullableUserDataProperty -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition import org.jetbrains.kotlin.scripting.definitions.scriptDefinition +import org.jetbrains.kotlin.scripting.resolve.LegacyResolverWrapper +import kotlin.script.experimental.dependencies.AsyncDependenciesResolver import kotlin.script.experimental.dependencies.ScriptDependencies class ScriptDependenciesUpdater( diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptTemplatesProviderAdapter.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptTemplatesProviderAdapter.kt index be690e2ad04..e795372da3b 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptTemplatesProviderAdapter.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptTemplatesProviderAdapter.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.idea.core.script -import org.jetbrains.kotlin.script.KotlinScriptDefinition import org.jetbrains.kotlin.script.ScriptTemplatesProvider +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition class ScriptTemplatesProviderAdapter(private val templatesProvider: ScriptTemplatesProvider) : ScriptDefinitionContributor { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt index e91e10823d3..8a445d9ac31 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt @@ -15,9 +15,9 @@ import com.intellij.openapi.vfs.VirtualFile import kotlinx.coroutines.Runnable import kotlinx.coroutines.runBlocking import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.asResolveFailure +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition +import org.jetbrains.kotlin.scripting.resolve.asResolveFailure import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.locks.ReentrantReadWriteLock import kotlin.concurrent.write diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt index 203110295af..673f4c6a4cb 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/FromFileAttributeScriptDependenciesLoader.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.core.script.dependencies import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.idea.core.script.scriptDependencies -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import kotlin.script.experimental.dependencies.ScriptDependencies class FromFileAttributeScriptDependenciesLoader(project: Project) : ScriptDependenciesLoader(project) { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt index af0af76b3e0..bd9a2147cb1 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt @@ -22,8 +22,8 @@ import com.intellij.psi.ResolveScopeProvider import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager import org.jetbrains.kotlin.idea.core.script.StandardIdeScriptDefinition -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate class KotlinScriptResolveScopeProvider : ResolveScopeProvider() { companion object { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt index f9ba965b2d9..e97c0b0e091 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/ScriptDependenciesLoader.kt @@ -16,10 +16,10 @@ import com.intellij.util.containers.SLRUMap import org.jetbrains.kotlin.idea.core.script.* import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesCache.Companion.MAX_SCRIPTS_CACHED import org.jetbrains.kotlin.idea.util.application.runWriteAction -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptContentLoader -import org.jetbrains.kotlin.script.ScriptReportSink -import org.jetbrains.kotlin.script.adjustByDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.resolve.ScriptContentLoader +import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink +import org.jetbrains.kotlin.scripting.resolve.adjustByDefinition import kotlin.script.experimental.dependencies.DependenciesResolver abstract class ScriptDependenciesLoader(protected val project: Project) { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt index 9c292bffddc..91c0fde4f53 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/SyncScriptDependenciesLoader.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.core.script.dependencies import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition class SyncScriptDependenciesLoader internal constructor(project: Project) : ScriptDependenciesLoader(project) { override fun loadDependencies(file: VirtualFile, scriptDef: KotlinScriptDefinition) { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt index 473f09695d7..9637924be79 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt @@ -14,7 +14,7 @@ import com.intellij.util.addOptionTag import com.intellij.util.attribute import com.intellij.util.getAttributeBooleanValue import org.jdom.Element -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition @State( name = "KotlinScriptingSettings", diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt index c9918647ea1..35bc8f791ce 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt @@ -27,9 +27,9 @@ import org.gradle.tooling.ProjectConnection import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID import org.jetbrains.kotlin.lexer.KotlinLexer import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.plugins.gradle.config.GradleSettingsListenerAdapter import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper import org.jetbrains.plugins.gradle.settings.DistributionType diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt index 348a296d501..d3a70c64068 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt +++ b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt @@ -71,7 +71,7 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtScript import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil import org.jetbrains.kotlin.resolve.repl.ReplState -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import java.awt.Color import java.awt.Font import java.util.concurrent.CountDownLatch diff --git a/idea/resources/META-INF/plugin-common.xml b/idea/resources/META-INF/plugin-common.xml index 92f28573d37..9675e6bc0cf 100644 --- a/idea/resources/META-INF/plugin-common.xml +++ b/idea/resources/META-INF/plugin-common.xml @@ -272,10 +272,10 @@ - - - () { diff --git a/idea/src/org/jetbrains/kotlin/idea/script/scriptTemplatesFromCompilerSettings.kt b/idea/src/org/jetbrains/kotlin/idea/script/scriptTemplatesFromCompilerSettings.kt index 03498b78f2e..2202e4178ac 100644 --- a/idea/src/org/jetbrains/kotlin/idea/script/scriptTemplatesFromCompilerSettings.kt +++ b/idea/src/org/jetbrains/kotlin/idea/script/scriptTemplatesFromCompilerSettings.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettingsLi import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import java.io.File class ScriptTemplatesFromCompilerSettingsProvider( diff --git a/idea/src/org/jetbrains/kotlin/idea/script/scriptsTemplatesFromDependencies.kt b/idea/src/org/jetbrains/kotlin/idea/script/scriptsTemplatesFromDependencies.kt index 56b58e48403..fa980d8fa7b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/script/scriptsTemplatesFromDependencies.kt +++ b/idea/src/org/jetbrains/kotlin/idea/script/scriptsTemplatesFromDependencies.kt @@ -14,7 +14,7 @@ import com.intellij.openapi.vfs.JarFileSystem import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates import org.jetbrains.kotlin.idea.util.projectStructure.allModules -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_EXTENSION_WITH_DOT import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_PATH import java.io.File diff --git a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt index c398606d917..329fd99a59f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt @@ -45,7 +45,7 @@ import org.jetbrains.kotlin.resolve.scopes.utils.findClassifier import org.jetbrains.kotlin.resolve.scopes.utils.findFunction import org.jetbrains.kotlin.resolve.scopes.utils.findPackage import org.jetbrains.kotlin.resolve.scopes.utils.findVariable -import org.jetbrains.kotlin.script.ScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider import org.jetbrains.kotlin.utils.addIfNotNull import java.util.* diff --git a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/CompilerRunnerUtil.kt b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/CompilerRunnerUtil.kt index 6c736122f53..f603bec80e6 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/CompilerRunnerUtil.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/CompilerRunnerUtil.kt @@ -26,6 +26,7 @@ import java.io.PrintStream import java.lang.ref.SoftReference import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR +import org.jetbrains.kotlin.utils.KotlinPathsFromBaseDirectory import org.jetbrains.kotlin.utils.SmartList object CompilerRunnerUtil { @@ -114,10 +115,9 @@ object CompilerRunnerUtil { environment: JpsCompilerEnvironment, fn: (ClassLoader) -> T ): T? { - val paths = SmartList() - val libPath = getLibPath(environment.kotlinPaths, environment.messageCollector) ?: return null - paths.add(File(libPath, "kotlin-compiler.jar")) + val kotlinPaths = KotlinPathsFromBaseDirectory(libPath) + val paths = kotlinPaths.classPath(KotlinPaths.ClassPaths.CompilerWithScripting).toMutableList() jdkToolsJar?.let { paths.add(it) } val classLoader = getOrCreateClassLoader(environment, paths) diff --git a/libraries/scripting/jvm-host/build.gradle.kts b/libraries/scripting/jvm-host/build.gradle.kts index b9805a7a6eb..b64c4550ebb 100644 --- a/libraries/scripting/jvm-host/build.gradle.kts +++ b/libraries/scripting/jvm-host/build.gradle.kts @@ -12,6 +12,7 @@ dependencies { compile(project(":kotlin-scripting-jvm")) compile(project(":kotlin-script-util")) compile(project(":kotlin-scripting-compiler")) + compile(project(":kotlin-scripting-compiler-impl")) compileOnly(project(":compiler:cli")) compileOnly(project(":kotlin-reflect-api")) compileOnly(intellijCoreDep()) diff --git a/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJvmCompilerImpl.kt b/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJvmCompilerImpl.kt index 63f171ebda3..9f91332c8cc 100644 --- a/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJvmCompilerImpl.kt +++ b/libraries/scripting/jvm-host/src/kotlin/script/experimental/jvmhost/impl/KJvmCompilerImpl.kt @@ -42,10 +42,11 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.NameUtils import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtScript -import org.jetbrains.kotlin.script.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar -import org.jetbrains.kotlin.scripting.compiler.plugin.dependencies.ScriptsCompilationDependencies -import org.jetbrains.kotlin.scripting.compiler.plugin.dependencies.collectScriptsCompilationDependencies +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.dependencies.ScriptsCompilationDependencies +import org.jetbrains.kotlin.scripting.dependencies.collectScriptsCompilationDependencies import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import java.util.* import kotlin.reflect.KClass @@ -101,7 +102,7 @@ class KJvmCompilerImpl(val hostConfiguration: ScriptingHostConfiguration) : KJvm val sourcesWithRefinementsState = SourcesWithRefinedConfigurations(script) kotlinCompilerConfiguration.add( - JVMConfigurationKeys.SCRIPT_DEFINITIONS, + ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, makeScriptDefinition(initialScriptCompilationConfiguration, script, sourcesWithRefinementsState) ) diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts index 2ba2f36d0bc..30db242b00b 100644 --- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts @@ -44,7 +44,7 @@ dependencies { compileOnly(project(":kotlin-compiler-runner")) compileOnly(project(":kotlin-annotation-processing")) compileOnly(project(":kotlin-annotation-processing-gradle")) - compileOnly(project(":kotlin-scripting-compiler")) + compileOnly(project(":kotlin-scripting-compiler-impl")) compile("com.google.code.gson:gson:2.8.5") @@ -62,6 +62,7 @@ dependencies { runtime(projectRuntimeJar(":kotlin-android-extensions")) runtime(projectRuntimeJar(":kotlin-compiler-runner")) runtime(projectRuntimeJar(":kotlin-scripting-compiler-embeddable")) + runtime(projectRuntimeJar(":kotlin-scripting-compiler-impl-embeddable")) runtime(project(":kotlin-reflect")) jarContents(compileOnly(intellijDep()) { diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java index 92c3d300fc6..1c8385effe7 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/ExecuteKotlinScriptMojo.java @@ -48,9 +48,9 @@ import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.load.java.JvmAbi; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.KtScript; -import org.jetbrains.kotlin.script.ReflectionUtilKt; import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar; -import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationExtensionKt; +import org.jetbrains.kotlin.scripting.configuration.ConfigurationKt; +import org.jetbrains.kotlin.utils.ParametersMapKt; import java.io.File; import java.io.FileOutputStream; @@ -187,7 +187,7 @@ public class ExecuteKotlinScriptMojo extends AbstractMojo { configuration.add(CLIConfigurationKeys.CONTENT_ROOTS, new KotlinSourceRoot(scriptFile.getAbsolutePath(), false)); configuration.put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME); - ScriptingCompilerConfigurationExtensionKt.configureScriptDefinitions( + ConfigurationKt.configureScriptDefinitions( scriptTemplates, configuration, this.getClass().getClassLoader(), messageCollector, new HashMap<>() ); @@ -206,7 +206,7 @@ public class ExecuteKotlinScriptMojo extends AbstractMojo { try { Class klass = classLoader.loadClass(nameForScript.asString()); ExecuteKotlinScriptMojo.INSTANCE = this; - if (ReflectionUtilKt.tryConstructClassFromStringArgs(klass, scriptArguments) == null) + if (ParametersMapKt.tryConstructClassFromStringArgs(klass, scriptArguments) == null) throw new ScriptExecutionException(scriptFile, "unable to construct script"); } catch (ClassNotFoundException e) { throw new ScriptExecutionException(scriptFile, "internal error", e); 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 fde4b81f276..c1cf2e99aa5 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 @@ -23,10 +23,10 @@ import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.cli.jvm.config.addJvmSdkRoots 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.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.utils.PathUtil import java.io.File import java.net.URLClassLoader diff --git a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/resolve.kt b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/resolve.kt index d347ad7133f..5b5fe1267e8 100644 --- a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/resolve.kt +++ b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/resolve.kt @@ -16,8 +16,11 @@ package org.jetbrains.kotlin.script.util -import org.jetbrains.kotlin.script.InvalidScriptResolverAnnotation -import org.jetbrains.kotlin.script.util.resolvers.* +import org.jetbrains.kotlin.script.util.resolvers.DirectResolver +import org.jetbrains.kotlin.script.util.resolvers.FlatLibDirectoryResolver +import org.jetbrains.kotlin.script.util.resolvers.MavenResolver +import org.jetbrains.kotlin.script.util.resolvers.Resolver +import org.jetbrains.kotlin.scripting.resolve.InvalidScriptResolverAnnotation import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import java.io.File import java.util.concurrent.Future diff --git a/libraries/tools/kotlin-script-util/src/test/kotlin/org/jetbrains/kotlin/script/util/ScriptUtilIT.kt b/libraries/tools/kotlin-script-util/src/test/kotlin/org/jetbrains/kotlin/script/util/ScriptUtilIT.kt index 1ba8cd97936..9bff86d57ec 100644 --- a/libraries/tools/kotlin-script-util/src/test/kotlin/org/jetbrains/kotlin/script/util/ScriptUtilIT.kt +++ b/libraries/tools/kotlin-script-util/src/test/kotlin/org/jetbrains/kotlin/script/util/ScriptUtilIT.kt @@ -30,12 +30,13 @@ import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.script.util.templates.BindingsScriptTemplateWithLocalResolving import org.jetbrains.kotlin.script.util.templates.StandardArgsScriptTemplateWithLocalResolving import org.jetbrains.kotlin.script.util.templates.StandardArgsScriptTemplateWithMavenResolving import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.utils.PathUtil.getResourcePathForClass import org.junit.Assert import org.junit.Test @@ -125,12 +126,15 @@ done suppressOutput: Boolean = false ): Class<*>? = compileScriptImpl("libraries/tools/kotlin-script-util/src/test/resources/scripts/" + scriptFileName, - KotlinScriptDefinitionFromAnnotatedTemplate(scriptTemplate, environment), suppressOutput) + KotlinScriptDefinitionFromAnnotatedTemplate( + scriptTemplate, + environment + ), suppressOutput) private fun compileScriptImpl( - scriptPath: String, - scriptDefinition: KotlinScriptDefinition, - suppressOutput: Boolean + scriptPath: String, + scriptDefinition: KotlinScriptDefinition, + suppressOutput: Boolean ): Class<*>? { val messageCollector = if (suppressOutput) MessageCollector.NONE @@ -151,7 +155,7 @@ done } } put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script-util-test") - add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) + add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar()) diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt index 42a65c6ca1f..0f91316d860 100644 --- a/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt +++ b/plugins/sam-with-receiver/sam-with-receiver-cli/test/org/jetbrains/kotlin/samWithReceiver/AbstractSamWithReceiverScriptTest.kt @@ -17,9 +17,9 @@ package org.jetbrains.kotlin.samWithReceiver import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest -import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import java.io.File import kotlin.script.extensions.SamWithReceiverAnnotations import kotlin.script.templates.ScriptTemplateDefinition @@ -32,7 +32,7 @@ abstract class AbstractSamWithReceiverScriptTest : AbstractDiagnosticsTest() { override fun createEnvironment(file: File) = super.createEnvironment(file).apply { StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS)) val def = KotlinScriptDefinitionFromAnnotatedTemplate(ScriptForSamWithReceivers::class, emptyMap()) - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, def) + configuration.add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, def) } } diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/configuration/ScriptingConfigurationKeys.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/configuration/ScriptingConfigurationKeys.kt new file mode 100644 index 00000000000..9ce0456e7f9 --- /dev/null +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/configuration/ScriptingConfigurationKeys.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.scripting.configuration + +import org.jetbrains.kotlin.config.CompilerConfigurationKey +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsSource +import java.io.File + +object ScriptingConfigurationKeys { + + val SCRIPT_DEFINITIONS = CompilerConfigurationKey.create>("script definitions") + + val SCRIPT_DEFINITIONS_SOURCES = + CompilerConfigurationKey.create>("script definitions sources") + + val DISABLE_SCRIPTING_PLUGIN_OPTION: CompilerConfigurationKey = + CompilerConfigurationKey.create("Disable scripting plugin") + + val SCRIPT_DEFINITIONS_CLASSES: CompilerConfigurationKey> = + CompilerConfigurationKey.create("Script definition classes") + + val SCRIPT_DEFINITIONS_CLASSPATH: CompilerConfigurationKey> = + CompilerConfigurationKey.create("Additional classpath for the script definitions") + + val DISABLE_SCRIPT_DEFINITIONS_FROM_CLASSPATH_OPTION: CompilerConfigurationKey = + CompilerConfigurationKey.create("Do not extract script definitions from the compilation classpath") + + val LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION: CompilerConfigurationKey> = + CompilerConfigurationKey.create("Script resolver environment") +} \ No newline at end of file diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/configuration/configuration.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/configuration/configuration.kt new file mode 100644 index 00000000000..0084aae33d0 --- /dev/null +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/configuration/configuration.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.scripting.configuration + +import org.jetbrains.kotlin.cli.common.messages.MessageCollector +import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.scripting.definitions.loadScriptTemplatesFromClasspath + +const val KOTLIN_SCRIPTING_PLUGIN_ID = "kotlin.scripting" + +fun configureScriptDefinitions( + scriptTemplates: List, + configuration: CompilerConfiguration, + baseClassloader: ClassLoader, + messageCollector: MessageCollector, + scriptResolverEnv: Map +) { + // TODO: consider using escaping to allow kotlin escaped names in class names + val templatesFromClasspath = loadScriptTemplatesFromClasspath( + scriptTemplates, configuration.jvmClasspathRoots, emptyList(), baseClassloader, scriptResolverEnv, messageCollector + ) + configuration.addAll(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, templatesFromClasspath.toList()) +} + diff --git a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinition.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinition.kt similarity index 78% rename from compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinition.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinition.kt index 66ce08a177b..f92026b19db 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/script/KotlinScriptDefinition.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinition.kt @@ -1,20 +1,9 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.definitions import com.intellij.openapi.fileTypes.LanguageFileType import com.intellij.openapi.util.UserDataHolderBase diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionAdapterFromNewAPI.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionAdapterFromNewAPI.kt index 5b8d8567f3a..920d0d18728 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionAdapterFromNewAPI.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionAdapterFromNewAPI.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.NameUtils import org.jetbrains.kotlin.psi.KtScript -import org.jetbrains.kotlin.script.KotlinScriptDefinition import kotlin.reflect.KClass import kotlin.reflect.KType import kotlin.reflect.full.starProjectedType diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt new file mode 100644 index 00000000000..cf3bd667e25 --- /dev/null +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.scripting.definitions + +import com.intellij.openapi.components.ServiceManager +import com.intellij.openapi.project.Project + +interface ScriptDefinitionProvider { + fun findScriptDefinition(fileName: String): KotlinScriptDefinition? + fun isScript(fileName: String): Boolean + fun getDefaultScriptDefinition(): KotlinScriptDefinition + + fun getKnownFilenameExtensions(): Sequence + + companion object { + fun getInstance(project: Project): ScriptDefinitionProvider? = + ServiceManager.getService(project, ScriptDefinitionProvider::class.java) + } +} + + diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/LazyScriptDefinitionProvider.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/LazyScriptDefinitionProvider.kt index bcc9931d456..04f6851db0b 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/LazyScriptDefinitionProvider.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/LazyScriptDefinitionProvider.kt @@ -7,8 +7,6 @@ package org.jetbrains.kotlin.scripting.definitions import com.intellij.ide.highlighter.JavaFileType import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptDefinitionProvider import java.util.concurrent.locks.ReentrantReadWriteLock import kotlin.concurrent.read import kotlin.concurrent.write diff --git a/compiler/psi/src/org/jetbrains/kotlin/script/ScriptDefinitionsSource.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptDefinitionsSource.kt similarity index 62% rename from compiler/psi/src/org/jetbrains/kotlin/script/ScriptDefinitionsSource.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptDefinitionsSource.kt index 251cfb2c6de..ef7583ad23f 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/script/ScriptDefinitionsSource.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptDefinitionsSource.kt @@ -1,9 +1,9 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.definitions interface ScriptDefinitionsSource { diff --git a/compiler/psi/src/org/jetbrains/kotlin/script/ScriptDependenciesProvider.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptDependenciesProvider.kt similarity index 51% rename from compiler/psi/src/org/jetbrains/kotlin/script/ScriptDependenciesProvider.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptDependenciesProvider.kt index 19e94d17616..99a3da0a3fa 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/script/ScriptDependenciesProvider.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptDependenciesProvider.kt @@ -1,20 +1,9 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.definitions import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.project.Project diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptPriorities.java b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptPriorities.java new file mode 100644 index 00000000000..8c90ff0a21b --- /dev/null +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptPriorities.java @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.scripting.definitions; + +import com.intellij.openapi.util.Key; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.psi.KtScript; + +public class ScriptPriorities { + + public static final Key PRIORITY_KEY = Key.create(KtScript.class.getName() + ".priority"); + + public static int getScriptPriority(@NotNull KtScript script) { + Integer priority = script.getUserData(PRIORITY_KEY); + return priority == null ? 0 : priority; + } +} diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt index 827bfc220c3..b32c55964ad 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt @@ -7,15 +7,12 @@ package org.jetbrains.kotlin.scripting.definitions import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate -import org.jetbrains.kotlin.script.ScriptDefinitionsSource +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import java.io.File import java.io.IOException import java.net.URLClassLoader import java.util.jar.JarFile -import kotlin.coroutines.experimental.buildSequence import kotlin.script.experimental.annotations.KotlinScript import kotlin.script.experimental.api.KotlinType import kotlin.script.experimental.host.createCompilationConfigurationFromTemplate @@ -46,7 +43,7 @@ fun discoverScriptTemplatesInClasspath( baseClassLoader: ClassLoader, scriptResolverEnv: Map, messageCollector: MessageCollector -): Sequence = buildSequence { +): Sequence = sequence { // TODO: try to find a way to reduce classpath (and classloader) to minimal one needed to load script definition and its dependencies val loader = LazyClasspathWithClassLoader(baseClassLoader) { classpath } @@ -136,7 +133,7 @@ fun loadScriptTemplatesFromClasspath( messageCollector: MessageCollector ): Sequence = if (scriptTemplates.isEmpty()) emptySequence() - else buildSequence { + else sequence { // trying the direct classloading from baseClassloader first, since this is the most performant variant val (initialLoadedDefinitions, initialNotFoundTemplates) = scriptTemplates.partitionMapNotNull { loadScriptDefinition( diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt index bce7b1d6196..c4f59b783e4 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/definitions.kt @@ -13,8 +13,6 @@ import com.intellij.psi.PsiFile import com.intellij.psi.PsiManager import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptDefinitionProvider fun PsiFile.scriptDefinition(): KotlinScriptDefinition? { // Do not use psiFile.script, see comments in findScriptDefinition diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/dependencies/ScriptsCompilationDependencies.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/dependencies/ScriptsCompilationDependencies.kt similarity index 94% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/dependencies/ScriptsCompilationDependencies.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/dependencies/ScriptsCompilationDependencies.kt index 4bd209ac61b..e7ba3ffb79f 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/dependencies/ScriptsCompilationDependencies.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/dependencies/ScriptsCompilationDependencies.kt @@ -3,16 +3,15 @@ * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.scripting.compiler.plugin.dependencies +package org.jetbrains.kotlin.scripting.dependencies import com.intellij.openapi.project.Project import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.createSourceFilesFromSourceRoots import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.script.ScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider import java.io.File data class ScriptsCompilationDependencies( diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JvmStandardReplFactoryExtension.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/JvmStandardReplFactoryExtension.kt similarity index 89% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JvmStandardReplFactoryExtension.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/JvmStandardReplFactoryExtension.kt index 9999c81b1f6..c4055eeb359 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JvmStandardReplFactoryExtension.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/JvmStandardReplFactoryExtension.kt @@ -3,16 +3,16 @@ * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.scripting.compiler.plugin +package org.jetbrains.kotlin.scripting.extensions import com.intellij.core.JavaCoreProjectEnvironment import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.extensions.ReplFactoryExtension import org.jetbrains.kotlin.cli.common.repl.ReplCompiler import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler +import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import java.io.File import java.net.URLClassLoader diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/ScriptExtraImportsProviderExtension.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/ScriptExtraImportsProviderExtension.kt index 2a7e2819c2a..7c816b32cea 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/ScriptExtraImportsProviderExtension.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/ScriptExtraImportsProviderExtension.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtImportInfo import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension -import org.jetbrains.kotlin.script.ScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider class ScriptExtraImportsProviderExtension : ExtraImportsProviderExtension { diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCollectAdditionalSourcesExtension.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/ScriptingCollectAdditionalSourcesExtension.kt similarity index 86% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCollectAdditionalSourcesExtension.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/ScriptingCollectAdditionalSourcesExtension.kt index 3e6ef3bbf0f..d6cf530b613 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCollectAdditionalSourcesExtension.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/extensions/ScriptingCollectAdditionalSourcesExtension.kt @@ -3,15 +3,15 @@ * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.scripting.compiler.plugin +package org.jetbrains.kotlin.scripting.extensions import com.intellij.mock.MockProject import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.scripting.compiler.plugin.dependencies.collectScriptsCompilationDependencies import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.extensions.CollectAdditionalSourcesExtension import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.scripting.dependencies.collectScriptsCompilationDependencies class ScriptingCollectAdditionalSourcesExtension(val project: MockProject) : CollectAdditionalSourcesExtension { override fun collectAdditionalSourcesAndUpdateConfiguration( diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplChecker.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplChecker.kt index 0db174361ab..ded1fadd27b 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplChecker.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplChecker.kt @@ -23,7 +23,8 @@ import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.parsing.KotlinParserDefinition import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.repl.messages.ConsoleDiagnosticMessageHolder import kotlin.concurrent.write @@ -38,7 +39,7 @@ open class GenericReplChecker( internal val environment = run { compilerConfiguration.apply { - add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) + add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplCompiler.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplCompiler.kt index eb880ec5ce6..0ef94ca3e90 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplCompiler.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/GenericReplCompiler.kt @@ -18,8 +18,8 @@ import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.descriptors.ScriptDescriptor import org.jetbrains.kotlin.renderer.DescriptorRenderer -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider import java.io.File import java.util.concurrent.locks.ReentrantReadWriteLock import kotlin.concurrent.write diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplCodeAnalyzer.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplCodeAnalyzer.kt index 317c4817729..356e1321b12 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplCodeAnalyzer.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplCodeAnalyzer.kt @@ -32,7 +32,7 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.* import org.jetbrains.kotlin.resolve.scopes.ImportingScope import org.jetbrains.kotlin.resolve.scopes.utils.parentsWithSelf import org.jetbrains.kotlin.resolve.scopes.utils.replaceImportingScopes -import org.jetbrains.kotlin.script.ScriptPriorities +import org.jetbrains.kotlin.scripting.definitions.ScriptPriorities class ReplCodeAnalyzer(environment: KotlinCoreEnvironment) { private val topDownAnalysisContext: TopDownAnalysisContext diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplInterpreter.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplInterpreter.kt index 18cf70d3943..87b5112c246 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplInterpreter.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/repl/ReplInterpreter.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.cli.jvm.config.JvmModulePathRoot import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.script.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.repl.configuration.ReplConfiguration import java.io.PrintWriter import java.net.URLClassLoader diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/AsyncDependencyResolverWrapper.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/AsyncDependencyResolverWrapper.kt similarity index 61% rename from compiler/frontend.script/src/org/jetbrains/kotlin/script/AsyncDependencyResolverWrapper.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/AsyncDependencyResolverWrapper.kt index b550872aa09..fe3e63b43f7 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/AsyncDependencyResolverWrapper.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/AsyncDependencyResolverWrapper.kt @@ -1,26 +1,15 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.resolve import kotlinx.coroutines.runBlocking -import kotlin.script.experimental.dependencies.DependenciesResolver import kotlin.script.dependencies.Environment import kotlin.script.dependencies.ScriptContents import kotlin.script.experimental.dependencies.AsyncDependenciesResolver +import kotlin.script.experimental.dependencies.DependenciesResolver // wraps AsyncDependenciesResolver to provide implementation for synchronous DependenciesResolver::resolve class AsyncDependencyResolverWrapper( diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/KotlinScriptDefinitionFromAnnotatedTemplate.kt similarity index 91% rename from compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/KotlinScriptDefinitionFromAnnotatedTemplate.kt index ed11f1d165a..bbb27ae92b8 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/KotlinScriptDefinitionFromAnnotatedTemplate.kt @@ -1,27 +1,17 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ @file:Suppress("DEPRECATION") -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.resolve import com.intellij.openapi.diagnostic.Logger import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.NameUtils import org.jetbrains.kotlin.psi.KtScript +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull import java.io.File import kotlin.reflect.KClass @@ -32,9 +22,11 @@ import kotlin.reflect.full.primaryConstructor import kotlin.script.dependencies.ScriptDependenciesResolver import kotlin.script.experimental.dependencies.AsyncDependenciesResolver import kotlin.script.experimental.dependencies.DependenciesResolver -import kotlin.script.experimental.location.ScriptExpectedLocations import kotlin.script.experimental.location.ScriptExpectedLocation -import kotlin.script.templates.* +import kotlin.script.experimental.location.ScriptExpectedLocations +import kotlin.script.templates.AcceptedAnnotations +import kotlin.script.templates.DEFAULT_SCRIPT_FILE_PATTERN +import kotlin.script.templates.ScriptTemplateDefinition open class KotlinScriptDefinitionFromAnnotatedTemplate( template: KClass, diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/LazyScriptDescriptor.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/LazyScriptDescriptor.kt index fbdd6c76c1e..c4501516f0e 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/LazyScriptDescriptor.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/LazyScriptDescriptor.kt @@ -33,9 +33,9 @@ import org.jetbrains.kotlin.resolve.scopes.LexicalScope import org.jetbrains.kotlin.resolve.scopes.LexicalScopeImpl import org.jetbrains.kotlin.resolve.scopes.LexicalScopeKind import org.jetbrains.kotlin.resolve.source.toSourceElement -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptDependenciesProvider -import org.jetbrains.kotlin.script.ScriptPriorities +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptPriorities import org.jetbrains.kotlin.scripting.definitions.scriptDefinitionByFileName import org.jetbrains.kotlin.types.TypeSubstitutor import org.jetbrains.kotlin.types.typeUtil.isNothing diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptContentLoader.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/ScriptContentLoader.kt similarity index 80% rename from compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptContentLoader.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/ScriptContentLoader.kt index d65b3287351..26fee3b94dd 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptContentLoader.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/ScriptContentLoader.kt @@ -1,20 +1,9 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.resolve import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project @@ -23,6 +12,7 @@ import com.intellij.psi.PsiFile import com.intellij.psi.PsiManager import org.jetbrains.kotlin.psi.KtAnnotationEntry import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import java.io.File import kotlin.reflect.KClass import kotlin.script.dependencies.ScriptContents @@ -33,7 +23,9 @@ import kotlin.script.experimental.dependencies.ScriptReport class ScriptContentLoader(private val project: Project) { fun getScriptContents(scriptDefinition: KotlinScriptDefinition, file: VirtualFile) - = BasicScriptContents(file, getAnnotations = { loadAnnotations(scriptDefinition, file) }) + = BasicScriptContents( + file, + getAnnotations = { loadAnnotations(scriptDefinition, file) }) private fun loadAnnotations(scriptDefinition: KotlinScriptDefinition, file: VirtualFile): List { val classLoader = scriptDefinition.template.java.classLoader @@ -45,7 +37,11 @@ class ScriptContentLoader(private val project: Project) { scriptDefinition.acceptedAnnotations.find { ann -> psiAnn.typeName.let { it == ann.simpleName || it == ann.qualifiedName } }?.let { - constructAnnotation(psiAnn, classLoader.loadClass(it.qualifiedName).kotlin as KClass, project) + constructAnnotation( + psiAnn, + classLoader.loadClass(it.qualifiedName).kotlin as KClass, + project + ) } } } @@ -65,8 +61,8 @@ class ScriptContentLoader(private val project: Project) { } fun loadContentsAndResolveDependencies( - scriptDef: KotlinScriptDefinition, - file: VirtualFile + scriptDef: KotlinScriptDefinition, + file: VirtualFile ): DependenciesResolver.ResolveResult { val scriptContents = getScriptContents(scriptDef, file) val environment = getEnvironment(scriptDef) diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptReportSink.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/ScriptReportSink.kt similarity index 94% rename from compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptReportSink.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/ScriptReportSink.kt index 5a2041d11c7..e9e1e70068d 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/ScriptReportSink.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/ScriptReportSink.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.resolve import com.intellij.openapi.vfs.VirtualFile import kotlin.script.experimental.dependencies.ScriptReport diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/legacyWrappers.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/legacyWrappers.kt index a1f209ac93f..cd351d21cb1 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/legacyWrappers.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/legacyWrappers.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.scripting.resolve -import org.jetbrains.kotlin.script.DependencyResolverWrapper import java.io.File import kotlin.script.dependencies.Environment import kotlin.script.dependencies.ScriptDependenciesResolver diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptAnnotationsPreprocessing.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/scriptAnnotationsPreprocessing.kt similarity index 82% rename from compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptAnnotationsPreprocessing.kt rename to plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/scriptAnnotationsPreprocessing.kt index d4d111db7cf..ba5d12bb85e 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/scriptAnnotationsPreprocessing.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/resolve/scriptAnnotationsPreprocessing.kt @@ -1,20 +1,9 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.script +package org.jetbrains.kotlin.scripting.resolve import com.intellij.openapi.project.Project import org.jetbrains.kotlin.builtins.DefaultBuiltIns @@ -27,6 +16,7 @@ import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.types.TypeUtils +import org.jetbrains.kotlin.utils.tryCreateCallableMappingFromNamedArgs import kotlin.reflect.KClass import kotlin.reflect.KParameter import kotlin.reflect.full.primaryConstructor diff --git a/plugins/scripting/scripting-compiler/build.gradle.kts b/plugins/scripting/scripting-compiler/build.gradle.kts index d5132d40008..614940c6636 100644 --- a/plugins/scripting/scripting-compiler/build.gradle.kts +++ b/plugins/scripting/scripting-compiler/build.gradle.kts @@ -17,6 +17,7 @@ dependencies { compile(project(":kotlin-scripting-compiler-impl")) compile(kotlinStdlib()) compileOnly(project(":kotlin-reflect-api")) + compile(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } compileOnly(intellijCoreDep()) { includeJars("intellij-core") } testCompile(project(":compiler:frontend")) @@ -37,8 +38,8 @@ sourceSets { tasks.withType> { kotlinOptions { - languageVersion = "1.2" - apiVersion = "1.2" + languageVersion = "1.3" + apiVersion = "1.3" freeCompilerArgs += "-Xskip-metadata-version-check" } } diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JvmCliScriptEvaluationExtension.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JvmCliScriptEvaluationExtension.kt index 51d9ddb2370..9d2c0471644 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JvmCliScriptEvaluationExtension.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/JvmCliScriptEvaluationExtension.kt @@ -19,8 +19,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.script.ScriptDefinitionProvider -import org.jetbrains.kotlin.script.StandardScriptDefinition +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition import java.io.File class JvmCliScriptEvaluationExtension : ScriptEvaluationExtension { @@ -42,7 +43,7 @@ class JvmCliScriptEvaluationExtension : ScriptEvaluationExtension { val scriptFile = File(sourcePath) if (scriptFile.isDirectory || !scriptDefinitionProvider.isScript(scriptFile.name)) { val extensionHint = - if (configuration.get(JVMConfigurationKeys.SCRIPT_DEFINITIONS) == listOf(StandardScriptDefinition)) " (.kts)" + if (configuration.get(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS) == listOf(StandardScriptDefinition)) " (.kts)" else "" messageCollector.report(ERROR, "Specify path to the script file$extensionHint as the first argument") return COMPILATION_ERROR diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCommandLineProcessor.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCommandLineProcessor.kt index ef2b4762fa6..93ab56611d1 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCommandLineProcessor.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCommandLineProcessor.kt @@ -6,14 +6,15 @@ package org.jetbrains.kotlin.scripting.compiler.plugin import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption -import java.io.File import org.jetbrains.kotlin.compiler.plugin.CliOption import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.CompilerConfigurationKey import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.scripting.KOTLIN_SCRIPTING_PLUGIN_ID +import org.jetbrains.kotlin.scripting.configuration.KOTLIN_SCRIPTING_PLUGIN_ID +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import java.io.File object ScriptingConfigurationKeys { val DISABLE_SCRIPTING_PLUGIN_OPTION: CompilerConfigurationKey = @@ -63,7 +64,6 @@ class ScriptingCommandLineProcessor : CommandLineProcessor { "Script resolver environment in key-value pairs (the value could be quoted and escaped)", required = false, allowMultipleOccurrences = true ) - } override val pluginId = KOTLIN_SCRIPTING_PLUGIN_ID @@ -87,9 +87,9 @@ class ScriptingCommandLineProcessor : CommandLineProcessor { } SCRIPT_DEFINITIONS_OPTION, LEGACY_SCRIPT_TEMPLATES_OPTION -> { - val currentDefs = configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS).toMutableList() + val currentDefs = configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_CLASSES).toMutableList() currentDefs.addAll(value.split(',')) - configuration.put(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, currentDefs) + configuration.put(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_CLASSES, currentDefs) } SCRIPT_DEFINITIONS_CLASSPATH_OPTION -> { val currentCP = configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_CLASSPATH).toMutableList() diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerConfigurationExtension.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerConfigurationExtension.kt index 85a1538d3df..0ebd0dd6b4a 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerConfigurationExtension.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerConfigurationExtension.kt @@ -15,11 +15,12 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.extensions.CompilerConfigurationExtension import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.script.ScriptDefinitionProvider -import org.jetbrains.kotlin.script.StandardScriptDefinition +import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.configuration.configureScriptDefinitions +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsFromClasspathDiscoverySource -import org.jetbrains.kotlin.scripting.definitions.loadScriptTemplatesFromClasspath -import org.jetbrains.kotlin.scripting.legacy.CliScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition import java.io.File class ScriptingCompilerConfigurationExtension(val project: MockProject) : CompilerConfigurationExtension { @@ -39,7 +40,7 @@ class ScriptingCompilerConfigurationExtension(val project: MockProject) : Compil } val scriptResolverEnv = configuration.getMap(ScriptingConfigurationKeys.LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION) - val explicitScriptDefinitions = configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS) + val explicitScriptDefinitions = configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_CLASSES) if (explicitScriptDefinitions.isNotEmpty()) { configureScriptDefinitions( @@ -52,13 +53,16 @@ class ScriptingCompilerConfigurationExtension(val project: MockProject) : Compil } // If not disabled explicitly, we should always support at least the standard script definition if (!configuration.getBoolean(JVMConfigurationKeys.DISABLE_STANDARD_SCRIPT_DEFINITION) && - !configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS).contains(StandardScriptDefinition) + !configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS).contains(StandardScriptDefinition) ) { - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition) + configuration.add( + ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, + StandardScriptDefinition + ) } configuration.add( - JVMConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES, + ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES, ScriptDefinitionsFromClasspathDiscoverySource( configuration.jvmClasspathRoots, configuration.get(ScriptingConfigurationKeys.LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION) ?: emptyMap(), @@ -69,15 +73,18 @@ class ScriptingCompilerConfigurationExtension(val project: MockProject) : Compil // If not disabled explicitly, we should always support at least the standard script definition if (!configuration.getBoolean(JVMConfigurationKeys.DISABLE_STANDARD_SCRIPT_DEFINITION) && - StandardScriptDefinition !in configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS) + StandardScriptDefinition !in configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS) ) { - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition) + configuration.add( + ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, + StandardScriptDefinition + ) } val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project) as? CliScriptDefinitionProvider if (scriptDefinitionProvider != null) { - scriptDefinitionProvider.setScriptDefinitionsSources(configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES)) - scriptDefinitionProvider.setScriptDefinitions(configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS)) + scriptDefinitionProvider.setScriptDefinitionsSources(configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES)) + scriptDefinitionProvider.setScriptDefinitions(configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS)) // Register new file extensions val fileTypeRegistry = FileTypeRegistry.getInstance() as CoreFileTypeRegistry @@ -92,17 +99,3 @@ class ScriptingCompilerConfigurationExtension(val project: MockProject) : Compil } } -fun configureScriptDefinitions( - scriptTemplates: List, - configuration: CompilerConfiguration, - baseClassloader: ClassLoader, - messageCollector: MessageCollector, - scriptResolverEnv: Map -) { - // TODO: consider using escaping to allow kotlin escaped names in class names - val templatesFromClasspath = loadScriptTemplatesFromClasspath( - scriptTemplates, configuration.jvmClasspathRoots, emptyList(), baseClassloader, scriptResolverEnv, messageCollector - ) - configuration.addAll(JVMConfigurationKeys.SCRIPT_DEFINITIONS, templatesFromClasspath.toList()) -} - diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptDefinitionProvider.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptDefinitionProvider.kt similarity index 84% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptDefinitionProvider.kt rename to plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptDefinitionProvider.kt index c13a5ded069..f1f8215b98e 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptDefinitionProvider.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptDefinitionProvider.kt @@ -3,12 +3,12 @@ * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.scripting.legacy +package org.jetbrains.kotlin.scripting.compiler.plugin.definitions -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptDefinitionsSource -import org.jetbrains.kotlin.script.StandardScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.LazyScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsSource +import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition import kotlin.concurrent.write open class CliScriptDefinitionProvider : LazyScriptDefinitionProvider() { diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptDependenciesProvider.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptDependenciesProvider.kt similarity index 68% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptDependenciesProvider.kt rename to plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptDependenciesProvider.kt index 3b88cc86e4d..2746b0c2c08 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptDependenciesProvider.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptDependenciesProvider.kt @@ -1,30 +1,19 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.scripting.legacy +package org.jetbrains.kotlin.scripting.compiler.plugin.definitions import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile -import org.jetbrains.kotlin.script.ScriptContentLoader -import org.jetbrains.kotlin.script.ScriptDependenciesProvider -import org.jetbrains.kotlin.script.ScriptReportSink -import org.jetbrains.kotlin.script.adjustByDefinition +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition +import org.jetbrains.kotlin.scripting.resolve.ScriptContentLoader +import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink +import org.jetbrains.kotlin.scripting.resolve.adjustByDefinition import java.io.File import java.util.concurrent.locks.ReentrantReadWriteLock import kotlin.concurrent.read diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptReportSink.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptReportSink.kt similarity index 89% rename from plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptReportSink.kt rename to plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptReportSink.kt index 4fb6b470cf2..ea0f312cf8f 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/legacy/CliScriptReportSink.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/definitions/CliScriptReportSink.kt @@ -3,16 +3,17 @@ * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.scripting.legacy +package org.jetbrains.kotlin.scripting.compiler.plugin.definitions import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.script.ScriptReportSink +import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink import kotlin.script.experimental.dependencies.ScriptReport -internal class CliScriptReportSink(private val messageCollector: MessageCollector) : ScriptReportSink { +internal class CliScriptReportSink(private val messageCollector: MessageCollector) : + ScriptReportSink { override fun attachReports(scriptFile: VirtualFile, reports: List) { reports.forEach { messageCollector.report(it.severity.convertSeverity(), it.message, location(scriptFile, it.position)) diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt index 7d1f463c7d4..da99d4eecb6 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/pluginRegisrar.kt @@ -17,14 +17,13 @@ import org.jetbrains.kotlin.extensions.CompilerConfigurationExtension import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension -import org.jetbrains.kotlin.script.ScriptDefinitionProvider -import org.jetbrains.kotlin.script.ScriptDependenciesProvider -import org.jetbrains.kotlin.script.ScriptReportSink -import org.jetbrains.kotlin.scripting.legacy.CliScriptDefinitionProvider -import org.jetbrains.kotlin.scripting.legacy.CliScriptDependenciesProvider -import org.jetbrains.kotlin.scripting.legacy.CliScriptReportSink -import org.jetbrains.kotlin.scripting.extensions.ScriptExtraImportsProviderExtension -import org.jetbrains.kotlin.scripting.extensions.ScriptingResolveExtension +import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptReportSink +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider +import org.jetbrains.kotlin.scripting.extensions.* +import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink private fun ProjectExtensionDescriptor.registerExtensionIfRequired(project: MockProject, extension: T) { try { diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptProviderTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptProviderTest.kt similarity index 79% rename from compiler/tests/org/jetbrains/kotlin/scripts/ScriptProviderTest.kt rename to plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptProviderTest.kt index 16d54f2a338..10942c76226 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptProviderTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptProviderTest.kt @@ -1,13 +1,13 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.scripts +package org.jetbrains.kotlin.scripting.compiler.plugin -import org.jetbrains.kotlin.script.KotlinScriptDefinition -import org.jetbrains.kotlin.script.ScriptDefinitionsSource -import org.jetbrains.kotlin.scripting.legacy.CliScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition +import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsSource import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.junit.Assert import org.junit.Test @@ -24,7 +24,13 @@ class ScriptProviderTest : KtUsefulTestCase() { val shadedDef = FakeScriptDefinition(".x.kts") val provider = TestCliScriptDefinitionProvider(standardDef).apply { setScriptDefinitions(listOf(shadedDef, standardDef)) - setScriptDefinitionsSources(listOf(TestScriptDefinitionSource(genDefCounter, ".y.kts", ".x.kts"))) + setScriptDefinitionsSources(listOf( + TestScriptDefinitionSource( + genDefCounter, + ".y.kts", + ".x.kts" + ) + )) } Assert.assertEquals(0, genDefCounter.get()) @@ -68,7 +74,11 @@ private open class FakeScriptDefinition(val suffix: String = ".kts") : KotlinScr private class TestScriptDefinitionSource(val counter: AtomicInteger, val defGens: Iterable<() -> FakeScriptDefinition>) : ScriptDefinitionsSource { - constructor(counter: AtomicInteger, vararg suffixes: String) : this(counter, suffixes.map { { FakeScriptDefinition(it) } }) + constructor(counter: AtomicInteger, vararg suffixes: String) : this(counter, suffixes.map { { + FakeScriptDefinition( + it + ) + } }) override val definitions: Sequence = sequence { for (gen in defGens) { diff --git a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt index 1cca5984d94..11d66ed29da 100644 --- a/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt +++ b/plugins/scripting/scripting-compiler/tests/org/jetbrains/kotlin/scripting/compiler/plugin/ScriptingCompilerPluginTest.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.JVMConfigurationKeys +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_PATH import org.jetbrains.kotlin.scripting.definitions.discoverScriptTemplatesInClasspath import org.jetbrains.kotlin.scripting.definitions.loadScriptTemplatesFromClasspath @@ -166,7 +167,7 @@ class ScriptingCompilerPluginTest : TestCaseWithTmpdir() { addJvmClasspathRoots(runtimeClasspath) addJvmClasspathRoots(scriptingClasspath) addJvmClasspathRoot(defsOut) - addAll(JVMConfigurationKeys.SCRIPT_DEFINITIONS, lazyDefs) + addAll(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, lazyDefs) } val res = KotlinToJVMBytecodeCompiler.compileBunchOfSources(scriptsCompileEnv) diff --git a/plugins/scripting/scripting-idea/build.gradle.kts b/plugins/scripting/scripting-idea/build.gradle.kts index cf205b56d82..a3df6b0cd78 100644 --- a/plugins/scripting/scripting-idea/build.gradle.kts +++ b/plugins/scripting/scripting-idea/build.gradle.kts @@ -7,6 +7,7 @@ plugins { } dependencies { + compileOnly(project(":kotlin-scripting-compiler")) compile(project(":kotlin-scripting-compiler-impl")) compile(project(":kotlin-scripting-intellij")) compileOnly(project(":idea:idea-gradle")) @@ -20,3 +21,6 @@ sourceSets { } runtimeJar() + +ideaPlugin() + diff --git a/plugins/scripting/scripting-idea/src/org/jetbrains/kotlin/scripting/idea/plugin/ScriptingGradleProjectImportHandler.kt b/plugins/scripting/scripting-idea/src/org/jetbrains/kotlin/scripting/idea/plugin/ScriptingGradleProjectImportHandler.kt index e03d6b334bc..6d6f91233d4 100644 --- a/plugins/scripting/scripting-idea/src/org/jetbrains/kotlin/scripting/idea/plugin/ScriptingGradleProjectImportHandler.kt +++ b/plugins/scripting/scripting-idea/src/org/jetbrains/kotlin/scripting/idea/plugin/ScriptingGradleProjectImportHandler.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.scripting.idea.plugin import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.idea.configuration.GradleProjectImportHandler import org.jetbrains.kotlin.idea.facet.KotlinFacet -import org.jetbrains.kotlin.scripting.KOTLIN_SCRIPTING_PLUGIN_ID +import org.jetbrains.kotlin.scripting.configuration.KOTLIN_SCRIPTING_PLUGIN_ID import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData import java.io.File diff --git a/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt b/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt index 87aaf5ca3d1..bbda251fdd0 100644 --- a/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt +++ b/plugins/source-sections/source-sections-compiler/tests/org/jetbrains/kotlin/sourceSections/SourceSectionsTest.kt @@ -27,19 +27,19 @@ 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.compiler.plugin.ComponentRegistrar -import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.daemon.client.DaemonReportingTargets import org.jetbrains.kotlin.daemon.client.KotlinCompilerClient import org.jetbrains.kotlin.daemon.common.* -import org.jetbrains.kotlin.script.StandardScriptDefinition import org.jetbrains.kotlin.script.loadScriptingPlugin -import org.jetbrains.kotlin.script.tryConstructClassFromStringArgs +import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys +import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestCaseWithTmpdir import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.utils.KotlinPaths import org.jetbrains.kotlin.utils.PathUtil +import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs import java.io.* import java.lang.management.ManagementFactory import java.net.URLClassLoader @@ -72,7 +72,7 @@ class SourceSectionsTest : TestCaseWithTmpdir() { CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false) ) - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition) + configuration.add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition) if (withSourceSectionsPlugin) { configuration.addAll(SourceSectionsConfigurationKeys.SECTIONS_OPTION, TEST_ALLOWED_SECTIONS) configuration.add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, SourceSectionsComponentRegistrar()) diff --git a/ultimate/build.gradle.kts b/ultimate/build.gradle.kts index 435bb523bae..e8fa6e993a0 100644 --- a/ultimate/build.gradle.kts +++ b/ultimate/build.gradle.kts @@ -1,6 +1,5 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import org.gradle.jvm.tasks.Jar description = "Kotlin IDEA Ultimate plugin"