Add possibility to specify supertypes for script, with tests

This commit is contained in:
Ilya Chernikov
2016-05-31 16:24:41 +02:00
parent 670627ac4e
commit 3c1503564e
10 changed files with 130 additions and 15 deletions
@@ -20,10 +20,7 @@ import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.descriptors.ScriptDescriptor
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtScript
import org.jetbrains.kotlin.script.KotlinScriptDefinition
import org.jetbrains.kotlin.script.ScriptNameUtil
import org.jetbrains.kotlin.script.ScriptParameter
import org.jetbrains.kotlin.script.makeReflectedClassScriptParameter
import org.jetbrains.kotlin.script.*
import org.jetbrains.kotlin.types.KotlinType
import kotlin.reflect.KClass
@@ -32,7 +29,7 @@ abstract class BaseScriptDefinition (val extension: String) : KotlinScriptDefini
override fun getScriptName(script: KtScript): Name = ScriptNameUtil.fileNameWithExtensionStripped(script, extension)
}
class SimpleParamsTestScriptDefinition(extension: String, val parameters: List<ScriptParameter>) : BaseScriptDefinition(extension) {
open class SimpleParamsTestScriptDefinition(extension: String, val parameters: List<ScriptParameter>) : BaseScriptDefinition(extension) {
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) = parameters
}
@@ -40,3 +37,8 @@ class ReflectedParamClassTestScriptDefinition(extension: String, val name: Strin
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) =
listOf(makeReflectedClassScriptParameter(scriptDescriptor, Name.identifier(name), parameter))
}
class ReflectedSuperclassTestScriptDefinition(extension: String, parameters: List<ScriptParameter>, val superclass: KClass<out Any>) : SimpleParamsTestScriptDefinition(extension, parameters) {
override fun getScriptSuperclasses(scriptDescriptor: ScriptDescriptor): List<KotlinType> =
listOf(getKotlinType(scriptDescriptor, superclass))
}