IR: remove IrSymbolDeclaration
This commit is contained in:
@@ -35,13 +35,13 @@ import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.descriptors.WrappedReceiverParameterDescriptor
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConst
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.ir.types.impl.IrErrorTypeImpl
|
||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||
@@ -331,22 +331,15 @@ internal fun IrDeclarationParent.declareThisReceiverParameter(
|
||||
thisOrigin: IrDeclarationOrigin,
|
||||
startOffset: Int = this.startOffset,
|
||||
endOffset: Int = this.endOffset
|
||||
): IrValueParameter {
|
||||
val receiverDescriptor = WrappedReceiverParameterDescriptor()
|
||||
return symbolTable.declareValueParameter(
|
||||
startOffset, endOffset, thisOrigin, receiverDescriptor, thisType
|
||||
) { symbol ->
|
||||
symbolTable.irFactory.createValueParameter(
|
||||
startOffset, endOffset, thisOrigin, symbol,
|
||||
Name.special("<this>"), UNDEFINED_PARAMETER_INDEX, thisType,
|
||||
varargElementType = null, isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
).apply {
|
||||
this.parent = this@declareThisReceiverParameter
|
||||
receiverDescriptor.bind(this)
|
||||
}
|
||||
): IrValueParameter =
|
||||
symbolTable.irFactory.createValueParameter(
|
||||
startOffset, endOffset, thisOrigin, IrValueParameterSymbolImpl(),
|
||||
Name.special("<this>"), UNDEFINED_PARAMETER_INDEX, thisType,
|
||||
varargElementType = null, isCrossinline = false, isNoinline = false,
|
||||
isHidden = false, isAssignable = false
|
||||
).apply {
|
||||
this.parent = this@declareThisReceiverParameter
|
||||
}
|
||||
}
|
||||
|
||||
fun FirClass<*>.irOrigin(firProvider: FirProvider): IrDeclarationOrigin = when {
|
||||
firProvider.getFirClassifierContainerFileIfAny(symbol) != null -> IrDeclarationOrigin.DEFINED
|
||||
|
||||
+1
-2
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.common.BodyLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||
import org.jetbrains.kotlin.ir.builders.irCall
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSymbolDeclaration
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
@@ -23,7 +22,7 @@ class KotlinNothingValueExceptionLowering(
|
||||
) : BodyLoweringPass {
|
||||
override fun lower(irBody: IrBody, container: IrDeclaration) {
|
||||
if (!skip(container)) {
|
||||
irBody.transformChildrenVoid(Transformer((container as IrSymbolDeclaration<*>).symbol))
|
||||
irBody.transformChildrenVoid(Transformer(container.symbol))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-4
@@ -121,10 +121,6 @@ private class StringConcatenationTransformer(val lower: StringConcatenationLower
|
||||
}
|
||||
|
||||
override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
|
||||
if (declaration !is IrSymbolDeclaration<*>) {
|
||||
return super.visitDeclaration(declaration)
|
||||
}
|
||||
|
||||
with(declaration) {
|
||||
buildersStack.add(
|
||||
context.createIrBuilder(declaration.symbol, startOffset, endOffset)
|
||||
|
||||
+2
-1
@@ -23,9 +23,10 @@ import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrAnonymousInitializer : IrDeclarationBase(), IrSymbolDeclaration<IrAnonymousInitializerSymbol> {
|
||||
abstract class IrAnonymousInitializer : IrDeclarationBase() {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: ClassDescriptor // TODO special descriptor for anonymous initializer blocks
|
||||
abstract override val symbol: IrAnonymousInitializerSymbol
|
||||
|
||||
abstract val isStatic: Boolean
|
||||
|
||||
|
||||
@@ -29,11 +29,12 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrClass :
|
||||
IrDeclarationBase(), IrSymbolDeclaration<IrClassSymbol>, IrDeclarationWithName, IrDeclarationWithVisibility,
|
||||
IrDeclarationBase(), IrDeclarationWithName, IrDeclarationWithVisibility,
|
||||
IrDeclarationContainer, IrTypeParametersContainer, IrAttributeContainer, IrMetadataSourceOwner {
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: ClassDescriptor
|
||||
abstract override val symbol: IrClassSymbol
|
||||
|
||||
abstract val kind: ClassKind
|
||||
abstract var modality: Modality
|
||||
|
||||
@@ -21,9 +21,10 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrConstructor : IrFunction(), IrSymbolDeclaration<IrConstructorSymbol> {
|
||||
abstract class IrConstructor : IrFunction() {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: ClassConstructorDescriptor
|
||||
abstract override val symbol: IrConstructorSymbol
|
||||
|
||||
abstract val isPrimary: Boolean
|
||||
|
||||
|
||||
@@ -48,10 +48,6 @@ interface IrDeclaration : IrStatement, IrSymbolOwner, IrMutableAnnotationContain
|
||||
|
||||
abstract class IrDeclarationBase : IrElementBase(), IrDeclaration
|
||||
|
||||
interface IrSymbolDeclaration<out S : IrSymbol> : IrDeclaration {
|
||||
override val symbol: S
|
||||
}
|
||||
|
||||
interface IrOverridableDeclaration<S : IrSymbol> : IrDeclaration {
|
||||
var overriddenSymbols: List<S>
|
||||
}
|
||||
|
||||
@@ -23,9 +23,10 @@ import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrEnumEntry : IrDeclarationBase(), IrSymbolDeclaration<IrEnumEntrySymbol>, IrDeclarationWithName {
|
||||
abstract class IrEnumEntry : IrDeclarationBase(), IrDeclarationWithName {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: ClassDescriptor
|
||||
abstract override val symbol: IrEnumEntrySymbol
|
||||
|
||||
abstract var correspondingClass: IrClass?
|
||||
abstract var initializerExpression: IrExpressionBody?
|
||||
|
||||
+3
-1
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.ir.declarations
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
|
||||
interface IrFakeOverrideFunction : IrSymbolDeclaration<IrSimpleFunctionSymbol> {
|
||||
interface IrFakeOverrideFunction : IrDeclaration {
|
||||
override val symbol: IrSimpleFunctionSymbol
|
||||
|
||||
var modality: Modality
|
||||
|
||||
fun acquireSymbol(symbol: IrSimpleFunctionSymbol): IrSimpleFunction
|
||||
|
||||
+3
-1
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.ir.declarations
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
|
||||
interface IrFakeOverrideProperty : IrSymbolDeclaration<IrPropertySymbol> {
|
||||
interface IrFakeOverrideProperty : IrDeclaration {
|
||||
override val symbol: IrPropertySymbol
|
||||
|
||||
var modality: Modality
|
||||
var getter: IrSimpleFunction?
|
||||
var setter: IrSimpleFunction?
|
||||
|
||||
@@ -16,11 +16,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrField :
|
||||
IrDeclarationBase(),
|
||||
IrSymbolDeclaration<IrFieldSymbol>,
|
||||
IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationParent, IrMetadataSourceOwner {
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: PropertyDescriptor
|
||||
abstract override val symbol: IrFieldSymbol
|
||||
|
||||
abstract var type: IrType
|
||||
abstract val isFinal: Boolean
|
||||
|
||||
@@ -13,9 +13,11 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
//TODO: make IrScript as IrPackageFragment, because script is used as a file, not as a class
|
||||
//NOTE: declarations and statements stored separately
|
||||
abstract class IrScript :
|
||||
IrDeclarationBase(), IrSymbolDeclaration<IrScriptSymbol>, IrDeclarationWithName,
|
||||
IrDeclarationBase(), IrDeclarationWithName,
|
||||
IrDeclarationParent, IrStatementContainer {
|
||||
|
||||
abstract override val symbol: IrScriptSymbol
|
||||
|
||||
// NOTE: is the result of the FE conversion, because there script interpreted as a class and has receiver
|
||||
// TODO: consider removing from here and handle appropriately in the lowering
|
||||
abstract var thisReceiver: IrValueParameter
|
||||
|
||||
@@ -11,11 +11,12 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrSimpleFunction :
|
||||
IrFunction(),
|
||||
IrSymbolDeclaration<IrSimpleFunctionSymbol>,
|
||||
IrOverridableDeclaration<IrSimpleFunctionSymbol>,
|
||||
IrOverridableMember,
|
||||
IrAttributeContainer {
|
||||
|
||||
abstract override val symbol: IrSimpleFunctionSymbol
|
||||
|
||||
abstract val isTailrec: Boolean
|
||||
abstract val isSuspend: Boolean
|
||||
abstract val isFakeOverride: Boolean
|
||||
|
||||
@@ -15,13 +15,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrTypeAlias :
|
||||
IrDeclarationBase(),
|
||||
IrSymbolDeclaration<IrTypeAliasSymbol>,
|
||||
IrDeclarationWithName,
|
||||
IrDeclarationWithVisibility,
|
||||
IrTypeParametersContainer {
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: TypeAliasDescriptor
|
||||
abstract override val symbol: IrTypeAliasSymbol
|
||||
|
||||
abstract val isActual: Boolean
|
||||
abstract var expandedType: IrType
|
||||
|
||||
@@ -24,9 +24,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
abstract class IrTypeParameter : IrDeclarationBase(), IrSymbolDeclaration<IrTypeParameterSymbol>, IrDeclarationWithName {
|
||||
abstract class IrTypeParameter : IrDeclarationBase(), IrDeclarationWithName {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: TypeParameterDescriptor
|
||||
abstract override val symbol: IrTypeParameterSymbol
|
||||
|
||||
abstract val variance: Variance
|
||||
abstract val index: Int
|
||||
|
||||
@@ -24,9 +24,10 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrValueParameter : IrValueDeclaration(), IrSymbolDeclaration<IrValueParameterSymbol> {
|
||||
abstract class IrValueParameter : IrValueDeclaration() {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: ParameterDescriptor
|
||||
abstract override val symbol: IrValueParameterSymbol
|
||||
|
||||
abstract val index: Int
|
||||
abstract var varargElementType: IrType?
|
||||
|
||||
@@ -21,9 +21,10 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||
|
||||
abstract class IrVariable : IrValueDeclaration(), IrSymbolDeclaration<IrVariableSymbol> {
|
||||
abstract class IrVariable : IrValueDeclaration() {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
abstract override val descriptor: VariableDescriptor
|
||||
abstract override val symbol: IrVariableSymbol
|
||||
|
||||
abstract val isVar: Boolean
|
||||
abstract val isConst: Boolean
|
||||
|
||||
@@ -195,9 +195,8 @@ class SymbolTable(
|
||||
}
|
||||
} else {
|
||||
if (d.isBound()) {
|
||||
val result = (d.owner as? IrSymbolDeclaration<*>)?.symbol ?: descriptorToSymbol[d]
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
result as S?
|
||||
d.owner.symbol as S
|
||||
} else {
|
||||
descriptorToSymbol[d]
|
||||
}
|
||||
|
||||
-1
@@ -90,7 +90,6 @@ class ExpectActualTable(val expectDescriptorToSymbol: MutableMap<DeclarationDesc
|
||||
|
||||
fun findExpectsForActuals(declaration: IrDeclaration) {
|
||||
if (declaration.descriptor !is MemberDescriptor) return
|
||||
if (declaration !is IrSymbolDeclaration<*>) return
|
||||
|
||||
val descriptor = declaration.symbol.descriptor
|
||||
|
||||
|
||||
Reference in New Issue
Block a user