[IR] Remove FunctionDescriptor from IrCall-like node's constructor interface
This commit is contained in:
@@ -196,7 +196,6 @@ fun IrBuilderWithScope.irGet(type: IrType, receiver: IrExpression?, getterSymbol
|
||||
startOffset, endOffset,
|
||||
type,
|
||||
getterSymbol as IrSimpleFunctionSymbol,
|
||||
getterSymbol.descriptor,
|
||||
typeArgumentsCount = getterSymbol.owner.typeParameters.size,
|
||||
valueArgumentsCount = 0,
|
||||
origin = IrStatementOrigin.GET_PROPERTY
|
||||
@@ -209,7 +208,6 @@ fun IrBuilderWithScope.irSet(type: IrType, receiver: IrExpression?, setterSymbol
|
||||
startOffset, endOffset,
|
||||
type,
|
||||
setterSymbol as IrSimpleFunctionSymbol,
|
||||
setterSymbol.descriptor,
|
||||
typeArgumentsCount = setterSymbol.owner.typeParameters.size,
|
||||
valueArgumentsCount = 1,
|
||||
origin = IrStatementOrigin.EQ
|
||||
@@ -242,7 +240,7 @@ fun IrBuilderWithScope.irCallConstructor(callee: IrConstructorSymbol, typeArgume
|
||||
}
|
||||
|
||||
fun IrBuilderWithScope.irCall(callee: IrSimpleFunctionSymbol, type: IrType): IrCall =
|
||||
IrCallImpl(startOffset, endOffset, type, callee, callee.descriptor)
|
||||
IrCallImpl(startOffset, endOffset, type, callee)
|
||||
|
||||
fun IrBuilderWithScope.irCall(callee: IrConstructorSymbol, type: IrType): IrConstructorCall =
|
||||
IrConstructorCallImpl.fromSymbolDescriptor(startOffset, endOffset, type, callee)
|
||||
@@ -264,7 +262,7 @@ fun IrBuilderWithScope.irCall(callee: IrFunctionSymbol): IrFunctionAccessExpress
|
||||
irCall(callee, callee.owner.returnType)
|
||||
|
||||
fun IrBuilderWithScope.irCall(callee: IrFunctionSymbol, descriptor: FunctionDescriptor, type: IrType): IrCall =
|
||||
IrCallImpl(startOffset, endOffset, type, callee as IrSimpleFunctionSymbol, descriptor)
|
||||
IrCallImpl(startOffset, endOffset, type, callee as IrSimpleFunctionSymbol)
|
||||
|
||||
fun IrBuilderWithScope.irCall(callee: IrFunction): IrFunctionAccessExpression =
|
||||
irCall(callee.symbol)
|
||||
@@ -273,12 +271,13 @@ fun IrBuilderWithScope.irCall(callee: IrFunction, origin: IrStatementOrigin): Ir
|
||||
IrCallImpl(
|
||||
startOffset, endOffset, callee.returnType,
|
||||
callee.symbol as IrSimpleFunctionSymbol,
|
||||
callee.descriptor, origin
|
||||
callee.typeParameters.size, callee.valueParameters.size,
|
||||
origin
|
||||
)
|
||||
|
||||
fun IrBuilderWithScope.irDelegatingConstructorCall(callee: IrConstructor): IrDelegatingConstructorCall =
|
||||
IrDelegatingConstructorCallImpl(
|
||||
startOffset, endOffset, context.irBuiltIns.unitType, callee.symbol, callee.descriptor,
|
||||
startOffset, endOffset, context.irBuiltIns.unitType, callee.symbol,
|
||||
callee.parentAsClass.typeParameters.size, callee.valueParameters.size
|
||||
)
|
||||
|
||||
@@ -379,14 +378,3 @@ inline fun IrBuilderWithScope.irBlockBody(
|
||||
endOffset
|
||||
).blockBody(body)
|
||||
|
||||
fun IrBuilderWithScope.irThrowIse(origin: IrStatementOrigin? = null) =
|
||||
IrCallImpl(
|
||||
startOffset, endOffset,
|
||||
context.irBuiltIns.nothingType,
|
||||
context.irBuiltIns.throwIseSymbol,
|
||||
context.irBuiltIns.throwIseSymbol.descriptor,
|
||||
typeArgumentsCount = 0,
|
||||
valueArgumentsCount = 0,
|
||||
origin = origin
|
||||
)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ fun primitiveOp1(
|
||||
origin: IrStatementOrigin,
|
||||
dispatchReceiver: IrExpression
|
||||
): IrExpression =
|
||||
IrCallImpl(startOffset, endOffset, primitiveOpReturnType, primitiveOpSymbol, primitiveOpSymbol.descriptor, origin = origin).also {
|
||||
IrCallImpl(startOffset, endOffset, primitiveOpReturnType, primitiveOpSymbol, origin = origin).also {
|
||||
it.dispatchReceiver = dispatchReceiver
|
||||
}
|
||||
|
||||
@@ -47,8 +47,7 @@ fun primitiveOp2(
|
||||
IrCallImpl(
|
||||
startOffset, endOffset,
|
||||
primitiveOpReturnType,
|
||||
primitiveOpSymbol, primitiveOpSymbol.descriptor,
|
||||
typeArgumentsCount = 0,
|
||||
primitiveOpSymbol, typeArgumentsCount = 0,
|
||||
valueArgumentsCount = 2,
|
||||
origin = origin
|
||||
).apply {
|
||||
|
||||
@@ -16,13 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.expressions.typeParametersCount
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
@@ -32,7 +31,6 @@ class IrCallImpl(
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val symbol: IrFunctionSymbol,
|
||||
override val descriptor: FunctionDescriptor,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
origin: IrStatementOrigin? = null,
|
||||
@@ -47,22 +45,23 @@ class IrCallImpl(
|
||||
IrCall {
|
||||
|
||||
init {
|
||||
if (descriptor is ConstructorDescriptor) {
|
||||
throw AssertionError("Should be IrConstructorCall: $descriptor")
|
||||
if (symbol is IrConstructorSymbol) {
|
||||
throw AssertionError("Should be IrConstructorCall: ${symbol.descriptor}")
|
||||
}
|
||||
}
|
||||
|
||||
override val descriptor: FunctionDescriptor get() = symbol.descriptor
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrFunctionSymbol,
|
||||
descriptor: FunctionDescriptor,
|
||||
origin: IrStatementOrigin? = null,
|
||||
superQualifierSymbol: IrClassSymbol? = null
|
||||
) : this(
|
||||
startOffset, endOffset, type, symbol, descriptor, descriptor.typeParametersCount,
|
||||
descriptor.valueParameters.size, origin, superQualifierSymbol
|
||||
startOffset, endOffset, type, symbol, symbol.descriptor.typeParametersCount, symbol.descriptor.valueParameters.size,
|
||||
origin, superQualifierSymbol
|
||||
)
|
||||
|
||||
constructor(
|
||||
@@ -70,13 +69,12 @@ class IrCallImpl(
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrFunctionSymbol,
|
||||
descriptor: FunctionDescriptor,
|
||||
typeArgumentsCount: Int,
|
||||
origin: IrStatementOrigin? = null,
|
||||
superQualifierSymbol: IrClassSymbol? = null
|
||||
) : this(
|
||||
startOffset, endOffset, type, symbol, descriptor, typeArgumentsCount,
|
||||
descriptor.valueParameters.size, origin, superQualifierSymbol
|
||||
startOffset, endOffset, type, symbol, typeArgumentsCount, symbol.descriptor.valueParameters.size,
|
||||
origin, superQualifierSymbol
|
||||
)
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
|
||||
+2
-3
@@ -19,7 +19,6 @@ class IrConstructorCallImpl(
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val symbol: IrConstructorSymbol,
|
||||
override val descriptor: ClassConstructorDescriptor,
|
||||
typeArgumentsCount: Int,
|
||||
override val constructorTypeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
@@ -31,6 +30,8 @@ class IrConstructorCallImpl(
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConstructorCall(this, data)
|
||||
|
||||
override val descriptor: ClassConstructorDescriptor get() = symbol.descriptor
|
||||
|
||||
companion object {
|
||||
fun fromSubstitutedDescriptor(
|
||||
startOffset: Int,
|
||||
@@ -48,7 +49,6 @@ class IrConstructorCallImpl(
|
||||
startOffset, endOffset,
|
||||
type,
|
||||
constructorSymbol,
|
||||
constructorDescriptor,
|
||||
totalTypeParametersCount,
|
||||
totalTypeParametersCount - classTypeParametersCount,
|
||||
valueParametersCount,
|
||||
@@ -83,7 +83,6 @@ class IrConstructorCallImpl(
|
||||
startOffset, endOffset,
|
||||
type,
|
||||
constructorSymbol,
|
||||
constructorSymbol.descriptor,
|
||||
totalTypeParametersCount,
|
||||
constructorTypeParametersCount,
|
||||
valueParametersCount,
|
||||
|
||||
+4
-12
@@ -28,7 +28,6 @@ class IrDelegatingConstructorCallImpl(
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val symbol: IrConstructorSymbol,
|
||||
override val descriptor: ClassConstructorDescriptor,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int
|
||||
) :
|
||||
@@ -41,29 +40,22 @@ class IrDelegatingConstructorCallImpl(
|
||||
),
|
||||
IrDelegatingConstructorCall {
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrConstructorSymbol,
|
||||
descriptor: ClassConstructorDescriptor
|
||||
) : this(startOffset, endOffset, type, symbol, descriptor, descriptor.typeParametersCount, descriptor.valueParameters.size)
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrConstructorSymbol
|
||||
) : this(startOffset, endOffset, type, symbol, symbol.descriptor)
|
||||
) : this(startOffset, endOffset, type, symbol, symbol.descriptor.typeParametersCount, symbol.descriptor.valueParameters.size)
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrConstructorSymbol,
|
||||
descriptor: ClassConstructorDescriptor,
|
||||
typeArgumentsCount: Int
|
||||
) : this(startOffset, endOffset, type, symbol, descriptor, typeArgumentsCount, descriptor.valueParameters.size)
|
||||
) : this(startOffset, endOffset, type, symbol, typeArgumentsCount, symbol.descriptor.valueParameters.size)
|
||||
|
||||
override val descriptor: ClassConstructorDescriptor get() = symbol.descriptor
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitDelegatingConstructorCall(this, data)
|
||||
|
||||
+3
-3
@@ -28,7 +28,6 @@ class IrFunctionReferenceImpl(
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val symbol: IrFunctionSymbol,
|
||||
override val descriptor: FunctionDescriptor,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
origin: IrStatementOrigin? = null
|
||||
@@ -48,10 +47,11 @@ class IrFunctionReferenceImpl(
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrFunctionSymbol,
|
||||
descriptor: FunctionDescriptor,
|
||||
typeArgumentsCount: Int,
|
||||
origin: IrStatementOrigin? = null
|
||||
) : this(startOffset, endOffset, type, symbol, descriptor, typeArgumentsCount, descriptor.valueParameters.size, origin)
|
||||
) : this(startOffset, endOffset, type, symbol, typeArgumentsCount, symbol.descriptor.valueParameters.size, origin)
|
||||
|
||||
override val descriptor: FunctionDescriptor get() = symbol.descriptor
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitFunctionReference(this, data)
|
||||
|
||||
+2
-17
@@ -31,7 +31,6 @@ class IrPropertyReferenceImpl(
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val symbol: IrPropertySymbol,
|
||||
override val descriptor: PropertyDescriptor,
|
||||
typeArgumentsCount: Int,
|
||||
override val field: IrFieldSymbol?,
|
||||
override val getter: IrSimpleFunctionSymbol?,
|
||||
@@ -41,22 +40,6 @@ class IrPropertyReferenceImpl(
|
||||
IrNoArgumentsCallableReferenceBase(startOffset, endOffset, type, typeArgumentsCount, origin),
|
||||
IrPropertyReference {
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrPropertySymbol,
|
||||
typeArgumentsCount: Int,
|
||||
field: IrFieldSymbol?,
|
||||
getter: IrSimpleFunctionSymbol?,
|
||||
setter: IrSimpleFunctionSymbol?,
|
||||
origin: IrStatementOrigin? = null
|
||||
) : this(
|
||||
startOffset, endOffset, type,
|
||||
symbol, symbol.descriptor,
|
||||
typeArgumentsCount, field, getter, setter, origin
|
||||
)
|
||||
|
||||
@Deprecated(message = "Don't use descriptor-based API for IrPropertyReference", level = DeprecationLevel.WARNING)
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
@@ -74,6 +57,8 @@ class IrPropertyReferenceImpl(
|
||||
typeArgumentsCount, field, getter, setter, origin
|
||||
)
|
||||
|
||||
override val descriptor: PropertyDescriptor get() = symbol.descriptor
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitPropertyReference(this, data)
|
||||
}
|
||||
@@ -495,7 +495,6 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
expression.startOffset, expression.endOffset,
|
||||
expression.type.remapType(),
|
||||
constructorSymbol,
|
||||
constructorSymbol.descriptor,
|
||||
expression.typeArgumentsCount,
|
||||
expression.constructorTypeArgumentsCount,
|
||||
expression.valueArgumentsCount,
|
||||
@@ -521,7 +520,6 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
expression.startOffset, expression.endOffset,
|
||||
expression.type.remapType(),
|
||||
newCallee,
|
||||
newCallee.descriptor,
|
||||
expression.typeArgumentsCount,
|
||||
expression.valueArgumentsCount,
|
||||
mapStatementOrigin(expression.origin),
|
||||
@@ -550,7 +548,6 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
expression.startOffset, expression.endOffset,
|
||||
expression.type.remapType(),
|
||||
newConstructor,
|
||||
newConstructor.descriptor,
|
||||
expression.typeArgumentsCount
|
||||
).apply {
|
||||
copyRemappedTypeArgumentsFrom(expression)
|
||||
@@ -584,7 +581,6 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
expression.startOffset, expression.endOffset,
|
||||
expression.type.remapType(),
|
||||
symbol,
|
||||
symbol.descriptor,
|
||||
expression.typeArgumentsCount,
|
||||
expression.valueArgumentsCount,
|
||||
mapStatementOrigin(expression.origin)
|
||||
|
||||
@@ -482,7 +482,6 @@ fun irConstructorCall(
|
||||
endOffset,
|
||||
type,
|
||||
newSymbol,
|
||||
newSymbol.descriptor,
|
||||
typeArgumentsCount,
|
||||
0,
|
||||
call.valueArgumentsCount,
|
||||
@@ -521,7 +520,6 @@ fun irCall(
|
||||
endOffset,
|
||||
type,
|
||||
newSymbol,
|
||||
newSymbol.descriptor,
|
||||
typeArgumentsCount,
|
||||
origin
|
||||
).apply {
|
||||
|
||||
Reference in New Issue
Block a user