valueArgumentsCount
This commit is contained in:
+1
@@ -33,6 +33,7 @@ interface IrMemberAccessExpression : IrExpression {
|
||||
// NB `typeParameterDescriptor` should be taken from `descriptor.original`
|
||||
fun getTypeArgument(typeParameterDescriptor: TypeParameterDescriptor): KotlinType?
|
||||
|
||||
val valueArgumentsCount: Int
|
||||
fun getValueArgument(index: Int): IrExpression?
|
||||
fun putValueArgument(index: Int, valueArgument: IrExpression?)
|
||||
fun removeValueArgument(index: Int)
|
||||
|
||||
+4
-3
@@ -26,12 +26,13 @@ import java.lang.AssertionError
|
||||
|
||||
abstract class IrCallWithIndexedArgumentsBase(
|
||||
startOffset: Int, endOffset: Int, type: KotlinType,
|
||||
numArguments: Int,
|
||||
valueArgumentsCount: Int,
|
||||
typeArguments: Map<TypeParameterDescriptor, KotlinType>?,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) : IrMemberAccessExpressionBase(startOffset, endOffset, type, typeArguments) {
|
||||
) : IrMemberAccessExpressionBase(startOffset, endOffset, type, typeArguments, valueArgumentsCount) {
|
||||
|
||||
private val argumentsByParameterIndex =
|
||||
arrayOfNulls<IrExpression>(numArguments)
|
||||
arrayOfNulls<IrExpression>(valueArgumentsCount)
|
||||
|
||||
override fun getValueArgument(index: Int): IrExpression? =
|
||||
argumentsByParameterIndex[index]
|
||||
|
||||
+1
@@ -40,6 +40,7 @@ class IrFunctionReferenceImpl(
|
||||
typeArguments,
|
||||
origin
|
||||
) {
|
||||
|
||||
@Deprecated("Creates unbound symbol")
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
|
||||
+2
-1
@@ -27,7 +27,8 @@ abstract class IrMemberAccessExpressionBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: KotlinType,
|
||||
val typeArguments: Map<TypeParameterDescriptor, KotlinType>?
|
||||
val typeArguments: Map<TypeParameterDescriptor, KotlinType>?,
|
||||
override val valueArgumentsCount: Int
|
||||
) : IrExpressionBase(startOffset, endOffset, type), IrMemberAccessExpression {
|
||||
override var dispatchReceiver: IrExpression? = null
|
||||
override var extensionReceiver: IrExpression? = null
|
||||
|
||||
+2
-1
@@ -29,7 +29,8 @@ abstract class IrNoArgumentsCallableReferenceBase(
|
||||
typeArguments: Map<TypeParameterDescriptor, KotlinType>?,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) : IrCallableReference,
|
||||
IrMemberAccessExpressionBase(startOffset, endOffset, type, typeArguments) {
|
||||
IrMemberAccessExpressionBase(startOffset, endOffset, type, typeArguments, 0) {
|
||||
|
||||
private fun throwNoValueArguments(): Nothing {
|
||||
throw UnsupportedOperationException("Property reference $descriptor has no value arguments")
|
||||
}
|
||||
|
||||
+29
-8
@@ -35,8 +35,11 @@ abstract class IrPrimitiveCallBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val origin: IrStatementOrigin?,
|
||||
override val symbol: IrFunctionSymbol
|
||||
) : IrExpressionBase(startOffset, endOffset, symbol.descriptor.returnType!!), IrCall {
|
||||
override val symbol: IrFunctionSymbol,
|
||||
override val valueArgumentsCount: Int
|
||||
) : IrExpressionBase(startOffset, endOffset, symbol.descriptor.returnType!!),
|
||||
IrCall {
|
||||
|
||||
override val descriptor: FunctionDescriptor get() = symbol.descriptor
|
||||
override val superQualifier: ClassDescriptor? get() = null
|
||||
override val superQualifierSymbol: IrClassSymbol? get() = null
|
||||
@@ -72,8 +75,14 @@ abstract class IrPrimitiveCallBase(
|
||||
}
|
||||
}
|
||||
|
||||
class IrNullaryPrimitiveImpl(startOffset: Int, endOffset: Int, origin: IrStatementOrigin?, symbol: IrFunctionSymbol) :
|
||||
IrPrimitiveCallBase(startOffset, endOffset, origin, symbol), IrCallWithShallowCopy {
|
||||
class IrNullaryPrimitiveImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrStatementOrigin?,
|
||||
symbol: IrFunctionSymbol
|
||||
) : IrPrimitiveCallBase(startOffset, endOffset, origin, symbol, 0),
|
||||
IrCallWithShallowCopy {
|
||||
|
||||
override fun getValueArgument(index: Int): IrExpression? = null
|
||||
|
||||
override fun putValueArgument(index: Int, valueArgument: IrExpression?) {
|
||||
@@ -95,8 +104,14 @@ class IrNullaryPrimitiveImpl(startOffset: Int, endOffset: Int, origin: IrStateme
|
||||
IrNullaryPrimitiveImpl(startOffset, endOffset, newOrigin, createFunctionSymbol(newCallee))
|
||||
}
|
||||
|
||||
class IrUnaryPrimitiveImpl(startOffset: Int, endOffset: Int, origin: IrStatementOrigin?, symbol: IrFunctionSymbol) :
|
||||
IrPrimitiveCallBase(startOffset, endOffset, origin, symbol), IrCallWithShallowCopy {
|
||||
class IrUnaryPrimitiveImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrStatementOrigin?,
|
||||
symbol: IrFunctionSymbol
|
||||
) : IrPrimitiveCallBase(startOffset, endOffset, origin, symbol, 1),
|
||||
IrCallWithShallowCopy {
|
||||
|
||||
@Deprecated("Creates unbound symbol")
|
||||
constructor(
|
||||
startOffset: Int, endOffset: Int,
|
||||
@@ -160,8 +175,14 @@ class IrUnaryPrimitiveImpl(startOffset: Int, endOffset: Int, origin: IrStatement
|
||||
IrUnaryPrimitiveImpl(startOffset, endOffset, newOrigin, newCallee)
|
||||
}
|
||||
|
||||
class IrBinaryPrimitiveImpl(startOffset: Int, endOffset: Int, origin: IrStatementOrigin?, symbol: IrFunctionSymbol) :
|
||||
IrPrimitiveCallBase(startOffset, endOffset, origin, symbol), IrCallWithShallowCopy {
|
||||
class IrBinaryPrimitiveImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrStatementOrigin?,
|
||||
symbol: IrFunctionSymbol
|
||||
) : IrPrimitiveCallBase(startOffset, endOffset, origin, symbol, 2),
|
||||
IrCallWithShallowCopy {
|
||||
|
||||
@Deprecated("Creates unbound symbol")
|
||||
constructor(
|
||||
startOffset: Int, endOffset: Int, origin: IrStatementOrigin?,
|
||||
|
||||
+8
-3
@@ -38,9 +38,12 @@ abstract class IrPropertyAccessorCallBase(
|
||||
override val symbol: IrFunctionSymbol,
|
||||
override val descriptor: FunctionDescriptor,
|
||||
typeArguments: Map<TypeParameterDescriptor, KotlinType>?,
|
||||
valueArgumentsCount: Int,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
override val superQualifierSymbol: IrClassSymbol? = null
|
||||
) : IrMemberAccessExpressionBase(startOffset, endOffset, descriptor.returnType!!, typeArguments), IrCall {
|
||||
) : IrMemberAccessExpressionBase(startOffset, endOffset, descriptor.returnType!!, typeArguments, valueArgumentsCount),
|
||||
IrCall {
|
||||
|
||||
override val superQualifier: ClassDescriptor? get() = superQualifierSymbol?.descriptor
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
@@ -59,8 +62,9 @@ class IrGetterCallImpl(
|
||||
typeArguments: Map<TypeParameterDescriptor, KotlinType>?,
|
||||
origin: IrStatementOrigin? = null,
|
||||
superQualifierSymbol: IrClassSymbol? = null
|
||||
) : IrPropertyAccessorCallBase(startOffset, endOffset, symbol, descriptor, typeArguments, origin, superQualifierSymbol),
|
||||
) : IrPropertyAccessorCallBase(startOffset, endOffset, symbol, descriptor, typeArguments, 0, origin, superQualifierSymbol),
|
||||
IrCallWithShallowCopy {
|
||||
|
||||
constructor(
|
||||
startOffset: Int, endOffset: Int,
|
||||
symbol: IrFunctionSymbol,
|
||||
@@ -110,8 +114,9 @@ class IrSetterCallImpl(
|
||||
typeArguments: Map<TypeParameterDescriptor, KotlinType>?,
|
||||
origin: IrStatementOrigin? = null,
|
||||
superQualifierSymbol: IrClassSymbol? = null
|
||||
) : IrPropertyAccessorCallBase(startOffset, endOffset, symbol, descriptor, typeArguments, origin, superQualifierSymbol),
|
||||
) : IrPropertyAccessorCallBase(startOffset, endOffset, symbol, descriptor, typeArguments, 1, origin, superQualifierSymbol),
|
||||
IrCallWithShallowCopy {
|
||||
|
||||
constructor(
|
||||
startOffset: Int, endOffset: Int,
|
||||
symbol: IrFunctionSymbol,
|
||||
|
||||
Reference in New Issue
Block a user