K2 Scripting: fix script this receiver handling in IR
also fix accessor lowering
This commit is contained in:
committed by
Space Team
parent
07df03dbec
commit
02e2438d37
+7
-3
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.primaryConstructorIfAny
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.SCRIPT_SPECIAL_NAME_STRING
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.dependenciesSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
||||
@@ -52,7 +53,7 @@ class FirScriptConfiguratorExtensionImpl(
|
||||
// TODO: rewrite/extract decision logic for clarity
|
||||
configuration[ScriptCompilationConfiguration.baseClass]?.let { baseClass ->
|
||||
val baseClassFqn = FqName.fromSegments(baseClass.typeName.split("."))
|
||||
contextReceivers.add(buildContextReceiverWithFqName(baseClassFqn))
|
||||
contextReceivers.add(buildContextReceiverWithFqName(baseClassFqn, Name.special(SCRIPT_SPECIAL_NAME_STRING)))
|
||||
|
||||
val baseClassSymbol =
|
||||
session.dependenciesSymbolProvider.getClassLikeSymbolByClassId(ClassId(baseClassFqn.parent(), baseClassFqn.shortName()))
|
||||
@@ -138,16 +139,19 @@ class FirScriptConfiguratorExtensionImpl(
|
||||
configuration?.let { body.invoke(it) }
|
||||
}
|
||||
|
||||
private fun buildContextReceiverWithFqName(baseClassFqn: FqName) =
|
||||
private fun buildContextReceiverWithFqName(classFqn: FqName, customName: Name? = null) =
|
||||
buildContextReceiver {
|
||||
typeRef = buildUserTypeRef {
|
||||
isMarkedNullable = false
|
||||
qualifier.addAll(
|
||||
baseClassFqn.pathSegments().map {
|
||||
classFqn.pathSegments().map {
|
||||
FirQualifierPartImpl(null, it, FirTypeArgumentListImpl(null))
|
||||
}
|
||||
)
|
||||
}
|
||||
if (customName != null) {
|
||||
customLabelName = customName
|
||||
}
|
||||
}
|
||||
|
||||
private val _knownAnnotationsForSamWithReceiver = hashSetOf<String>()
|
||||
|
||||
Reference in New Issue
Block a user