Grand refactoring of the scripting DSL + many minor usability refactorings around it
This commit is contained in:
@@ -75,7 +75,6 @@ dependencies {
|
||||
testCompile(project(":compiler:ir.ir2cfg"))
|
||||
testCompile(project(":compiler:ir.tree")) // used for deepCopyWithSymbols call that is removed by proguard from the compiler TODO: make it more straightforward
|
||||
testCompile(project(":kotlin-scripting-compiler"))
|
||||
testCompile(project(":kotlin-scripting-misc"))
|
||||
testCompile(project(":kotlin-script-util"))
|
||||
testCompileOnly(projectRuntimeJar(":kotlin-daemon-client"))
|
||||
testCompileOnly(project(":kotlin-reflect-api"))
|
||||
|
||||
@@ -244,9 +244,9 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
||||
with(PathUtil) {
|
||||
val jars = arrayOf(
|
||||
KOTLIN_SCRIPTING_COMPILER_PLUGIN_JAR, KOTLIN_SCRIPTING_COMMON_JAR,
|
||||
KOTLIN_SCRIPTING_JVM_JAR, KOTLIN_SCRIPTING_MISC_JAR
|
||||
).mapNotNull { File(libPath, it).takeIf(File::exists)?.canonicalPath }
|
||||
if (jars.size == 4) {
|
||||
KOTLIN_SCRIPTING_JVM_JAR
|
||||
).mapNotNull { File(libPath, it).takeIf { it.exists() }?.canonicalPath }
|
||||
if (jars.size == 3) {
|
||||
pluginClasspaths = jars + pluginClasspaths
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,14 +17,12 @@ import org.jetbrains.kotlin.utils.PathUtil
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_COMMON_JAR
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_COMPILER_PLUGIN_JAR
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_JVM_JAR
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_MISC_JAR
|
||||
import org.junit.Assert
|
||||
import java.io.File
|
||||
import kotlin.script.experimental.annotations.KotlinScript
|
||||
import kotlin.script.experimental.annotations.KotlinScriptPropertiesFromList
|
||||
import kotlin.script.experimental.api.KotlinType
|
||||
import kotlin.script.experimental.api.ScriptDefinitionProperties
|
||||
import kotlin.script.experimental.util.TypedKey
|
||||
import kotlin.script.experimental.api.ScriptDefinition
|
||||
import kotlin.script.experimental.api.contextVariables
|
||||
import kotlin.script.experimental.api.scriptImplicitReceivers
|
||||
|
||||
abstract class AbstractCustomScriptCodegenTest : CodegenTestCase() {
|
||||
private lateinit var scriptDefinitions: List<String>
|
||||
@@ -59,7 +57,7 @@ abstract class AbstractCustomScriptCodegenTest : CodegenTestCase() {
|
||||
with(PathUtil.kotlinPathsForDistDirectory) {
|
||||
arrayOf(
|
||||
KOTLIN_SCRIPTING_COMPILER_PLUGIN_JAR, KOTLIN_SCRIPTING_COMMON_JAR,
|
||||
KOTLIN_SCRIPTING_JVM_JAR, KOTLIN_SCRIPTING_MISC_JAR
|
||||
KOTLIN_SCRIPTING_JVM_JAR
|
||||
).mapNotNull { File(libPath, it).takeIf { it.exists() } }
|
||||
}
|
||||
}
|
||||
@@ -123,24 +121,22 @@ abstract class AbstractCustomScriptCodegenTest : CodegenTestCase() {
|
||||
}
|
||||
}
|
||||
|
||||
object TestScriptWithReceiversConfiguration : ArrayList<Pair<TypedKey<*>, Any?>>(
|
||||
listOf(
|
||||
ScriptDefinitionProperties.scriptImplicitReceivers to listOf(KotlinType(String::class))
|
||||
)
|
||||
)
|
||||
object TestScriptWithReceiversConfiguration : ScriptDefinition {
|
||||
override val properties = properties {
|
||||
scriptImplicitReceivers<String>()
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
@KotlinScript
|
||||
@KotlinScriptPropertiesFromList(TestScriptWithReceiversConfiguration::class)
|
||||
@KotlinScript(definition = TestScriptWithReceiversConfiguration::class)
|
||||
abstract class TestScriptWithReceivers
|
||||
|
||||
object TestScriptWithSimpleEnvVarsConfiguration : ArrayList<Pair<TypedKey<*>, Any?>>(
|
||||
listOf(
|
||||
ScriptDefinitionProperties.contextVariables to mapOf("stringVar1" to KotlinType(String::class))
|
||||
)
|
||||
)
|
||||
object TestScriptWithSimpleEnvVarsConfiguration : ScriptDefinition {
|
||||
override val properties = properties {
|
||||
contextVariables("stringVar1" to String::class)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
@KotlinScript
|
||||
@KotlinScriptPropertiesFromList(TestScriptWithSimpleEnvVarsConfiguration::class)
|
||||
@KotlinScript(definition = TestScriptWithSimpleEnvVarsConfiguration::class)
|
||||
abstract class TestScriptWithSimpleEnvVars
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.utils.PathUtil
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_COMMON_JAR
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_COMPILER_PLUGIN_JAR
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_JVM_JAR
|
||||
import org.jetbrains.kotlin.utils.PathUtil.KOTLIN_SCRIPTING_MISC_JAR
|
||||
import java.io.File
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.script.experimental.annotations.KotlinScript
|
||||
@@ -50,7 +49,7 @@ class CustomScriptCodegenTest : CodegenTestCase() {
|
||||
with(PathUtil.kotlinPathsForDistDirectory) {
|
||||
arrayOf(
|
||||
KOTLIN_SCRIPTING_COMPILER_PLUGIN_JAR, KOTLIN_SCRIPTING_COMMON_JAR,
|
||||
KOTLIN_SCRIPTING_JVM_JAR, KOTLIN_SCRIPTING_MISC_JAR
|
||||
KOTLIN_SCRIPTING_JVM_JAR
|
||||
).mapNotNull { File(libPath, it).also { assertTrue("$it not found", it.exists()) } }
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,6 @@ object PathUtil {
|
||||
const val KOTLIN_JAVA_SCRIPT_RUNTIME_JAR = "kotlin-script-runtime.jar"
|
||||
const val KOTLIN_SCRIPTING_COMMON_JAR = "kotlin-scripting-common.jar"
|
||||
const val KOTLIN_SCRIPTING_JVM_JAR = "kotlin-scripting-jvm.jar"
|
||||
const val KOTLIN_SCRIPTING_MISC_JAR = "kotlin-scripting-misc.jar"
|
||||
const val KOTLIN_SCRIPTING_COMPILER_PLUGIN_NAME = "kotlin-scripting-compiler"
|
||||
const val KOTLIN_SCRIPTING_COMPILER_PLUGIN_JAR = "$KOTLIN_SCRIPTING_COMPILER_PLUGIN_NAME.jar"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user