IR: remove IrSymbolDeclaration

This commit is contained in:
Georgy Bronnikov
2020-12-06 15:58:51 +03:00
parent d714adacae
commit b05400154d
19 changed files with 38 additions and 42 deletions
@@ -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?
@@ -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
@@ -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]
}