IR: IrDelegatingConstructorCall.fromSymbolDescriptor

This commit is contained in:
Georgy Bronnikov
2020-10-14 13:16:32 +03:00
parent b28c85f5ea
commit 14b3beefb3
8 changed files with 33 additions and 26 deletions
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
import org.jetbrains.kotlin.ir.expressions.typeParametersCount
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.allTypeParameters
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
class IrDelegatingConstructorCallImpl(
@@ -35,24 +36,28 @@ class IrDelegatingConstructorCallImpl(
override val origin: IrStatementOrigin?
get() = null
@ObsoleteDescriptorBasedAPI
constructor(
startOffset: Int,
endOffset: Int,
type: IrType,
symbol: IrConstructorSymbol
) : this(startOffset, endOffset, type, symbol, symbol.descriptor.typeParametersCount, symbol.descriptor.valueParameters.size)
@ObsoleteDescriptorBasedAPI
constructor(
startOffset: Int,
endOffset: Int,
type: IrType,
symbol: IrConstructorSymbol,
typeArgumentsCount: Int
) : this(startOffset, endOffset, type, symbol, typeArgumentsCount, symbol.descriptor.valueParameters.size)
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitDelegatingConstructorCall(this, data)
}
companion object {
@ObsoleteDescriptorBasedAPI
fun fromSymbolDescriptor(
startOffset: Int,
endOffset: Int,
type: IrType,
symbol: IrConstructorSymbol,
typeArgumentsCount: Int = symbol.descriptor.typeParametersCount,
valueArgumentsCount: Int = symbol.descriptor.valueParameters.size
) = IrDelegatingConstructorCallImpl(startOffset, endOffset, type, symbol, typeArgumentsCount, valueArgumentsCount)
fun fromSymbolOwner(
startOffset: Int,
endOffset: Int,
type: IrType,
symbol: IrConstructorSymbol,
typeArgumentsCount: Int = symbol.owner.allTypeParameters.size,
valueArgumentsCount: Int = symbol.owner.valueParameters.size
) = IrDelegatingConstructorCallImpl(startOffset, endOffset, type, symbol, typeArgumentsCount, valueArgumentsCount)
}
}