IR: Allow references to script constructor in module
aso add test checking (somewhat confusing) semantic of script nested classes.
This commit is contained in:
committed by
TeamCityServer
parent
e7cbc9a0fb
commit
47ea5330ff
@@ -38,4 +38,6 @@ abstract class IrScript :
|
||||
abstract var earlierScripts: List<IrScriptSymbol>?
|
||||
|
||||
abstract var targetClass: IrClassSymbol?
|
||||
|
||||
abstract var constructor: IrConstructor?
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ class IrScriptImpl(
|
||||
override var earlierScriptsParameter: IrValueParameter? = null
|
||||
override var earlierScripts: List<IrScriptSymbol>? = null
|
||||
override var targetClass: IrClassSymbol? = null
|
||||
override var constructor: IrConstructor? = null
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
override val descriptor: ScriptDescriptor
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.IrTypeParametersContainer
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrScriptSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.ir.types.impl.*
|
||||
import org.jetbrains.kotlin.ir.util.defaultType
|
||||
@@ -77,7 +78,12 @@ val IrType.classifierOrNull: IrClassifierSymbol?
|
||||
get() = safeAs<IrSimpleType>()?.classifier
|
||||
|
||||
val IrType.classOrNull: IrClassSymbol?
|
||||
get() = classifierOrNull as? IrClassSymbol
|
||||
get() =
|
||||
when (val classifier = classifierOrNull) {
|
||||
is IrClassSymbol -> classifier
|
||||
is IrScriptSymbol -> classifier.owner.targetClass
|
||||
else -> null
|
||||
}
|
||||
|
||||
val IrType.classFqName: FqName?
|
||||
get() = classOrNull?.owner?.fqNameWhenAvailable
|
||||
|
||||
Reference in New Issue
Block a user