[IR] Make IrFunctionSymbol a sealed interface
This commit is contained in:
committed by
Space Team
parent
d0ca89f0a0
commit
6c211f3a39
-2
@@ -308,8 +308,6 @@ internal class AdapterGenerator(
|
|||||||
origin = null,
|
origin = null,
|
||||||
superQualifierSymbol = null
|
superQualifierSymbol = null
|
||||||
)
|
)
|
||||||
else ->
|
|
||||||
error("unknown callee kind: ${adapteeFunction.render()}")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var adapterParameterIndex = 0
|
var adapterParameterIndex = 0
|
||||||
|
|||||||
+4
-4
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
|||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.classOrNull
|
import org.jetbrains.kotlin.ir.types.classOrNull
|
||||||
@@ -261,10 +262,9 @@ class InnerClassConstructorCallsLowering(val context: BackendContext, val innerC
|
|||||||
|
|
||||||
val newCallee = innerClassesSupport.getInnerClassConstructorWithOuterThisParameter(callee.owner)
|
val newCallee = innerClassesSupport.getInnerClassConstructorWithOuterThisParameter(callee.owner)
|
||||||
val newReflectionTarget = expression.reflectionTarget?.let { reflectionTarget ->
|
val newReflectionTarget = expression.reflectionTarget?.let { reflectionTarget ->
|
||||||
if (reflectionTarget is IrConstructorSymbol) {
|
when (reflectionTarget) {
|
||||||
innerClassesSupport.getInnerClassConstructorWithOuterThisParameter(reflectionTarget.owner)
|
is IrConstructorSymbol -> innerClassesSupport.getInnerClassConstructorWithOuterThisParameter(reflectionTarget.owner)
|
||||||
} else {
|
is IrSimpleFunctionSymbol -> null
|
||||||
null
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -115,7 +115,6 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
symbol.owner.makeConstructorAccessor().symbol
|
symbol.owner.makeConstructorAccessor().symbol
|
||||||
is IrSimpleFunctionSymbol ->
|
is IrSimpleFunctionSymbol ->
|
||||||
symbol.owner.makeSimpleFunctionAccessor(superQualifierSymbol, dispatchReceiverType, parent, scopes).symbol
|
symbol.owner.makeSimpleFunctionAccessor(superQualifierSymbol, dispatchReceiverType, parent, scopes).symbol
|
||||||
else -> error("Unknown subclass of IrFunctionSymbol")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -313,7 +313,6 @@ internal class ReflectionReferencesGenerator(statementGenerator: StatementGenera
|
|||||||
IrConstructorCallImpl.fromSymbolDescriptor(startOffset, endOffset, irType, adapteeSymbol)
|
IrConstructorCallImpl.fromSymbolDescriptor(startOffset, endOffset, irType, adapteeSymbol)
|
||||||
is IrSimpleFunctionSymbol ->
|
is IrSimpleFunctionSymbol ->
|
||||||
IrCallImpl.fromSymbolDescriptor(startOffset, endOffset, irType, adapteeSymbol)
|
IrCallImpl.fromSymbolDescriptor(startOffset, endOffset, irType, adapteeSymbol)
|
||||||
else -> error("Unknown symbol kind $adapteeSymbol")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val hasBoundDispatchReceiver = resolvedCall.dispatchReceiver != null && resolvedCall.dispatchReceiver !is TransientReceiver
|
val hasBoundDispatchReceiver = resolvedCall.dispatchReceiver != null && resolvedCall.dispatchReceiver !is TransientReceiver
|
||||||
|
|||||||
@@ -272,7 +272,6 @@ fun IrBuilderWithScope.irCall(callee: IrFunctionSymbol, type: IrType): IrFunctio
|
|||||||
when (callee) {
|
when (callee) {
|
||||||
is IrConstructorSymbol -> irCall(callee, type)
|
is IrConstructorSymbol -> irCall(callee, type)
|
||||||
is IrSimpleFunctionSymbol -> irCall(callee, type)
|
is IrSimpleFunctionSymbol -> irCall(callee, type)
|
||||||
else -> throw AssertionError("Unexpected callee: $callee")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrBuilderWithScope.irCall(callee: IrSimpleFunctionSymbol): IrCall =
|
fun IrBuilderWithScope.irCall(callee: IrSimpleFunctionSymbol): IrCall =
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ interface IrReturnTargetSymbol : IrSymbol {
|
|||||||
override val owner: IrReturnTarget
|
override val owner: IrReturnTarget
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IrFunctionSymbol : IrReturnTargetSymbol {
|
sealed interface IrFunctionSymbol : IrReturnTargetSymbol {
|
||||||
override val owner: IrFunction
|
override val owner: IrFunction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -219,7 +219,6 @@ open class DeepCopySymbolRemapper(
|
|||||||
when (symbol) {
|
when (symbol) {
|
||||||
is IrSimpleFunctionSymbol -> functions.getReferenced(symbol)
|
is IrSimpleFunctionSymbol -> functions.getReferenced(symbol)
|
||||||
is IrConstructorSymbol -> constructors.getReferenced(symbol)
|
is IrConstructorSymbol -> constructors.getReferenced(symbol)
|
||||||
else -> throw IllegalArgumentException("Unexpected symbol $symbol")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getReferencedReturnableBlock(symbol: IrReturnableBlockSymbol): IrReturnableBlockSymbol =
|
override fun getReferencedReturnableBlock(symbol: IrReturnableBlockSymbol): IrReturnableBlockSymbol =
|
||||||
|
|||||||
-1
@@ -708,7 +708,6 @@ internal class PartiallyLinkedIrTreePatcher(
|
|||||||
val expectedDispatchReceiverClassifier: IrClassSymbol = when (symbol) {
|
val expectedDispatchReceiverClassifier: IrClassSymbol = when (symbol) {
|
||||||
is IrSimpleFunctionSymbol -> function.parent as? IrClass
|
is IrSimpleFunctionSymbol -> function.parent as? IrClass
|
||||||
is IrConstructorSymbol -> (function.parent as? IrClass)?.takeIf { it.isInner }?.parent as? IrClass
|
is IrConstructorSymbol -> (function.parent as? IrClass)?.takeIf { it.isInner }?.parent as? IrClass
|
||||||
else -> null
|
|
||||||
}?.symbol ?: return@run false
|
}?.symbol ?: return@run false
|
||||||
|
|
||||||
val referenceType: IrSimpleType = type as? IrSimpleType ?: return@run false
|
val referenceType: IrSimpleType = type as? IrSimpleType ?: return@run false
|
||||||
|
|||||||
-1
@@ -130,7 +130,6 @@ internal class ExpectToActualDefaultValueCopier(private val irModule: IrModuleFr
|
|||||||
override fun getReferencedFunction(symbol: IrFunctionSymbol): IrFunctionSymbol = when (symbol) {
|
override fun getReferencedFunction(symbol: IrFunctionSymbol): IrFunctionSymbol = when (symbol) {
|
||||||
is IrSimpleFunctionSymbol -> getReferencedSimpleFunction(symbol)
|
is IrSimpleFunctionSymbol -> getReferencedSimpleFunction(symbol)
|
||||||
is IrConstructorSymbol -> getReferencedConstructor(symbol)
|
is IrConstructorSymbol -> getReferencedConstructor(symbol)
|
||||||
else -> error("Unexpected symbol $symbol ${symbol.descriptor}")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getReferencedSimpleFunction(symbol: IrSimpleFunctionSymbol) = when {
|
override fun getReferencedSimpleFunction(symbol: IrSimpleFunctionSymbol) = when {
|
||||||
|
|||||||
Reference in New Issue
Block a user