Move scripting support classes to the scripting compiler impl module
This commit is contained in:
@@ -52,7 +52,7 @@ dependencies {
|
|||||||
testCompile(projectTests(":generators:test-generator"))
|
testCompile(projectTests(":generators:test-generator"))
|
||||||
testCompile(project(":compiler:ir.ir2cfg"))
|
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(":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"))
|
testCompile(project(":kotlin-script-util"))
|
||||||
testCompileOnly(projectRuntimeJar(":kotlin-daemon-client"))
|
testCompileOnly(projectRuntimeJar(":kotlin-daemon-client"))
|
||||||
testCompileOnly(project(":kotlin-reflect-api"))
|
testCompileOnly(project(":kotlin-reflect-api"))
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.cli.common.repl
|
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 java.lang.reflect.Proxy
|
||||||
import javax.script.Invocable
|
import javax.script.Invocable
|
||||||
import javax.script.ScriptException
|
import javax.script.ScriptException
|
||||||
|
|||||||
+1
-1
@@ -56,8 +56,8 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
|
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
|
||||||
import org.jetbrains.kotlin.script.tryConstructClassFromStringArgs
|
|
||||||
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
|
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
|
||||||
|
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.reflect.InvocationTargetException
|
import java.lang.reflect.InvocationTargetException
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ package org.jetbrains.kotlin.config;
|
|||||||
import org.jetbrains.kotlin.load.java.JavaClassesTracker;
|
import org.jetbrains.kotlin.load.java.JavaClassesTracker;
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents;
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents;
|
||||||
import org.jetbrains.kotlin.modules.Module;
|
import org.jetbrains.kotlin.modules.Module;
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition;
|
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionsSource;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -42,12 +40,6 @@ public class JVMConfigurationKeys {
|
|||||||
public static final CompilerConfigurationKey<Boolean> NO_JDK =
|
public static final CompilerConfigurationKey<Boolean> NO_JDK =
|
||||||
CompilerConfigurationKey.create("no jdk");
|
CompilerConfigurationKey.create("no jdk");
|
||||||
|
|
||||||
public static final CompilerConfigurationKey<List<KotlinScriptDefinition>> SCRIPT_DEFINITIONS =
|
|
||||||
CompilerConfigurationKey.create("script definitions");
|
|
||||||
|
|
||||||
public static final CompilerConfigurationKey<List<ScriptDefinitionsSource>> SCRIPT_DEFINITIONS_SOURCES =
|
|
||||||
CompilerConfigurationKey.create("script definitions sources");
|
|
||||||
|
|
||||||
public static final CompilerConfigurationKey<Boolean> DISABLE_STANDARD_SCRIPT_DEFINITION =
|
public static final CompilerConfigurationKey<Boolean> DISABLE_STANDARD_SCRIPT_DEFINITION =
|
||||||
CompilerConfigurationKey.create("Disable standard kotlin script support");
|
CompilerConfigurationKey.create("Disable standard kotlin script support");
|
||||||
|
|
||||||
|
|||||||
@@ -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<String>
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
fun getInstance(project: Project): ScriptDefinitionProvider? =
|
|
||||||
ServiceManager.getService(project, ScriptDefinitionProvider::class.java)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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<Integer> 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -33,6 +33,7 @@ dependencies {
|
|||||||
testCompile(project(":kotlin-test:kotlin-test-jvm"))
|
testCompile(project(":kotlin-test:kotlin-test-jvm"))
|
||||||
testCompile(projectTests(":compiler:tests-common-jvm6"))
|
testCompile(projectTests(":compiler:tests-common-jvm6"))
|
||||||
testCompileOnly(project(":kotlin-reflect-api"))
|
testCompileOnly(project(":kotlin-reflect-api"))
|
||||||
|
testCompile(project(":kotlin-scripting-compiler-impl"))
|
||||||
testCompile(commonDep("junit:junit"))
|
testCompile(commonDep("junit:junit"))
|
||||||
testCompile(androidDxJar()) { isTransitive = false }
|
testCompile(androidDxJar()) { isTransitive = false }
|
||||||
testCompileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
testCompileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ import org.jetbrains.kotlin.TestsCompilerError;
|
|||||||
import org.jetbrains.kotlin.TestsCompiletimeError;
|
import org.jetbrains.kotlin.TestsCompiletimeError;
|
||||||
import org.jetbrains.kotlin.backend.common.output.OutputFile;
|
import org.jetbrains.kotlin.backend.common.output.OutputFile;
|
||||||
import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection;
|
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.CompilerTestLanguageVersionSettings;
|
||||||
|
import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil;
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys;
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys;
|
||||||
import org.jetbrains.kotlin.cli.common.output.OutputUtilsKt;
|
import org.jetbrains.kotlin.cli.common.output.OutputUtilsKt;
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
|
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.fileClasses.JvmFileClassUtil;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
import org.jetbrains.kotlin.name.FqName;
|
||||||
import org.jetbrains.kotlin.psi.KtFile;
|
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.ConfigurationKind;
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.integration.KotlinIntegrationTestBase
|
import org.jetbrains.kotlin.integration.KotlinIntegrationTestBase
|
||||||
import org.jetbrains.kotlin.script.StandardScriptDefinition
|
|
||||||
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
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.GenericReplCompiler
|
||||||
import org.jetbrains.kotlin.scripting.repl.KOTLIN_REPL_JVM_TARGET_PROPERTY
|
import org.jetbrains.kotlin.scripting.repl.KOTLIN_REPL_JVM_TARGET_PROPERTY
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
@@ -114,7 +114,8 @@ class ReplCompilerJava8Test : KtUsefulTestCase() {
|
|||||||
|
|
||||||
private fun runTest(configuration: CompilerConfiguration): ReplCompileResult {
|
private fun runTest(configuration: CompilerConfiguration): ReplCompileResult {
|
||||||
val collector = PrintingMessageCollector(System.out, MessageRenderer.WITHOUT_PATHS, false)
|
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()
|
val state = replCompiler.createState()
|
||||||
|
|
||||||
return replCompiler.compile(state, ReplCodeLine(0, 0, script))
|
return replCompiler.compile(state, ReplCodeLine(0, 0, script))
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ import org.jetbrains.kotlin.cli.common.repl.*
|
|||||||
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.integration.KotlinIntegrationTestBase
|
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.script.loadScriptingPlugin
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler
|
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.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
|||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
||||||
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContextOrStlib
|
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.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
||||||
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContextOrStlib
|
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.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
|
|||||||
@@ -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.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
|
||||||
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
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.scripts.TestKotlinScriptDependenciesResolver
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -36,8 +37,10 @@ import kotlin.script.templates.ScriptTemplateDefinition
|
|||||||
|
|
||||||
class ScriptGenTest : CodegenTestCase() {
|
class ScriptGenTest : CodegenTestCase() {
|
||||||
companion object {
|
companion object {
|
||||||
private val FIB_SCRIPT_DEFINITION = KotlinScriptDefinitionFromAnnotatedTemplate(ScriptWithIntParam::class)
|
private val FIB_SCRIPT_DEFINITION =
|
||||||
private val NO_PARAM_SCRIPT_DEFINITION = KotlinScriptDefinitionFromAnnotatedTemplate(Any::class)
|
KotlinScriptDefinitionFromAnnotatedTemplate(ScriptWithIntParam::class)
|
||||||
|
private val NO_PARAM_SCRIPT_DEFINITION =
|
||||||
|
KotlinScriptDefinitionFromAnnotatedTemplate(Any::class)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setUp() {
|
override fun setUp() {
|
||||||
@@ -118,8 +121,8 @@ class ScriptGenTest : CodegenTestCase() {
|
|||||||
private fun setUpEnvironment(sourcePaths: List<String>) {
|
private fun setUpEnvironment(sourcePaths: List<String>) {
|
||||||
val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK).apply {
|
val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK).apply {
|
||||||
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false))
|
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false))
|
||||||
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, FIB_SCRIPT_DEFINITION)
|
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, FIB_SCRIPT_DEFINITION)
|
||||||
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION)
|
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION)
|
||||||
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||||
|
|
||||||
addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" })
|
addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" })
|
||||||
|
|||||||
+3
-3
@@ -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.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots
|
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.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.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPI
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -66,7 +66,7 @@ class CollectScriptCompilationDependenciesTest : KtUsefulTestCase() {
|
|||||||
),
|
),
|
||||||
hostConfiguration
|
hostConfiguration
|
||||||
)
|
)
|
||||||
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
||||||
|
|
||||||
addKotlinSourceRoot(File(testDataPath, scriptFile).path)
|
addKotlinSourceRoot(File(testDataPath, scriptFile).path)
|
||||||
|
|
||||||
|
|||||||
@@ -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.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|
||||||
import org.jetbrains.kotlin.daemon.TestMessageCollector
|
import org.jetbrains.kotlin.daemon.TestMessageCollector
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
|
||||||
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
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.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPI
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -82,7 +82,7 @@ class ScriptCliCompilationTest : KtUsefulTestCase() {
|
|||||||
),
|
),
|
||||||
hostConfiguration
|
hostConfiguration
|
||||||
)
|
)
|
||||||
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
||||||
}
|
}
|
||||||
loadScriptingPlugin(this)
|
loadScriptingPlugin(this)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,12 +27,17 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.daemon.TestMessageCollector
|
import org.jetbrains.kotlin.daemon.TestMessageCollector
|
||||||
import org.jetbrains.kotlin.daemon.assertHasMessage
|
import org.jetbrains.kotlin.daemon.assertHasMessage
|
||||||
import org.jetbrains.kotlin.daemon.toFile
|
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.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
|
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
@@ -43,9 +48,6 @@ import java.net.URLClassLoader
|
|||||||
import java.util.concurrent.Future
|
import java.util.concurrent.Future
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.script.dependencies.*
|
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.*
|
||||||
import kotlin.script.experimental.dependencies.DependenciesResolver.ResolveResult
|
import kotlin.script.experimental.dependencies.DependenciesResolver.ResolveResult
|
||||||
import kotlin.script.templates.AcceptedAnnotations
|
import kotlin.script.templates.AcceptedAnnotations
|
||||||
@@ -230,7 +232,7 @@ class ScriptTemplateTest : KtUsefulTestCase() {
|
|||||||
val aClass = compileScript("fib.kts", ScriptWithIntParam::class, messageCollector = messageCollector)
|
val aClass = compileScript("fib.kts", ScriptWithIntParam::class, messageCollector = messageCollector)
|
||||||
Assert.assertNotNull("Compilation failed:\n$messageCollector", aClass)
|
Assert.assertNotNull("Compilation failed:\n$messageCollector", aClass)
|
||||||
captureOut {
|
captureOut {
|
||||||
val anObj = tryConstructClassFromStringArgs(aClass!!, listOf("4"))
|
val anObj = tryConstructClassFromStringArgs(aClass!!, listOf("4"))
|
||||||
Assert.assertNotNull(anObj)
|
Assert.assertNotNull(anObj)
|
||||||
}.let {
|
}.let {
|
||||||
assertEqualsTrimmed(NUM_4_LINE + FIB_SCRIPT_OUTPUT_TAIL, it)
|
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),
|
messageCollector: MessageCollector = PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false),
|
||||||
includeKotlinRuntime: Boolean = true
|
includeKotlinRuntime: Boolean = true
|
||||||
): Class<*>? =
|
): Class<*>? =
|
||||||
compileScriptImpl("compiler/testData/script/" + scriptPath, KotlinScriptDefinitionFromAnnotatedTemplate(
|
compileScriptImpl("compiler/testData/script/" + scriptPath,
|
||||||
scriptTemplate, environment
|
KotlinScriptDefinitionFromAnnotatedTemplate(
|
||||||
), runIsolated, messageCollector, includeKotlinRuntime)
|
scriptTemplate, environment
|
||||||
|
), runIsolated, messageCollector, includeKotlinRuntime)
|
||||||
|
|
||||||
private fun compileScriptImpl(
|
private fun compileScriptImpl(
|
||||||
scriptPath: String,
|
scriptPath: String,
|
||||||
scriptDefinition: KotlinScriptDefinition,
|
scriptDefinition: KotlinScriptDefinition,
|
||||||
runIsolated: Boolean,
|
runIsolated: Boolean,
|
||||||
messageCollector: MessageCollector,
|
messageCollector: MessageCollector,
|
||||||
includeKotlinRuntime: Boolean
|
includeKotlinRuntime: Boolean
|
||||||
): Class<*>? {
|
): Class<*>? {
|
||||||
val rootDisposable = Disposer.newDisposable()
|
val rootDisposable = Disposer.newDisposable()
|
||||||
try {
|
try {
|
||||||
@@ -345,7 +348,7 @@ class ScriptTemplateTest : KtUsefulTestCase() {
|
|||||||
*additionalClasspath)
|
*additionalClasspath)
|
||||||
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||||
configuration.addKotlinSourceRoot(scriptPath)
|
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.DISABLE_STANDARD_SCRIPT_DEFINITION, true)
|
||||||
configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||||
|
|
||||||
|
|||||||
@@ -25,14 +25,15 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
||||||
import org.jetbrains.kotlin.codegen.CompilationException
|
import org.jetbrains.kotlin.codegen.CompilationException
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
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.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.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
||||||
|
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
@@ -86,11 +87,11 @@ class ScriptTest : KtUsefulTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun compileScript(
|
private fun compileScript(
|
||||||
scriptPath: String,
|
scriptPath: String,
|
||||||
scriptDefinition: KotlinScriptDefinition,
|
scriptDefinition: KotlinScriptDefinition,
|
||||||
runIsolated: Boolean = true,
|
runIsolated: Boolean = true,
|
||||||
suppressOutput: Boolean = false,
|
suppressOutput: Boolean = false,
|
||||||
saveClassesDir: File? = null
|
saveClassesDir: File? = null
|
||||||
): Class<*>? {
|
): Class<*>? {
|
||||||
val messageCollector =
|
val messageCollector =
|
||||||
if (suppressOutput) MessageCollector.NONE
|
if (suppressOutput) MessageCollector.NONE
|
||||||
@@ -101,7 +102,7 @@ class ScriptTest : KtUsefulTestCase() {
|
|||||||
val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK)
|
val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK)
|
||||||
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||||
configuration.addKotlinSourceRoot("compiler/testData/script/$scriptPath")
|
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)
|
configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||||
if (saveClassesDir != null) {
|
if (saveClassesDir != null) {
|
||||||
configuration.put(JVMConfigurationKeys.OUTPUT_DIRECTORY, saveClassesDir)
|
configuration.put(JVMConfigurationKeys.OUTPUT_DIRECTORY, saveClassesDir)
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.util
|
package org.jetbrains.kotlin.util
|
||||||
|
|
||||||
import org.jetbrains.kotlin.script.tryCreateCallableMappingFromNamedArgs
|
import org.jetbrains.kotlin.utils.tryCreateCallableMappingFromNamedArgs
|
||||||
import org.jetbrains.kotlin.script.tryCreateCallableMappingFromStringArgs
|
import org.jetbrains.kotlin.utils.tryCreateCallableMappingFromStringArgs
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import kotlin.reflect.KParameter
|
import kotlin.reflect.KParameter
|
||||||
@@ -30,22 +30,41 @@ class ArgsToParamsMatchingTest {
|
|||||||
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf()))
|
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf()))
|
||||||
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2")))
|
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2")))
|
||||||
|
|
||||||
assertParamMapsEquals(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2", "s", "0.1")),
|
assertParamMapsEquals(
|
||||||
"i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1)
|
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.1")))
|
||||||
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "258", "s", "0")))
|
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "258", "s", "0")))
|
||||||
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "258", "sss", "0.1")))
|
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "258", "sss", "0.1")))
|
||||||
|
|
||||||
assertParamMapsEquals(tryCreateCallableMappingFromStringArgs(::foo, listOf("1", "2", "s", "0.1", "abc", "true", "1", "2", "3")),
|
assertParamMapsEquals(
|
||||||
"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))
|
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("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("")))
|
Assert.assertNull(tryCreateCallableMappingFromStringArgs(::charArray, listOf("")))
|
||||||
|
|
||||||
assertParamMapsEquals(tryCreateCallableMappingFromStringArgs(::varargStrings, listOf("a", "b", "c")),
|
assertParamMapsEquals(
|
||||||
"s" to arrayOf("a", "b", "c"))
|
tryCreateCallableMappingFromStringArgs(::varargStrings, listOf("a", "b", "c")),
|
||||||
|
"s" to arrayOf("a", "b", "c"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -53,30 +72,75 @@ class ArgsToParamsMatchingTest {
|
|||||||
Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf()))
|
Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf()))
|
||||||
Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2)))
|
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)),
|
assertParamMapsEquals(
|
||||||
"i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1)
|
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)),
|
assertParamMapsEquals(
|
||||||
"i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1)
|
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')),
|
assertParamMapsEquals(
|
||||||
"i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1)
|
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))),
|
assertParamMapsEquals(
|
||||||
"i" to 1, "b" to 2.toByte(), "c" to 's', "d" to 0.1, "v" to arrayOf(1L, 2L, 3L))
|
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(
|
||||||
Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::foo, listOf(null to 1, null to 2.toByte(), "c" to 's', null to 0.1))) // unnamed after named
|
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)))
|
Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to null)))
|
||||||
assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::nullableNumber, listOf(null to null)),
|
assertParamMapsEquals(
|
||||||
"n" to null)
|
tryCreateCallableMappingFromNamedArgs(::nullableNumber, listOf(null to null)),
|
||||||
assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to 42)),
|
"n" to null)
|
||||||
"n" to 42)
|
assertParamMapsEquals(
|
||||||
|
tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to 42)),
|
||||||
|
"n" to 42)
|
||||||
Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to "42")))
|
Assert.assertNull(tryCreateCallableMappingFromNamedArgs(::notNullNumber, listOf(null to "42")))
|
||||||
|
|
||||||
assertParamMapsEquals(tryCreateCallableMappingFromNamedArgs(::varargStrings, listOf("a", "b", "c").map { null to it }),
|
assertParamMapsEquals(
|
||||||
"s" to arrayOf("a", "b", "c"))
|
tryCreateCallableMappingFromNamedArgs(::varargStrings, listOf("a", "b", "c").map { null to it }),
|
||||||
|
"s" to arrayOf("a", "b", "c"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ plugins {
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile(kotlinStdlib())
|
compile(kotlinStdlib())
|
||||||
compile(project(":core:deserialization"))
|
compile(project(":core:deserialization"))
|
||||||
|
compileOnly(project(":kotlin-reflect-api"))
|
||||||
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||||
compileOnly(intellijDep()) { includeIntellijCoreJarDependencies(project) }
|
compileOnly(intellijDep()) { includeIntellijCoreJarDependencies(project) }
|
||||||
compileOnly(jpsStandalone()) { includeJars("jps-model") }
|
compileOnly(jpsStandalone()) { includeJars("jps-model") }
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.utils
|
package org.jetbrains.kotlin.utils
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.lang.IllegalStateException
|
||||||
|
|
||||||
interface KotlinPaths {
|
interface KotlinPaths {
|
||||||
val homePath: File
|
val homePath: File
|
||||||
@@ -93,7 +94,7 @@ interface KotlinPaths {
|
|||||||
Trove4j(PathUtil.TROVE4J_NAME),
|
Trove4j(PathUtil.TROVE4J_NAME),
|
||||||
Compiler(PathUtil.KOTLIN_COMPILER_NAME),
|
Compiler(PathUtil.KOTLIN_COMPILER_NAME),
|
||||||
ScriptingPlugin(PathUtil.KOTLIN_SCRIPTING_COMPILER_PLUGIN_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),
|
ScriptingLib(PathUtil.KOTLIN_SCRIPTING_COMMON_NAME),
|
||||||
ScriptingJvmLib(PathUtil.KOTLIN_SCRIPTING_JVM_NAME),
|
ScriptingJvmLib(PathUtil.KOTLIN_SCRIPTING_JVM_NAME),
|
||||||
CoroutinesCore(PathUtil.KOTLINX_COROUTINES_CORE_NAME),
|
CoroutinesCore(PathUtil.KOTLINX_COROUTINES_CORE_NAME),
|
||||||
@@ -102,7 +103,7 @@ interface KotlinPaths {
|
|||||||
enum class ClassPaths(val contents: List<Jar> = emptyList()) {
|
enum class ClassPaths(val contents: List<Jar> = emptyList()) {
|
||||||
Empty(),
|
Empty(),
|
||||||
Compiler(Jar.Compiler, Jar.StdLib, Jar.Reflect, Jar.ScriptRuntime, Jar.Trove4j),
|
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())
|
constructor(vararg jars: Jar) : this(jars.asList())
|
||||||
@@ -120,7 +121,12 @@ interface KotlinPaths {
|
|||||||
fun classPath(vararg jars: Jar): List<File> = classPath(jars.asSequence())
|
fun classPath(vararg jars: Jar): List<File> = 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
|
override val libPath: File
|
||||||
get() = basePath
|
get() = basePath
|
||||||
|
|||||||
+27
-19
@@ -1,20 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
* 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.
|
||||||
* 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
|
package org.jetbrains.kotlin.utils
|
||||||
|
|
||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
import kotlin.reflect.full.isSubclassOf
|
import kotlin.reflect.full.isSubclassOf
|
||||||
@@ -41,13 +30,30 @@ fun tryConstructClassFromStringArgs(clazz: Class<*>, args: List<String>): Any? {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun tryCreateCallableMapping(callable: KCallable<*>, args: List<Any?>): Map<KParameter, Any?>? =
|
fun tryCreateCallableMapping(callable: KCallable<*>, args: List<Any?>): Map<KParameter, Any?>? =
|
||||||
tryCreateCallableMapping(callable, args.map { NamedArgument(null, it) }.iterator(), AnyArgsConverter())
|
tryCreateCallableMapping(
|
||||||
|
callable,
|
||||||
|
args.map { NamedArgument(null, it) }.iterator(),
|
||||||
|
AnyArgsConverter()
|
||||||
|
)
|
||||||
|
|
||||||
fun tryCreateCallableMappingFromStringArgs(callable: KCallable<*>, args: List<String>): Map<KParameter, Any?>? =
|
fun tryCreateCallableMappingFromStringArgs(callable: KCallable<*>, args: List<String>): Map<KParameter, Any?>? =
|
||||||
tryCreateCallableMapping(callable, args.map { NamedArgument(null, it) }.iterator(), StringArgsConverter())
|
tryCreateCallableMapping(
|
||||||
|
callable,
|
||||||
|
args.map { NamedArgument(null, it) }.iterator(),
|
||||||
|
StringArgsConverter()
|
||||||
|
)
|
||||||
|
|
||||||
fun tryCreateCallableMappingFromNamedArgs(callable: KCallable<*>, args: List<Pair<String?, Any?>>): Map<KParameter, Any?>? =
|
fun tryCreateCallableMappingFromNamedArgs(callable: KCallable<*>, args: List<Pair<String?, Any?>>): Map<KParameter, Any?>? =
|
||||||
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 <T> tryCreateCallableMapping(callable: KCallable<*>, args: Iterator<
|
|||||||
if (unboundParams.isEmpty()) return null // failed to match: no param left for the arg
|
if (unboundParams.isEmpty()) return null // failed to match: no param left for the arg
|
||||||
val arg = argIt.next()
|
val arg = argIt.next()
|
||||||
when (state) {
|
when (state) {
|
||||||
ArgsTraversalState.UNNAMED -> if (arg.name != null) state = ArgsTraversalState.NAMED
|
ArgsTraversalState.UNNAMED -> if (arg.name != null) state =
|
||||||
ArgsTraversalState.NAMED -> if (arg.name == null) state = ArgsTraversalState.TAIL
|
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")
|
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
|
// TODO: check the logic of named/unnamed/tail(vararg or lambda) arguments matching
|
||||||
+1
-1
@@ -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.core.script.dependencies.ScriptAdditionalIdeaDependenciesProvider
|
||||||
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
|
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.idea.caches.project.*
|
|||||||
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
|
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.idea.project.platform
|
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
|
import org.jetbrains.kotlin.utils.Jsr305State
|
||||||
|
|
||||||
object IDELanguageSettingsProvider : LanguageSettingsProvider {
|
object IDELanguageSettingsProvider : LanguageSettingsProvider {
|
||||||
|
|||||||
+1
-1
@@ -31,8 +31,8 @@ import org.jetbrains.kotlin.psi.KtFile;
|
|||||||
import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
|
import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform;
|
import org.jetbrains.kotlin.resolve.TargetPlatform;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
|
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.DefinitionsKt;
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition;
|
||||||
|
|
||||||
public class TargetPlatformDetector {
|
public class TargetPlatformDetector {
|
||||||
public static final TargetPlatformDetector INSTANCE = new TargetPlatformDetector();
|
public static final TargetPlatformDetector INSTANCE = new TargetPlatformDetector();
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import com.intellij.openapi.util.Key
|
|||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.ui.EditorNotifications
|
import com.intellij.ui.EditorNotifications
|
||||||
import org.jetbrains.kotlin.script.ScriptReportSink
|
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
|
||||||
import kotlin.script.experimental.dependencies.ScriptReport
|
import kotlin.script.experimental.dependencies.ScriptReport
|
||||||
|
|
||||||
class IdeScriptReportSink(val project: Project) : ScriptReportSink {
|
class IdeScriptReportSink(val project: Project) : ScriptReportSink {
|
||||||
|
|||||||
+3
-3
@@ -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.SdkInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo
|
import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
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.script.ScriptTemplatesProvider
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPI
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPI
|
||||||
import org.jetbrains.kotlin.scripting.definitions.LazyScriptDefinitionProvider
|
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.PathUtil
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.flattenTo
|
import org.jetbrains.kotlin.utils.addToStdlib.flattenTo
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ import com.intellij.openapi.vfs.VirtualFile
|
|||||||
import com.intellij.util.io.URLUtil
|
import com.intellij.util.io.URLUtil
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.idea.core.script.dependencies.SyncScriptDependenciesLoader
|
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 org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
|
|||||||
+3
-1
@@ -39,9 +39,11 @@ import org.jetbrains.kotlin.idea.core.script.dependencies.SyncScriptDependencies
|
|||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
|
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.findScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.definitions.scriptDefinition
|
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
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
|
|
||||||
class ScriptDependenciesUpdater(
|
class ScriptDependenciesUpdater(
|
||||||
|
|||||||
+1
-1
@@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.core.script
|
package org.jetbrains.kotlin.idea.core.script
|
||||||
|
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
|
||||||
import org.jetbrains.kotlin.script.ScriptTemplatesProvider
|
import org.jetbrains.kotlin.script.ScriptTemplatesProvider
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
|
|
||||||
class ScriptTemplatesProviderAdapter(private val templatesProvider: ScriptTemplatesProvider) :
|
class ScriptTemplatesProviderAdapter(private val templatesProvider: ScriptTemplatesProvider) :
|
||||||
ScriptDefinitionContributor {
|
ScriptDefinitionContributor {
|
||||||
|
|||||||
+2
-2
@@ -15,9 +15,9 @@ import com.intellij.openapi.vfs.VirtualFile
|
|||||||
import kotlinx.coroutines.Runnable
|
import kotlinx.coroutines.Runnable
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.asResolveFailure
|
|
||||||
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
||||||
|
import org.jetbrains.kotlin.scripting.resolve.asResolveFailure
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue
|
import java.util.concurrent.ConcurrentLinkedQueue
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock
|
import java.util.concurrent.locks.ReentrantReadWriteLock
|
||||||
import kotlin.concurrent.write
|
import kotlin.concurrent.write
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.core.script.dependencies
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.core.script.scriptDependencies
|
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
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
|
|
||||||
class FromFileAttributeScriptDependenciesLoader(project: Project) : ScriptDependenciesLoader(project) {
|
class FromFileAttributeScriptDependenciesLoader(project: Project) : ScriptDependenciesLoader(project) {
|
||||||
|
|||||||
+1
-1
@@ -22,8 +22,8 @@ import com.intellij.psi.ResolveScopeProvider
|
|||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager
|
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager
|
||||||
import org.jetbrains.kotlin.idea.core.script.StandardIdeScriptDefinition
|
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.definitions.findScriptDefinition
|
||||||
|
import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||||
|
|
||||||
class KotlinScriptResolveScopeProvider : ResolveScopeProvider() {
|
class KotlinScriptResolveScopeProvider : ResolveScopeProvider() {
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
+4
-4
@@ -16,10 +16,10 @@ import com.intellij.util.containers.SLRUMap
|
|||||||
import org.jetbrains.kotlin.idea.core.script.*
|
import org.jetbrains.kotlin.idea.core.script.*
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesCache.Companion.MAX_SCRIPTS_CACHED
|
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesCache.Companion.MAX_SCRIPTS_CACHED
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.ScriptContentLoader
|
import org.jetbrains.kotlin.scripting.resolve.ScriptContentLoader
|
||||||
import org.jetbrains.kotlin.script.ScriptReportSink
|
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
|
||||||
import org.jetbrains.kotlin.script.adjustByDefinition
|
import org.jetbrains.kotlin.scripting.resolve.adjustByDefinition
|
||||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||||
|
|
||||||
abstract class ScriptDependenciesLoader(protected val project: Project) {
|
abstract class ScriptDependenciesLoader(protected val project: Project) {
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.core.script.dependencies
|
|||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
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) {
|
class SyncScriptDependenciesLoader internal constructor(project: Project) : ScriptDependenciesLoader(project) {
|
||||||
override fun loadDependencies(file: VirtualFile, scriptDef: KotlinScriptDefinition) {
|
override fun loadDependencies(file: VirtualFile, scriptDef: KotlinScriptDefinition) {
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ import com.intellij.util.addOptionTag
|
|||||||
import com.intellij.util.attribute
|
import com.intellij.util.attribute
|
||||||
import com.intellij.util.getAttributeBooleanValue
|
import com.intellij.util.getAttributeBooleanValue
|
||||||
import org.jdom.Element
|
import org.jdom.Element
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
|
|
||||||
@State(
|
@State(
|
||||||
name = "KotlinScriptingSettings",
|
name = "KotlinScriptingSettings",
|
||||||
|
|||||||
+2
-2
@@ -27,9 +27,9 @@ import org.gradle.tooling.ProjectConnection
|
|||||||
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
||||||
import org.jetbrains.kotlin.lexer.KotlinLexer
|
import org.jetbrains.kotlin.lexer.KotlinLexer
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
|
||||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase
|
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.config.GradleSettingsListenerAdapter
|
||||||
import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper
|
import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper
|
||||||
import org.jetbrains.plugins.gradle.settings.DistributionType
|
import org.jetbrains.plugins.gradle.settings.DistributionType
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ import org.jetbrains.kotlin.psi.KtFile
|
|||||||
import org.jetbrains.kotlin.psi.KtScript
|
import org.jetbrains.kotlin.psi.KtScript
|
||||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||||
import org.jetbrains.kotlin.resolve.repl.ReplState
|
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.Color
|
||||||
import java.awt.Font
|
import java.awt.Font
|
||||||
import java.util.concurrent.CountDownLatch
|
import java.util.concurrent.CountDownLatch
|
||||||
|
|||||||
@@ -272,10 +272,10 @@
|
|||||||
<projectService serviceInterface="org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer"
|
<projectService serviceInterface="org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer"
|
||||||
serviceImplementation="org.jetbrains.kotlin.resolve.DummyCodeAnalyzerInitializer"/>
|
serviceImplementation="org.jetbrains.kotlin.resolve.DummyCodeAnalyzerInitializer"/>
|
||||||
|
|
||||||
<projectService serviceInterface="org.jetbrains.kotlin.script.ScriptDefinitionProvider"
|
<projectService serviceInterface="org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider"
|
||||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager"/>
|
serviceImplementation="org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager"/>
|
||||||
|
|
||||||
<projectService serviceInterface="org.jetbrains.kotlin.script.ScriptDependenciesProvider"
|
<projectService serviceInterface="org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider"
|
||||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptDependenciesProvider"/>
|
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptDependenciesProvider"/>
|
||||||
|
|
||||||
<projectService serviceInterface="org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager"
|
<projectService serviceInterface="org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager"
|
||||||
@@ -287,7 +287,7 @@
|
|||||||
<projectService serviceInterface="org.jetbrains.kotlin.idea.core.script.ScriptDependenciesUpdater"
|
<projectService serviceInterface="org.jetbrains.kotlin.idea.core.script.ScriptDependenciesUpdater"
|
||||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.ScriptDependenciesUpdater"/>
|
serviceImplementation="org.jetbrains.kotlin.idea.core.script.ScriptDependenciesUpdater"/>
|
||||||
|
|
||||||
<projectService serviceInterface="org.jetbrains.kotlin.script.ScriptReportSink"
|
<projectService serviceInterface="org.jetbrains.kotlin.scripting.resolve.ScriptReportSink"
|
||||||
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink"/>
|
serviceImplementation="org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink"/>
|
||||||
|
|
||||||
<projectService serviceInterface="org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder"
|
<projectService serviceInterface="org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import com.intellij.openapi.progress.Task
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock
|
import java.util.concurrent.locks.ReentrantReadWriteLock
|
||||||
import kotlin.concurrent.read
|
import kotlin.concurrent.read
|
||||||
import kotlin.concurrent.write
|
import kotlin.concurrent.write
|
||||||
|
|||||||
@@ -5,15 +5,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.script
|
package org.jetbrains.kotlin.idea.script
|
||||||
|
|
||||||
import com.intellij.openapi.extensions.Extensions
|
|
||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
|
import com.intellij.openapi.extensions.Extensions
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
||||||
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsFromClasspathDiscoverySource
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsFromClasspathDiscoverySource
|
||||||
import kotlin.script.experimental.intellij.ScriptDefinitionsProvider
|
import kotlin.script.experimental.intellij.ScriptDefinitionsProvider
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -12,9 +12,9 @@ import com.intellij.util.ui.ListTableModel
|
|||||||
import org.jetbrains.kotlin.idea.core.script.StandardIdeScriptDefinition
|
import org.jetbrains.kotlin.idea.core.script.StandardIdeScriptDefinition
|
||||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
||||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
|
||||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase
|
||||||
|
import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||||
|
|
||||||
class KotlinScriptDefinitionsModelDescriptor(val definition: KotlinScriptDefinition, var isEnabled: Boolean)
|
class KotlinScriptDefinitionsModelDescriptor(val definition: KotlinScriptDefinition, var isEnabled: Boolean)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager;
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager;
|
||||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings;
|
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings;
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition;
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|||||||
+2
-2
@@ -23,9 +23,9 @@ import org.jetbrains.kotlin.idea.core.script.StandardIdeScriptDefinition
|
|||||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
||||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
|
||||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase
|
||||||
|
import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||||
|
|
||||||
class MultipleScriptDefinitionsChecker(private val project: Project) : EditorNotifications.Provider<EditorNotificationPanel>() {
|
class MultipleScriptDefinitionsChecker(private val project: Project) : EditorNotifications.Provider<EditorNotificationPanel>() {
|
||||||
|
|
||||||
|
|||||||
@@ -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.ScriptDefinitionContributor
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
||||||
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
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
|
import java.io.File
|
||||||
|
|
||||||
class ScriptTemplatesFromCompilerSettingsProvider(
|
class ScriptTemplatesFromCompilerSettingsProvider(
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import com.intellij.openapi.vfs.JarFileSystem
|
|||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
||||||
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
|
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_EXTENSION_WITH_DOT
|
||||||
import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_PATH
|
import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_PATH
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|||||||
@@ -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.findFunction
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.findPackage
|
import org.jetbrains.kotlin.resolve.scopes.utils.findPackage
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.findVariable
|
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 org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import java.io.PrintStream
|
|||||||
import java.lang.ref.SoftReference
|
import java.lang.ref.SoftReference
|
||||||
|
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR
|
||||||
|
import org.jetbrains.kotlin.utils.KotlinPathsFromBaseDirectory
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
|
|
||||||
object CompilerRunnerUtil {
|
object CompilerRunnerUtil {
|
||||||
@@ -114,10 +115,9 @@ object CompilerRunnerUtil {
|
|||||||
environment: JpsCompilerEnvironment,
|
environment: JpsCompilerEnvironment,
|
||||||
fn: (ClassLoader) -> T
|
fn: (ClassLoader) -> T
|
||||||
): T? {
|
): T? {
|
||||||
val paths = SmartList<File>()
|
|
||||||
|
|
||||||
val libPath = getLibPath(environment.kotlinPaths, environment.messageCollector) ?: return null
|
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) }
|
jdkToolsJar?.let { paths.add(it) }
|
||||||
|
|
||||||
val classLoader = getOrCreateClassLoader(environment, paths)
|
val classLoader = getOrCreateClassLoader(environment, paths)
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ dependencies {
|
|||||||
compile(project(":kotlin-scripting-jvm"))
|
compile(project(":kotlin-scripting-jvm"))
|
||||||
compile(project(":kotlin-script-util"))
|
compile(project(":kotlin-script-util"))
|
||||||
compile(project(":kotlin-scripting-compiler"))
|
compile(project(":kotlin-scripting-compiler"))
|
||||||
|
compile(project(":kotlin-scripting-compiler-impl"))
|
||||||
compileOnly(project(":compiler:cli"))
|
compileOnly(project(":compiler:cli"))
|
||||||
compileOnly(project(":kotlin-reflect-api"))
|
compileOnly(project(":kotlin-reflect-api"))
|
||||||
compileOnly(intellijCoreDep())
|
compileOnly(intellijCoreDep())
|
||||||
|
|||||||
+5
-4
@@ -42,10 +42,11 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.name.NameUtils
|
import org.jetbrains.kotlin.name.NameUtils
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtScript
|
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.ScriptingCompilerConfigurationComponentRegistrar
|
||||||
import org.jetbrains.kotlin.scripting.compiler.plugin.dependencies.ScriptsCompilationDependencies
|
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
|
||||||
import org.jetbrains.kotlin.scripting.compiler.plugin.dependencies.collectScriptsCompilationDependencies
|
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 org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
@@ -101,7 +102,7 @@ class KJvmCompilerImpl(val hostConfiguration: ScriptingHostConfiguration) : KJvm
|
|||||||
val sourcesWithRefinementsState = SourcesWithRefinedConfigurations(script)
|
val sourcesWithRefinementsState = SourcesWithRefinedConfigurations(script)
|
||||||
|
|
||||||
kotlinCompilerConfiguration.add(
|
kotlinCompilerConfiguration.add(
|
||||||
JVMConfigurationKeys.SCRIPT_DEFINITIONS,
|
ScriptingConfigurationKeys.SCRIPT_DEFINITIONS,
|
||||||
makeScriptDefinition(initialScriptCompilationConfiguration, script, sourcesWithRefinementsState)
|
makeScriptDefinition(initialScriptCompilationConfiguration, script, sourcesWithRefinementsState)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ dependencies {
|
|||||||
compileOnly(project(":kotlin-compiler-runner"))
|
compileOnly(project(":kotlin-compiler-runner"))
|
||||||
compileOnly(project(":kotlin-annotation-processing"))
|
compileOnly(project(":kotlin-annotation-processing"))
|
||||||
compileOnly(project(":kotlin-annotation-processing-gradle"))
|
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")
|
compile("com.google.code.gson:gson:2.8.5")
|
||||||
|
|
||||||
@@ -62,6 +62,7 @@ dependencies {
|
|||||||
runtime(projectRuntimeJar(":kotlin-android-extensions"))
|
runtime(projectRuntimeJar(":kotlin-android-extensions"))
|
||||||
runtime(projectRuntimeJar(":kotlin-compiler-runner"))
|
runtime(projectRuntimeJar(":kotlin-compiler-runner"))
|
||||||
runtime(projectRuntimeJar(":kotlin-scripting-compiler-embeddable"))
|
runtime(projectRuntimeJar(":kotlin-scripting-compiler-embeddable"))
|
||||||
|
runtime(projectRuntimeJar(":kotlin-scripting-compiler-impl-embeddable"))
|
||||||
runtime(project(":kotlin-reflect"))
|
runtime(project(":kotlin-reflect"))
|
||||||
|
|
||||||
jarContents(compileOnly(intellijDep()) {
|
jarContents(compileOnly(intellijDep()) {
|
||||||
|
|||||||
+4
-4
@@ -48,9 +48,9 @@ import org.jetbrains.kotlin.config.CompilerConfiguration;
|
|||||||
import org.jetbrains.kotlin.load.java.JvmAbi;
|
import org.jetbrains.kotlin.load.java.JvmAbi;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
import org.jetbrains.kotlin.name.FqName;
|
||||||
import org.jetbrains.kotlin.psi.KtScript;
|
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.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.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@@ -187,7 +187,7 @@ public class ExecuteKotlinScriptMojo extends AbstractMojo {
|
|||||||
configuration.add(CLIConfigurationKeys.CONTENT_ROOTS, new KotlinSourceRoot(scriptFile.getAbsolutePath(), false));
|
configuration.add(CLIConfigurationKeys.CONTENT_ROOTS, new KotlinSourceRoot(scriptFile.getAbsolutePath(), false));
|
||||||
configuration.put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME);
|
configuration.put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME);
|
||||||
|
|
||||||
ScriptingCompilerConfigurationExtensionKt.configureScriptDefinitions(
|
ConfigurationKt.configureScriptDefinitions(
|
||||||
scriptTemplates, configuration, this.getClass().getClassLoader(), messageCollector, new HashMap<>()
|
scriptTemplates, configuration, this.getClass().getClassLoader(), messageCollector, new HashMap<>()
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ public class ExecuteKotlinScriptMojo extends AbstractMojo {
|
|||||||
try {
|
try {
|
||||||
Class<?> klass = classLoader.loadClass(nameForScript.asString());
|
Class<?> klass = classLoader.loadClass(nameForScript.asString());
|
||||||
ExecuteKotlinScriptMojo.INSTANCE = this;
|
ExecuteKotlinScriptMojo.INSTANCE = this;
|
||||||
if (ReflectionUtilKt.tryConstructClassFromStringArgs(klass, scriptArguments) == null)
|
if (ParametersMapKt.tryConstructClassFromStringArgs(klass, scriptArguments) == null)
|
||||||
throw new ScriptExecutionException(scriptFile, "unable to construct script");
|
throw new ScriptExecutionException(scriptFile, "unable to construct script");
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
throw new ScriptExecutionException(scriptFile, "internal error", e);
|
throw new ScriptExecutionException(scriptFile, "internal error", e);
|
||||||
|
|||||||
+2
-2
@@ -23,10 +23,10 @@ import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
|||||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmSdkRoots
|
import org.jetbrains.kotlin.cli.jvm.config.addJvmSdkRoots
|
||||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||||
import org.jetbrains.kotlin.config.*
|
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.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler
|
import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler
|
||||||
|
import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
|
|||||||
+5
-2
@@ -16,8 +16,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.script.util
|
package org.jetbrains.kotlin.script.util
|
||||||
|
|
||||||
import org.jetbrains.kotlin.script.InvalidScriptResolverAnnotation
|
import org.jetbrains.kotlin.script.util.resolvers.DirectResolver
|
||||||
import org.jetbrains.kotlin.script.util.resolvers.*
|
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 org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.concurrent.Future
|
import java.util.concurrent.Future
|
||||||
|
|||||||
+11
-7
@@ -30,12 +30,13 @@ import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
|||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
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.BindingsScriptTemplateWithLocalResolving
|
||||||
import org.jetbrains.kotlin.script.util.templates.StandardArgsScriptTemplateWithLocalResolving
|
import org.jetbrains.kotlin.script.util.templates.StandardArgsScriptTemplateWithLocalResolving
|
||||||
import org.jetbrains.kotlin.script.util.templates.StandardArgsScriptTemplateWithMavenResolving
|
import org.jetbrains.kotlin.script.util.templates.StandardArgsScriptTemplateWithMavenResolving
|
||||||
import org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar
|
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.jetbrains.kotlin.utils.PathUtil.getResourcePathForClass
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -125,12 +126,15 @@ done
|
|||||||
suppressOutput: Boolean = false
|
suppressOutput: Boolean = false
|
||||||
): Class<*>? =
|
): Class<*>? =
|
||||||
compileScriptImpl("libraries/tools/kotlin-script-util/src/test/resources/scripts/" + scriptFileName,
|
compileScriptImpl("libraries/tools/kotlin-script-util/src/test/resources/scripts/" + scriptFileName,
|
||||||
KotlinScriptDefinitionFromAnnotatedTemplate(scriptTemplate, environment), suppressOutput)
|
KotlinScriptDefinitionFromAnnotatedTemplate(
|
||||||
|
scriptTemplate,
|
||||||
|
environment
|
||||||
|
), suppressOutput)
|
||||||
|
|
||||||
private fun compileScriptImpl(
|
private fun compileScriptImpl(
|
||||||
scriptPath: String,
|
scriptPath: String,
|
||||||
scriptDefinition: KotlinScriptDefinition,
|
scriptDefinition: KotlinScriptDefinition,
|
||||||
suppressOutput: Boolean
|
suppressOutput: Boolean
|
||||||
): Class<*>? {
|
): Class<*>? {
|
||||||
val messageCollector =
|
val messageCollector =
|
||||||
if (suppressOutput) MessageCollector.NONE
|
if (suppressOutput) MessageCollector.NONE
|
||||||
@@ -151,7 +155,7 @@ done
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script-util-test")
|
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)
|
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||||
|
|
||||||
add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar())
|
add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ScriptingCompilerConfigurationComponentRegistrar())
|
||||||
|
|||||||
+3
-3
@@ -17,9 +17,9 @@
|
|||||||
package org.jetbrains.kotlin.samWithReceiver
|
package org.jetbrains.kotlin.samWithReceiver
|
||||||
|
|
||||||
import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest
|
import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|
||||||
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
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 java.io.File
|
||||||
import kotlin.script.extensions.SamWithReceiverAnnotations
|
import kotlin.script.extensions.SamWithReceiverAnnotations
|
||||||
import kotlin.script.templates.ScriptTemplateDefinition
|
import kotlin.script.templates.ScriptTemplateDefinition
|
||||||
@@ -32,7 +32,7 @@ abstract class AbstractSamWithReceiverScriptTest : AbstractDiagnosticsTest() {
|
|||||||
override fun createEnvironment(file: File) = super.createEnvironment(file).apply {
|
override fun createEnvironment(file: File) = super.createEnvironment(file).apply {
|
||||||
StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS))
|
StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS))
|
||||||
val def = KotlinScriptDefinitionFromAnnotatedTemplate(ScriptForSamWithReceivers::class, emptyMap())
|
val def = KotlinScriptDefinitionFromAnnotatedTemplate(ScriptForSamWithReceivers::class, emptyMap())
|
||||||
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, def)
|
configuration.add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, def)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+34
@@ -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<List<KotlinScriptDefinition>>("script definitions")
|
||||||
|
|
||||||
|
val SCRIPT_DEFINITIONS_SOURCES =
|
||||||
|
CompilerConfigurationKey.create<List<ScriptDefinitionsSource>>("script definitions sources")
|
||||||
|
|
||||||
|
val DISABLE_SCRIPTING_PLUGIN_OPTION: CompilerConfigurationKey<Boolean> =
|
||||||
|
CompilerConfigurationKey.create("Disable scripting plugin")
|
||||||
|
|
||||||
|
val SCRIPT_DEFINITIONS_CLASSES: CompilerConfigurationKey<List<String>> =
|
||||||
|
CompilerConfigurationKey.create("Script definition classes")
|
||||||
|
|
||||||
|
val SCRIPT_DEFINITIONS_CLASSPATH: CompilerConfigurationKey<List<File>> =
|
||||||
|
CompilerConfigurationKey.create("Additional classpath for the script definitions")
|
||||||
|
|
||||||
|
val DISABLE_SCRIPT_DEFINITIONS_FROM_CLASSPATH_OPTION: CompilerConfigurationKey<Boolean> =
|
||||||
|
CompilerConfigurationKey.create("Do not extract script definitions from the compilation classpath")
|
||||||
|
|
||||||
|
val LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION: CompilerConfigurationKey<MutableMap<String, Any?>> =
|
||||||
|
CompilerConfigurationKey.create("Script resolver environment")
|
||||||
|
}
|
||||||
+28
@@ -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<String>,
|
||||||
|
configuration: CompilerConfiguration,
|
||||||
|
baseClassloader: ClassLoader,
|
||||||
|
messageCollector: MessageCollector,
|
||||||
|
scriptResolverEnv: Map<String, Any?>
|
||||||
|
) {
|
||||||
|
// 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())
|
||||||
|
}
|
||||||
|
|
||||||
+3
-14
@@ -1,20 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
* 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.
|
||||||
* 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
|
package org.jetbrains.kotlin.scripting.definitions
|
||||||
|
|
||||||
import com.intellij.openapi.fileTypes.LanguageFileType
|
import com.intellij.openapi.fileTypes.LanguageFileType
|
||||||
import com.intellij.openapi.util.UserDataHolderBase
|
import com.intellij.openapi.util.UserDataHolderBase
|
||||||
-1
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.idea.KotlinFileType
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.NameUtils
|
import org.jetbrains.kotlin.name.NameUtils
|
||||||
import org.jetbrains.kotlin.psi.KtScript
|
import org.jetbrains.kotlin.psi.KtScript
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.full.starProjectedType
|
import kotlin.reflect.full.starProjectedType
|
||||||
|
|||||||
+24
@@ -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<String>
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun getInstance(project: Project): ScriptDefinitionProvider? =
|
||||||
|
ServiceManager.getService(project, ScriptDefinitionProvider::class.java)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
-2
@@ -7,8 +7,6 @@ package org.jetbrains.kotlin.scripting.definitions
|
|||||||
|
|
||||||
import com.intellij.ide.highlighter.JavaFileType
|
import com.intellij.ide.highlighter.JavaFileType
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
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 java.util.concurrent.locks.ReentrantReadWriteLock
|
||||||
import kotlin.concurrent.read
|
import kotlin.concurrent.read
|
||||||
import kotlin.concurrent.write
|
import kotlin.concurrent.write
|
||||||
|
|||||||
+2
-2
@@ -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.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.script
|
package org.jetbrains.kotlin.scripting.definitions
|
||||||
|
|
||||||
interface ScriptDefinitionsSource {
|
interface ScriptDefinitionsSource {
|
||||||
|
|
||||||
+3
-14
@@ -1,20 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
* 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.
|
||||||
* 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
|
package org.jetbrains.kotlin.scripting.definitions
|
||||||
|
|
||||||
import com.intellij.openapi.components.ServiceManager
|
import com.intellij.openapi.components.ServiceManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
+20
@@ -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<Integer> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
+3
-6
@@ -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.CompilerMessageSeverity
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionsSource
|
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
import java.util.jar.JarFile
|
import java.util.jar.JarFile
|
||||||
import kotlin.coroutines.experimental.buildSequence
|
|
||||||
import kotlin.script.experimental.annotations.KotlinScript
|
import kotlin.script.experimental.annotations.KotlinScript
|
||||||
import kotlin.script.experimental.api.KotlinType
|
import kotlin.script.experimental.api.KotlinType
|
||||||
import kotlin.script.experimental.host.createCompilationConfigurationFromTemplate
|
import kotlin.script.experimental.host.createCompilationConfigurationFromTemplate
|
||||||
@@ -46,7 +43,7 @@ fun discoverScriptTemplatesInClasspath(
|
|||||||
baseClassLoader: ClassLoader,
|
baseClassLoader: ClassLoader,
|
||||||
scriptResolverEnv: Map<String, Any?>,
|
scriptResolverEnv: Map<String, Any?>,
|
||||||
messageCollector: MessageCollector
|
messageCollector: MessageCollector
|
||||||
): Sequence<KotlinScriptDefinition> = buildSequence {
|
): Sequence<KotlinScriptDefinition> = sequence {
|
||||||
// TODO: try to find a way to reduce classpath (and classloader) to minimal one needed to load script definition and its dependencies
|
// 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 }
|
val loader = LazyClasspathWithClassLoader(baseClassLoader) { classpath }
|
||||||
|
|
||||||
@@ -136,7 +133,7 @@ fun loadScriptTemplatesFromClasspath(
|
|||||||
messageCollector: MessageCollector
|
messageCollector: MessageCollector
|
||||||
): Sequence<KotlinScriptDefinition> =
|
): Sequence<KotlinScriptDefinition> =
|
||||||
if (scriptTemplates.isEmpty()) emptySequence()
|
if (scriptTemplates.isEmpty()) emptySequence()
|
||||||
else buildSequence {
|
else sequence {
|
||||||
// trying the direct classloading from baseClassloader first, since this is the most performant variant
|
// trying the direct classloading from baseClassloader first, since this is the most performant variant
|
||||||
val (initialLoadedDefinitions, initialNotFoundTemplates) = scriptTemplates.partitionMapNotNull {
|
val (initialLoadedDefinitions, initialNotFoundTemplates) = scriptTemplates.partitionMapNotNull {
|
||||||
loadScriptDefinition(
|
loadScriptDefinition(
|
||||||
|
|||||||
-2
@@ -13,8 +13,6 @@ import com.intellij.psi.PsiFile
|
|||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionProvider
|
|
||||||
|
|
||||||
fun PsiFile.scriptDefinition(): KotlinScriptDefinition? {
|
fun PsiFile.scriptDefinition(): KotlinScriptDefinition? {
|
||||||
// Do not use psiFile.script, see comments in findScriptDefinition
|
// Do not use psiFile.script, see comments in findScriptDefinition
|
||||||
|
|||||||
+2
-3
@@ -3,16 +3,15 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* 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 com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot
|
import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
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.cli.jvm.compiler.createSourceFilesFromSourceRoots
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.script.ScriptDependenciesProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
data class ScriptsCompilationDependencies(
|
data class ScriptsCompilationDependencies(
|
||||||
+3
-3
@@ -3,16 +3,16 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* 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 com.intellij.core.JavaCoreProjectEnvironment
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.extensions.ReplFactoryExtension
|
import org.jetbrains.kotlin.cli.common.extensions.ReplFactoryExtension
|
||||||
import org.jetbrains.kotlin.cli.common.repl.ReplCompiler
|
import org.jetbrains.kotlin.cli.common.repl.ReplCompiler
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
|
||||||
import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler
|
import org.jetbrains.kotlin.scripting.repl.GenericReplCompiler
|
||||||
|
import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
|
|
||||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.psi.KtFile
|
|||||||
import org.jetbrains.kotlin.psi.KtImportInfo
|
import org.jetbrains.kotlin.psi.KtImportInfo
|
||||||
import org.jetbrains.kotlin.resolve.ImportPath
|
import org.jetbrains.kotlin.resolve.ImportPath
|
||||||
import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension
|
import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension
|
||||||
import org.jetbrains.kotlin.script.ScriptDependenciesProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
|
||||||
|
|
||||||
class ScriptExtraImportsProviderExtension : ExtraImportsProviderExtension {
|
class ScriptExtraImportsProviderExtension : ExtraImportsProviderExtension {
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -3,15 +3,15 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* 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.mock.MockProject
|
||||||
import com.intellij.openapi.project.Project
|
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.cli.jvm.config.addJvmClasspathRoots
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.extensions.CollectAdditionalSourcesExtension
|
import org.jetbrains.kotlin.extensions.CollectAdditionalSourcesExtension
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.scripting.dependencies.collectScriptsCompilationDependencies
|
||||||
|
|
||||||
class ScriptingCollectAdditionalSourcesExtension(val project: MockProject) : CollectAdditionalSourcesExtension {
|
class ScriptingCollectAdditionalSourcesExtension(val project: MockProject) : CollectAdditionalSourcesExtension {
|
||||||
override fun collectAdditionalSourcesAndUpdateConfiguration(
|
override fun collectAdditionalSourcesAndUpdateConfiguration(
|
||||||
+3
-2
@@ -23,7 +23,8 @@ import org.jetbrains.kotlin.config.JvmTarget
|
|||||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
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 org.jetbrains.kotlin.scripting.repl.messages.ConsoleDiagnosticMessageHolder
|
||||||
import kotlin.concurrent.write
|
import kotlin.concurrent.write
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ open class GenericReplChecker(
|
|||||||
|
|
||||||
internal val environment = run {
|
internal val environment = run {
|
||||||
compilerConfiguration.apply {
|
compilerConfiguration.apply {
|
||||||
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
||||||
put<MessageCollector>(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
put<MessageCollector>(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||||
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -18,8 +18,8 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
|
|||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.ScriptDependenciesProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock
|
import java.util.concurrent.locks.ReentrantReadWriteLock
|
||||||
import kotlin.concurrent.write
|
import kotlin.concurrent.write
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.*
|
|||||||
import org.jetbrains.kotlin.resolve.scopes.ImportingScope
|
import org.jetbrains.kotlin.resolve.scopes.ImportingScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.parentsWithSelf
|
import org.jetbrains.kotlin.resolve.scopes.utils.parentsWithSelf
|
||||||
import org.jetbrains.kotlin.resolve.scopes.utils.replaceImportingScopes
|
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) {
|
class ReplCodeAnalyzer(environment: KotlinCoreEnvironment) {
|
||||||
private val topDownAnalysisContext: TopDownAnalysisContext
|
private val topDownAnalysisContext: TopDownAnalysisContext
|
||||||
|
|||||||
+1
-1
@@ -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.JvmClasspathRoot
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmModulePathRoot
|
import org.jetbrains.kotlin.cli.jvm.config.JvmModulePathRoot
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
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 org.jetbrains.kotlin.scripting.repl.configuration.ReplConfiguration
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
|
|||||||
+4
-15
@@ -1,26 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
* 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.
|
||||||
* 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
|
package org.jetbrains.kotlin.scripting.resolve
|
||||||
|
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
|
||||||
import kotlin.script.dependencies.Environment
|
import kotlin.script.dependencies.Environment
|
||||||
import kotlin.script.dependencies.ScriptContents
|
import kotlin.script.dependencies.ScriptContents
|
||||||
import kotlin.script.experimental.dependencies.AsyncDependenciesResolver
|
import kotlin.script.experimental.dependencies.AsyncDependenciesResolver
|
||||||
|
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||||
|
|
||||||
// wraps AsyncDependenciesResolver to provide implementation for synchronous DependenciesResolver::resolve
|
// wraps AsyncDependenciesResolver to provide implementation for synchronous DependenciesResolver::resolve
|
||||||
class AsyncDependencyResolverWrapper(
|
class AsyncDependencyResolverWrapper(
|
||||||
+8
-16
@@ -1,27 +1,17 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
* 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.
|
||||||
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@file:Suppress("DEPRECATION")
|
@file:Suppress("DEPRECATION")
|
||||||
|
|
||||||
package org.jetbrains.kotlin.script
|
package org.jetbrains.kotlin.scripting.resolve
|
||||||
|
|
||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.NameUtils
|
import org.jetbrains.kotlin.name.NameUtils
|
||||||
import org.jetbrains.kotlin.psi.KtScript
|
import org.jetbrains.kotlin.psi.KtScript
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
@@ -32,9 +22,11 @@ import kotlin.reflect.full.primaryConstructor
|
|||||||
import kotlin.script.dependencies.ScriptDependenciesResolver
|
import kotlin.script.dependencies.ScriptDependenciesResolver
|
||||||
import kotlin.script.experimental.dependencies.AsyncDependenciesResolver
|
import kotlin.script.experimental.dependencies.AsyncDependenciesResolver
|
||||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||||
import kotlin.script.experimental.location.ScriptExpectedLocations
|
|
||||||
import kotlin.script.experimental.location.ScriptExpectedLocation
|
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(
|
open class KotlinScriptDefinitionFromAnnotatedTemplate(
|
||||||
template: KClass<out Any>,
|
template: KClass<out Any>,
|
||||||
+3
-3
@@ -33,9 +33,9 @@ import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
|||||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScopeImpl
|
import org.jetbrains.kotlin.resolve.scopes.LexicalScopeImpl
|
||||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScopeKind
|
import org.jetbrains.kotlin.resolve.scopes.LexicalScopeKind
|
||||||
import org.jetbrains.kotlin.resolve.source.toSourceElement
|
import org.jetbrains.kotlin.resolve.source.toSourceElement
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.ScriptDependenciesProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
|
||||||
import org.jetbrains.kotlin.script.ScriptPriorities
|
import org.jetbrains.kotlin.scripting.definitions.ScriptPriorities
|
||||||
import org.jetbrains.kotlin.scripting.definitions.scriptDefinitionByFileName
|
import org.jetbrains.kotlin.scripting.definitions.scriptDefinitionByFileName
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||||
import org.jetbrains.kotlin.types.typeUtil.isNothing
|
import org.jetbrains.kotlin.types.typeUtil.isNothing
|
||||||
|
|||||||
+14
-18
@@ -1,20 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
* 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.
|
||||||
* 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
|
package org.jetbrains.kotlin.scripting.resolve
|
||||||
|
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
@@ -23,6 +12,7 @@ import com.intellij.psi.PsiFile
|
|||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.script.dependencies.ScriptContents
|
import kotlin.script.dependencies.ScriptContents
|
||||||
@@ -33,7 +23,9 @@ import kotlin.script.experimental.dependencies.ScriptReport
|
|||||||
|
|
||||||
class ScriptContentLoader(private val project: Project) {
|
class ScriptContentLoader(private val project: Project) {
|
||||||
fun getScriptContents(scriptDefinition: KotlinScriptDefinition, file: VirtualFile)
|
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<Annotation> {
|
private fun loadAnnotations(scriptDefinition: KotlinScriptDefinition, file: VirtualFile): List<Annotation> {
|
||||||
val classLoader = scriptDefinition.template.java.classLoader
|
val classLoader = scriptDefinition.template.java.classLoader
|
||||||
@@ -45,7 +37,11 @@ class ScriptContentLoader(private val project: Project) {
|
|||||||
scriptDefinition.acceptedAnnotations.find { ann ->
|
scriptDefinition.acceptedAnnotations.find { ann ->
|
||||||
psiAnn.typeName.let { it == ann.simpleName || it == ann.qualifiedName }
|
psiAnn.typeName.let { it == ann.simpleName || it == ann.qualifiedName }
|
||||||
}?.let {
|
}?.let {
|
||||||
constructAnnotation(psiAnn, classLoader.loadClass(it.qualifiedName).kotlin as KClass<out Annotation>, project)
|
constructAnnotation(
|
||||||
|
psiAnn,
|
||||||
|
classLoader.loadClass(it.qualifiedName).kotlin as KClass<out Annotation>,
|
||||||
|
project
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,8 +61,8 @@ class ScriptContentLoader(private val project: Project) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun loadContentsAndResolveDependencies(
|
fun loadContentsAndResolveDependencies(
|
||||||
scriptDef: KotlinScriptDefinition,
|
scriptDef: KotlinScriptDefinition,
|
||||||
file: VirtualFile
|
file: VirtualFile
|
||||||
): DependenciesResolver.ResolveResult {
|
): DependenciesResolver.ResolveResult {
|
||||||
val scriptContents = getScriptContents(scriptDef, file)
|
val scriptContents = getScriptContents(scriptDef, file)
|
||||||
val environment = getEnvironment(scriptDef)
|
val environment = getEnvironment(scriptDef)
|
||||||
+1
-1
@@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.script
|
package org.jetbrains.kotlin.scripting.resolve
|
||||||
|
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import kotlin.script.experimental.dependencies.ScriptReport
|
import kotlin.script.experimental.dependencies.ScriptReport
|
||||||
-1
@@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.scripting.resolve
|
package org.jetbrains.kotlin.scripting.resolve
|
||||||
|
|
||||||
import org.jetbrains.kotlin.script.DependencyResolverWrapper
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.dependencies.Environment
|
import kotlin.script.dependencies.Environment
|
||||||
import kotlin.script.dependencies.ScriptDependenciesResolver
|
import kotlin.script.dependencies.ScriptDependenciesResolver
|
||||||
|
|||||||
+4
-14
@@ -1,20 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
* 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.
|
||||||
* 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
|
package org.jetbrains.kotlin.scripting.resolve
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
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.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.TypeUtils
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
|
import org.jetbrains.kotlin.utils.tryCreateCallableMappingFromNamedArgs
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.KParameter
|
import kotlin.reflect.KParameter
|
||||||
import kotlin.reflect.full.primaryConstructor
|
import kotlin.reflect.full.primaryConstructor
|
||||||
@@ -17,6 +17,7 @@ dependencies {
|
|||||||
compile(project(":kotlin-scripting-compiler-impl"))
|
compile(project(":kotlin-scripting-compiler-impl"))
|
||||||
compile(kotlinStdlib())
|
compile(kotlinStdlib())
|
||||||
compileOnly(project(":kotlin-reflect-api"))
|
compileOnly(project(":kotlin-reflect-api"))
|
||||||
|
compile(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false }
|
||||||
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||||
|
|
||||||
testCompile(project(":compiler:frontend"))
|
testCompile(project(":compiler:frontend"))
|
||||||
@@ -37,8 +38,8 @@ sourceSets {
|
|||||||
|
|
||||||
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>> {
|
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>> {
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
languageVersion = "1.2"
|
languageVersion = "1.3"
|
||||||
apiVersion = "1.2"
|
apiVersion = "1.3"
|
||||||
freeCompilerArgs += "-Xskip-metadata-version-check"
|
freeCompilerArgs += "-Xskip-metadata-version-check"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -19,8 +19,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionProvider
|
import org.jetbrains.kotlin.scripting.configuration.ScriptingConfigurationKeys
|
||||||
import org.jetbrains.kotlin.script.StandardScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
|
||||||
|
import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class JvmCliScriptEvaluationExtension : ScriptEvaluationExtension {
|
class JvmCliScriptEvaluationExtension : ScriptEvaluationExtension {
|
||||||
@@ -42,7 +43,7 @@ class JvmCliScriptEvaluationExtension : ScriptEvaluationExtension {
|
|||||||
val scriptFile = File(sourcePath)
|
val scriptFile = File(sourcePath)
|
||||||
if (scriptFile.isDirectory || !scriptDefinitionProvider.isScript(scriptFile.name)) {
|
if (scriptFile.isDirectory || !scriptDefinitionProvider.isScript(scriptFile.name)) {
|
||||||
val extensionHint =
|
val extensionHint =
|
||||||
if (configuration.get(JVMConfigurationKeys.SCRIPT_DEFINITIONS) == listOf(StandardScriptDefinition)) " (.kts)"
|
if (configuration.get(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS) == listOf(StandardScriptDefinition)) " (.kts)"
|
||||||
else ""
|
else ""
|
||||||
messageCollector.report(ERROR, "Specify path to the script file$extensionHint as the first argument")
|
messageCollector.report(ERROR, "Specify path to the script file$extensionHint as the first argument")
|
||||||
return COMPILATION_ERROR
|
return COMPILATION_ERROR
|
||||||
|
|||||||
+5
-5
@@ -6,14 +6,15 @@
|
|||||||
package org.jetbrains.kotlin.scripting.compiler.plugin
|
package org.jetbrains.kotlin.scripting.compiler.plugin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
|
import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
|
||||||
import java.io.File
|
|
||||||
import org.jetbrains.kotlin.compiler.plugin.CliOption
|
import org.jetbrains.kotlin.compiler.plugin.CliOption
|
||||||
import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
|
import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException
|
||||||
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
|
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.CompilerConfigurationKey
|
import org.jetbrains.kotlin.config.CompilerConfigurationKey
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
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 {
|
object ScriptingConfigurationKeys {
|
||||||
val DISABLE_SCRIPTING_PLUGIN_OPTION: CompilerConfigurationKey<Boolean> =
|
val DISABLE_SCRIPTING_PLUGIN_OPTION: CompilerConfigurationKey<Boolean> =
|
||||||
@@ -63,7 +64,6 @@ class ScriptingCommandLineProcessor : CommandLineProcessor {
|
|||||||
"Script resolver environment in key-value pairs (the value could be quoted and escaped)",
|
"Script resolver environment in key-value pairs (the value could be quoted and escaped)",
|
||||||
required = false, allowMultipleOccurrences = true
|
required = false, allowMultipleOccurrences = true
|
||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override val pluginId = KOTLIN_SCRIPTING_PLUGIN_ID
|
override val pluginId = KOTLIN_SCRIPTING_PLUGIN_ID
|
||||||
@@ -87,9 +87,9 @@ class ScriptingCommandLineProcessor : CommandLineProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SCRIPT_DEFINITIONS_OPTION, LEGACY_SCRIPT_TEMPLATES_OPTION -> {
|
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(','))
|
currentDefs.addAll(value.split(','))
|
||||||
configuration.put(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, currentDefs)
|
configuration.put(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_CLASSES, currentDefs)
|
||||||
}
|
}
|
||||||
SCRIPT_DEFINITIONS_CLASSPATH_OPTION -> {
|
SCRIPT_DEFINITIONS_CLASSPATH_OPTION -> {
|
||||||
val currentCP = configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_CLASSPATH).toMutableList()
|
val currentCP = configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_CLASSPATH).toMutableList()
|
||||||
|
|||||||
+19
-26
@@ -15,11 +15,12 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.extensions.CompilerConfigurationExtension
|
import org.jetbrains.kotlin.extensions.CompilerConfigurationExtension
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionProvider
|
import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider
|
||||||
import org.jetbrains.kotlin.script.StandardScriptDefinition
|
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.ScriptDefinitionsFromClasspathDiscoverySource
|
||||||
import org.jetbrains.kotlin.scripting.definitions.loadScriptTemplatesFromClasspath
|
import org.jetbrains.kotlin.scripting.definitions.StandardScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.legacy.CliScriptDefinitionProvider
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class ScriptingCompilerConfigurationExtension(val project: MockProject) : CompilerConfigurationExtension {
|
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 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()) {
|
if (explicitScriptDefinitions.isNotEmpty()) {
|
||||||
configureScriptDefinitions(
|
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 not disabled explicitly, we should always support at least the standard script definition
|
||||||
if (!configuration.getBoolean(JVMConfigurationKeys.DISABLE_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(
|
configuration.add(
|
||||||
JVMConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES,
|
ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES,
|
||||||
ScriptDefinitionsFromClasspathDiscoverySource(
|
ScriptDefinitionsFromClasspathDiscoverySource(
|
||||||
configuration.jvmClasspathRoots,
|
configuration.jvmClasspathRoots,
|
||||||
configuration.get(ScriptingConfigurationKeys.LEGACY_SCRIPT_RESOLVER_ENVIRONMENT_OPTION) ?: emptyMap(),
|
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 not disabled explicitly, we should always support at least the standard script definition
|
||||||
if (!configuration.getBoolean(JVMConfigurationKeys.DISABLE_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
|
val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project) as? CliScriptDefinitionProvider
|
||||||
if (scriptDefinitionProvider != null) {
|
if (scriptDefinitionProvider != null) {
|
||||||
scriptDefinitionProvider.setScriptDefinitionsSources(configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES))
|
scriptDefinitionProvider.setScriptDefinitionsSources(configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES))
|
||||||
scriptDefinitionProvider.setScriptDefinitions(configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS))
|
scriptDefinitionProvider.setScriptDefinitions(configuration.getList(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS))
|
||||||
|
|
||||||
// Register new file extensions
|
// Register new file extensions
|
||||||
val fileTypeRegistry = FileTypeRegistry.getInstance() as CoreFileTypeRegistry
|
val fileTypeRegistry = FileTypeRegistry.getInstance() as CoreFileTypeRegistry
|
||||||
@@ -92,17 +99,3 @@ class ScriptingCompilerConfigurationExtension(val project: MockProject) : Compil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun configureScriptDefinitions(
|
|
||||||
scriptTemplates: List<String>,
|
|
||||||
configuration: CompilerConfiguration,
|
|
||||||
baseClassloader: ClassLoader,
|
|
||||||
messageCollector: MessageCollector,
|
|
||||||
scriptResolverEnv: Map<String, Any?>
|
|
||||||
) {
|
|
||||||
// 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())
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -3,12 +3,12 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* 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.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionsSource
|
|
||||||
import org.jetbrains.kotlin.script.StandardScriptDefinition
|
|
||||||
import org.jetbrains.kotlin.scripting.definitions.LazyScriptDefinitionProvider
|
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
|
import kotlin.concurrent.write
|
||||||
|
|
||||||
open class CliScriptDefinitionProvider : LazyScriptDefinitionProvider() {
|
open class CliScriptDefinitionProvider : LazyScriptDefinitionProvider() {
|
||||||
+7
-18
@@ -1,30 +1,19 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
* 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.
|
||||||
* 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.scripting.legacy
|
package org.jetbrains.kotlin.scripting.compiler.plugin.definitions
|
||||||
|
|
||||||
import com.intellij.openapi.components.ServiceManager
|
import com.intellij.openapi.components.ServiceManager
|
||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.script.ScriptContentLoader
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
|
||||||
import org.jetbrains.kotlin.script.ScriptDependenciesProvider
|
|
||||||
import org.jetbrains.kotlin.script.ScriptReportSink
|
|
||||||
import org.jetbrains.kotlin.script.adjustByDefinition
|
|
||||||
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
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.io.File
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock
|
import java.util.concurrent.locks.ReentrantReadWriteLock
|
||||||
import kotlin.concurrent.read
|
import kotlin.concurrent.read
|
||||||
+4
-3
@@ -3,16 +3,17 @@
|
|||||||
* that can be found in the license/LICENSE.txt file.
|
* 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 com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
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
|
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<ScriptReport>) {
|
override fun attachReports(scriptFile: VirtualFile, reports: List<ScriptReport>) {
|
||||||
reports.forEach {
|
reports.forEach {
|
||||||
messageCollector.report(it.severity.convertSeverity(), it.message, location(scriptFile, it.position))
|
messageCollector.report(it.severity.convertSeverity(), it.message, location(scriptFile, it.position))
|
||||||
+7
-8
@@ -17,14 +17,13 @@ import org.jetbrains.kotlin.extensions.CompilerConfigurationExtension
|
|||||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension
|
import org.jetbrains.kotlin.resolve.extensions.ExtraImportsProviderExtension
|
||||||
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
|
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionProvider
|
import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider
|
||||||
import org.jetbrains.kotlin.script.ScriptDependenciesProvider
|
import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDependenciesProvider
|
||||||
import org.jetbrains.kotlin.script.ScriptReportSink
|
import org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptReportSink
|
||||||
import org.jetbrains.kotlin.scripting.legacy.CliScriptDefinitionProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
|
||||||
import org.jetbrains.kotlin.scripting.legacy.CliScriptDependenciesProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDependenciesProvider
|
||||||
import org.jetbrains.kotlin.scripting.legacy.CliScriptReportSink
|
import org.jetbrains.kotlin.scripting.extensions.*
|
||||||
import org.jetbrains.kotlin.scripting.extensions.ScriptExtraImportsProviderExtension
|
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
|
||||||
import org.jetbrains.kotlin.scripting.extensions.ScriptingResolveExtension
|
|
||||||
|
|
||||||
private fun <T> ProjectExtensionDescriptor<T>.registerExtensionIfRequired(project: MockProject, extension: T) {
|
private fun <T> ProjectExtensionDescriptor<T>.registerExtensionIfRequired(project: MockProject, extension: T) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
+17
-7
@@ -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.
|
* 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.scripting.compiler.plugin.definitions.CliScriptDefinitionProvider
|
||||||
import org.jetbrains.kotlin.script.ScriptDefinitionsSource
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.legacy.CliScriptDefinitionProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionsSource
|
||||||
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -24,7 +24,13 @@ class ScriptProviderTest : KtUsefulTestCase() {
|
|||||||
val shadedDef = FakeScriptDefinition(".x.kts")
|
val shadedDef = FakeScriptDefinition(".x.kts")
|
||||||
val provider = TestCliScriptDefinitionProvider(standardDef).apply {
|
val provider = TestCliScriptDefinitionProvider(standardDef).apply {
|
||||||
setScriptDefinitions(listOf(shadedDef, standardDef))
|
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())
|
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>) :
|
private class TestScriptDefinitionSource(val counter: AtomicInteger, val defGens: Iterable<() -> FakeScriptDefinition>) :
|
||||||
ScriptDefinitionsSource
|
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<KotlinScriptDefinition> = sequence {
|
override val definitions: Sequence<KotlinScriptDefinition> = sequence {
|
||||||
for (gen in defGens) {
|
for (gen in defGens) {
|
||||||
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
|
|||||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
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.SCRIPT_DEFINITION_MARKERS_PATH
|
||||||
import org.jetbrains.kotlin.scripting.definitions.discoverScriptTemplatesInClasspath
|
import org.jetbrains.kotlin.scripting.definitions.discoverScriptTemplatesInClasspath
|
||||||
import org.jetbrains.kotlin.scripting.definitions.loadScriptTemplatesFromClasspath
|
import org.jetbrains.kotlin.scripting.definitions.loadScriptTemplatesFromClasspath
|
||||||
@@ -166,7 +167,7 @@ class ScriptingCompilerPluginTest : TestCaseWithTmpdir() {
|
|||||||
addJvmClasspathRoots(runtimeClasspath)
|
addJvmClasspathRoots(runtimeClasspath)
|
||||||
addJvmClasspathRoots(scriptingClasspath)
|
addJvmClasspathRoots(scriptingClasspath)
|
||||||
addJvmClasspathRoot(defsOut)
|
addJvmClasspathRoot(defsOut)
|
||||||
addAll(JVMConfigurationKeys.SCRIPT_DEFINITIONS, lazyDefs)
|
addAll(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, lazyDefs)
|
||||||
}
|
}
|
||||||
|
|
||||||
val res = KotlinToJVMBytecodeCompiler.compileBunchOfSources(scriptsCompileEnv)
|
val res = KotlinToJVMBytecodeCompiler.compileBunchOfSources(scriptsCompileEnv)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
compileOnly(project(":kotlin-scripting-compiler"))
|
||||||
compile(project(":kotlin-scripting-compiler-impl"))
|
compile(project(":kotlin-scripting-compiler-impl"))
|
||||||
compile(project(":kotlin-scripting-intellij"))
|
compile(project(":kotlin-scripting-intellij"))
|
||||||
compileOnly(project(":idea:idea-gradle"))
|
compileOnly(project(":idea:idea-gradle"))
|
||||||
@@ -20,3 +21,6 @@ sourceSets {
|
|||||||
}
|
}
|
||||||
|
|
||||||
runtimeJar()
|
runtimeJar()
|
||||||
|
|
||||||
|
ideaPlugin()
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.scripting.idea.plugin
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.kotlin.idea.configuration.GradleProjectImportHandler
|
import org.jetbrains.kotlin.idea.configuration.GradleProjectImportHandler
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
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 org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -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.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
||||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
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.DaemonReportingTargets
|
||||||
import org.jetbrains.kotlin.daemon.client.KotlinCompilerClient
|
import org.jetbrains.kotlin.daemon.client.KotlinCompilerClient
|
||||||
import org.jetbrains.kotlin.daemon.common.*
|
import org.jetbrains.kotlin.daemon.common.*
|
||||||
import org.jetbrains.kotlin.script.StandardScriptDefinition
|
|
||||||
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
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.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestCaseWithTmpdir
|
import org.jetbrains.kotlin.test.TestCaseWithTmpdir
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
import org.jetbrains.kotlin.utils.KotlinPaths
|
import org.jetbrains.kotlin.utils.KotlinPaths
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
|
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import java.lang.management.ManagementFactory
|
import java.lang.management.ManagementFactory
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
@@ -72,7 +72,7 @@ class SourceSectionsTest : TestCaseWithTmpdir() {
|
|||||||
CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY,
|
CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY,
|
||||||
PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false)
|
PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false)
|
||||||
)
|
)
|
||||||
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition)
|
configuration.add(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition)
|
||||||
if (withSourceSectionsPlugin) {
|
if (withSourceSectionsPlugin) {
|
||||||
configuration.addAll(SourceSectionsConfigurationKeys.SECTIONS_OPTION, TEST_ALLOWED_SECTIONS)
|
configuration.addAll(SourceSectionsConfigurationKeys.SECTIONS_OPTION, TEST_ALLOWED_SECTIONS)
|
||||||
configuration.add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, SourceSectionsComponentRegistrar())
|
configuration.add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, SourceSectionsComponentRegistrar())
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||||
import org.gradle.jvm.tasks.Jar
|
|
||||||
|
|
||||||
description = "Kotlin IDEA Ultimate plugin"
|
description = "Kotlin IDEA Ultimate plugin"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user