IR: IrFunctionReference.fromSymbolDescriptor

This commit is contained in:
Georgy Bronnikov
2020-10-14 14:49:19 +03:00
parent 14b3beefb3
commit 305da8ee10
5 changed files with 45 additions and 24 deletions
@@ -36,25 +36,6 @@ class IrFunctionReferenceImpl(
override val reflectionTarget: IrFunctionSymbol? = symbol,
override val origin: IrStatementOrigin? = null,
) : IrFunctionReference(typeArgumentsCount) {
@ObsoleteDescriptorBasedAPI
constructor(
startOffset: Int,
endOffset: Int,
type: IrType,
symbol: IrFunctionSymbol,
typeArgumentsCount: Int,
reflectionTarget: IrFunctionSymbol?,
origin: IrStatementOrigin? = null
) : this(
startOffset, endOffset,
type,
symbol,
typeArgumentsCount,
symbol.descriptor.valueParameters.size,
reflectionTarget,
origin
)
override val referencedName: Name
get() = symbol.owner.name
@@ -92,4 +73,43 @@ class IrFunctionReferenceImpl(
argumentsByParameterIndex[i] = irExpression?.transform(transformer, data)
}
}
companion object {
@ObsoleteDescriptorBasedAPI
fun fromSymbolDescriptor(
startOffset: Int,
endOffset: Int,
type: IrType,
symbol: IrFunctionSymbol,
typeArgumentsCount: Int,
reflectionTarget: IrFunctionSymbol?,
origin: IrStatementOrigin? = null
) = IrFunctionReferenceImpl(
startOffset, endOffset,
type,
symbol,
typeArgumentsCount,
symbol.descriptor.valueParameters.size,
reflectionTarget,
origin
)
fun fromSymbolOwner(
startOffset: Int,
endOffset: Int,
type: IrType,
symbol: IrFunctionSymbol,
typeArgumentsCount: Int,
reflectionTarget: IrFunctionSymbol?,
origin: IrStatementOrigin? = null
) = IrFunctionReferenceImpl(
startOffset, endOffset,
type,
symbol,
typeArgumentsCount,
symbol.owner.valueParameters.size,
reflectionTarget,
origin
)
}
}