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