[JS IR BE] update current lowerings for IrScript

This commit is contained in:
Vitaliy.Tikhonov
2019-08-30 15:15:46 +03:00
committed by romanart
parent d79279d8a5
commit 240abdb750
14 changed files with 116 additions and 20 deletions
@@ -11,6 +11,8 @@ dependencies {
compileOnly(project(":compiler:frontend.java"))
compileOnly(project(":compiler:psi"))
compileOnly(project(":compiler:plugin-api"))
compileOnly(project(":compiler:cli"))
compileOnly(project(":compiler:ir.serialization.js"))
compile(project(":kotlin-scripting-common"))
compile(project(":kotlin-scripting-jvm"))
compile(kotlinStdlib())
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.diagnostics.Errors.MISSING_IMPORTED_SCRIPT_FILE
import org.jetbrains.kotlin.diagnostics.Errors.MISSING_IMPORTED_SCRIPT_PSI
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getChildOfType
@@ -156,13 +157,16 @@ class LazyScriptDescriptor(
override fun getUnsubstitutedPrimaryConstructor() = super.getUnsubstitutedPrimaryConstructor()!!
internal val baseClassDescriptor: () -> ClassDescriptor? = resolveSession.storageManager.createNullableLazyValue {
val baseClass = getScriptingClass(
scriptCompilationConfiguration()[ScriptCompilationConfiguration.baseClass]
?: throw IllegalStateException("Base class is not configured for the script ${scriptInfo.script.containingFile}")
)
val scriptBaseType = scriptCompilationConfiguration()[ScriptCompilationConfiguration.baseClass]
?: error("Base class is not configured for the script ${scriptInfo.script.containingFile}")
val typeName = scriptBaseType.run { fromClass?.toString()?.replace("class ", "") ?: typeName }
val fqnName = FqName(typeName)
val classId = ClassId.topLevel(fqnName)
findTypeDescriptor(
baseClass,
if (baseClass.qualifiedName?.startsWith("kotlin.script.templates.standard") == true) Errors.MISSING_SCRIPT_STANDARD_TEMPLATE
classId,
typeName,
if (fqnName.parent().asString().startsWith("kotlin.script.templates.standard")) Errors.MISSING_SCRIPT_STANDARD_TEMPLATE
else Errors.MISSING_SCRIPT_BASE_CLASS
)
}