IR: use default parameters in Ir...Impl constructors
This commit is contained in:
@@ -38,17 +38,17 @@ class IrClassImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrClassSymbol,
|
override val symbol: IrClassSymbol,
|
||||||
override val name: Name,
|
override val name: Name = symbol.descriptor.name,
|
||||||
override val kind: ClassKind,
|
override val kind: ClassKind = symbol.descriptor.kind,
|
||||||
visibility: Visibility,
|
visibility: Visibility = symbol.descriptor.visibility,
|
||||||
modality: Modality,
|
modality: Modality = symbol.descriptor.modality,
|
||||||
override val isCompanion: Boolean,
|
override val isCompanion: Boolean = symbol.descriptor.isCompanionObject,
|
||||||
override val isInner: Boolean,
|
override val isInner: Boolean = symbol.descriptor.isInner,
|
||||||
override val isData: Boolean,
|
override val isData: Boolean = symbol.descriptor.isData,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean = symbol.descriptor.isEffectivelyExternal(),
|
||||||
override val isInline: Boolean,
|
override val isInline: Boolean = symbol.descriptor.isInline,
|
||||||
override val isExpect: Boolean,
|
override val isExpect: Boolean = symbol.descriptor.isExpect,
|
||||||
override val isFun: Boolean
|
override val isFun: Boolean = symbol.descriptor.isFun
|
||||||
) :
|
) :
|
||||||
IrDeclarationBase<ClassCarrier>(startOffset, endOffset, origin),
|
IrDeclarationBase<ClassCarrier>(startOffset, endOffset, origin),
|
||||||
IrClass,
|
IrClass,
|
||||||
|
|||||||
+6
-6
@@ -32,13 +32,13 @@ class IrConstructorImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrConstructorSymbol,
|
override val symbol: IrConstructorSymbol,
|
||||||
name: Name,
|
name: Name = symbol.descriptor.name,
|
||||||
visibility: Visibility,
|
visibility: Visibility = symbol.descriptor.visibility,
|
||||||
returnType: IrType,
|
returnType: IrType,
|
||||||
isInline: Boolean,
|
isInline: Boolean = symbol.descriptor.isInline,
|
||||||
isExternal: Boolean,
|
isExternal: Boolean = symbol.descriptor.isEffectivelyExternal(),
|
||||||
override val isPrimary: Boolean,
|
override val isPrimary: Boolean = symbol.descriptor.isPrimary,
|
||||||
isExpect: Boolean
|
isExpect: Boolean = symbol.descriptor.isExpect
|
||||||
) :
|
) :
|
||||||
IrFunctionBase<ConstructorCarrier>(
|
IrFunctionBase<ConstructorCarrier>(
|
||||||
startOffset, endOffset, origin, name,
|
startOffset, endOffset, origin, name,
|
||||||
|
|||||||
@@ -36,13 +36,13 @@ class IrFieldImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrFieldSymbol,
|
override val symbol: IrFieldSymbol,
|
||||||
override val name: Name,
|
override val name: Name = symbol.descriptor.name,
|
||||||
override val type: IrType,
|
override val type: IrType,
|
||||||
override val visibility: Visibility,
|
override val visibility: Visibility = symbol.descriptor.visibility,
|
||||||
override val isFinal: Boolean,
|
override val isFinal: Boolean = !symbol.descriptor.isVar,
|
||||||
override val isExternal: Boolean,
|
override val isExternal: Boolean = symbol.descriptor.isEffectivelyExternal(),
|
||||||
override val isStatic: Boolean,
|
override val isStatic: Boolean = symbol.descriptor.dispatchReceiverParameter == null,
|
||||||
override val isFakeOverride: Boolean
|
override val isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
) : IrDeclarationBase<FieldCarrier>(startOffset, endOffset, origin),
|
) : IrDeclarationBase<FieldCarrier>(startOffset, endOffset, origin),
|
||||||
IrField,
|
IrField,
|
||||||
FieldCarrier {
|
FieldCarrier {
|
||||||
|
|||||||
+10
-10
@@ -23,17 +23,17 @@ class IrFunctionImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrSimpleFunctionSymbol,
|
override val symbol: IrSimpleFunctionSymbol,
|
||||||
name: Name,
|
name: Name = symbol.descriptor.name,
|
||||||
visibility: Visibility,
|
visibility: Visibility = symbol.descriptor.visibility,
|
||||||
override val modality: Modality,
|
override val modality: Modality = symbol.descriptor.modality,
|
||||||
returnType: IrType,
|
returnType: IrType,
|
||||||
isInline: Boolean,
|
isInline: Boolean = symbol.descriptor.isInline,
|
||||||
isExternal: Boolean,
|
isExternal: Boolean = symbol.descriptor.isExternal,
|
||||||
override val isTailrec: Boolean,
|
override val isTailrec: Boolean = symbol.descriptor.isTailrec,
|
||||||
override val isSuspend: Boolean,
|
override val isSuspend: Boolean = symbol.descriptor.isSuspend,
|
||||||
override val isOperator: Boolean,
|
override val isOperator: Boolean = symbol.descriptor.isOperator,
|
||||||
isExpect: Boolean,
|
isExpect: Boolean = symbol.descriptor.isExpect,
|
||||||
override val isFakeOverride: Boolean
|
override val isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
) :
|
) :
|
||||||
IrFunctionBase<FunctionCarrier>(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType),
|
IrFunctionBase<FunctionCarrier>(startOffset, endOffset, origin, name, visibility, isInline, isExternal, isExpect, returnType),
|
||||||
IrSimpleFunction,
|
IrSimpleFunction,
|
||||||
|
|||||||
+2
-2
@@ -32,9 +32,9 @@ class IrLocalDelegatedPropertyImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrLocalDelegatedPropertySymbol,
|
override val symbol: IrLocalDelegatedPropertySymbol,
|
||||||
override val name: Name,
|
override val name: Name = symbol.descriptor.name,
|
||||||
override val type: IrType,
|
override val type: IrType,
|
||||||
override val isVar: Boolean
|
override val isVar: Boolean = symbol.descriptor.isVar
|
||||||
) :
|
) :
|
||||||
IrDeclarationBase<LocalDelegatedPropertyCarrier>(startOffset, endOffset, origin),
|
IrDeclarationBase<LocalDelegatedPropertyCarrier>(startOffset, endOffset, origin),
|
||||||
IrLocalDelegatedProperty,
|
IrLocalDelegatedProperty,
|
||||||
|
|||||||
+4
-18
@@ -34,29 +34,15 @@ class IrTypeParameterImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrTypeParameterSymbol,
|
override val symbol: IrTypeParameterSymbol,
|
||||||
override val name: Name,
|
override val name: Name = symbol.descriptor.name,
|
||||||
override val index: Int,
|
override val index: Int = symbol.descriptor.index,
|
||||||
override val isReified: Boolean,
|
override val isReified: Boolean = symbol.descriptor.isReified,
|
||||||
override val variance: Variance
|
override val variance: Variance = symbol.descriptor.variance
|
||||||
) :
|
) :
|
||||||
IrDeclarationBase<TypeParameterCarrier>(startOffset, endOffset, origin),
|
IrDeclarationBase<TypeParameterCarrier>(startOffset, endOffset, origin),
|
||||||
IrTypeParameter,
|
IrTypeParameter,
|
||||||
TypeParameterCarrier {
|
TypeParameterCarrier {
|
||||||
|
|
||||||
constructor(
|
|
||||||
startOffset: Int,
|
|
||||||
endOffset: Int,
|
|
||||||
origin: IrDeclarationOrigin,
|
|
||||||
symbol: IrTypeParameterSymbol
|
|
||||||
) :
|
|
||||||
this(
|
|
||||||
startOffset, endOffset, origin, symbol,
|
|
||||||
symbol.descriptor.name,
|
|
||||||
symbol.descriptor.index,
|
|
||||||
symbol.descriptor.isReified,
|
|
||||||
symbol.descriptor.variance
|
|
||||||
)
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
|
|||||||
+4
-4
@@ -35,12 +35,12 @@ class IrValueParameterImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrValueParameterSymbol,
|
override val symbol: IrValueParameterSymbol,
|
||||||
override val name: Name,
|
override val name: Name = symbol.descriptor.name,
|
||||||
override val index: Int,
|
override val index: Int = symbol.descriptor.safeAs<ValueParameterDescriptor>()?.index ?: -1,
|
||||||
override val type: IrType,
|
override val type: IrType,
|
||||||
override val varargElementType: IrType?,
|
override val varargElementType: IrType?,
|
||||||
override val isCrossinline: Boolean,
|
override val isCrossinline: Boolean = symbol.descriptor.safeAs<ValueParameterDescriptor>()?.isCrossinline ?: false,
|
||||||
override val isNoinline: Boolean
|
override val isNoinline: Boolean = symbol.descriptor.safeAs<ValueParameterDescriptor>()?.isNoinline ?: false
|
||||||
) :
|
) :
|
||||||
IrDeclarationBase<ValueParameterCarrier>(startOffset, endOffset, origin),
|
IrDeclarationBase<ValueParameterCarrier>(startOffset, endOffset, origin),
|
||||||
IrValueParameter,
|
IrValueParameter,
|
||||||
|
|||||||
@@ -36,11 +36,11 @@ class IrVariableImpl(
|
|||||||
override val endOffset: Int,
|
override val endOffset: Int,
|
||||||
override var origin: IrDeclarationOrigin,
|
override var origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrVariableSymbol,
|
override val symbol: IrVariableSymbol,
|
||||||
override val name: Name,
|
override val name: Name = symbol.descriptor.name,
|
||||||
override val type: IrType,
|
override val type: IrType,
|
||||||
override val isVar: Boolean,
|
override val isVar: Boolean = symbol.descriptor.isVar,
|
||||||
override val isConst: Boolean,
|
override val isConst: Boolean = symbol.descriptor.isConst,
|
||||||
override val isLateinit: Boolean
|
override val isLateinit: Boolean = symbol.descriptor.isLateInit
|
||||||
) : IrVariable {
|
) : IrVariable {
|
||||||
|
|
||||||
private var _parent: IrDeclarationParent? = null
|
private var _parent: IrDeclarationParent? = null
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.ir.symbols.*
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.*
|
import org.jetbrains.kotlin.ir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
|
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource
|
||||||
|
|
||||||
interface IrProvider {
|
interface IrProvider {
|
||||||
@@ -87,7 +86,10 @@ interface ReferenceSymbolTable {
|
|||||||
fun leaveScope(owner: DeclarationDescriptor)
|
fun leaveScope(owner: DeclarationDescriptor)
|
||||||
}
|
}
|
||||||
|
|
||||||
open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: NameProvider = NameProvider.DEFAULT) : ReferenceSymbolTable {
|
open class SymbolTable(
|
||||||
|
val signaturer: IdSignatureComposer,
|
||||||
|
private val nameProvider: NameProvider = NameProvider.DEFAULT
|
||||||
|
) : ReferenceSymbolTable {
|
||||||
|
|
||||||
@Suppress("LeakingThis")
|
@Suppress("LeakingThis")
|
||||||
val lazyWrapper = IrLazySymbolTable(this)
|
val lazyWrapper = IrLazySymbolTable(this)
|
||||||
@@ -375,15 +377,8 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
classFactory: (IrClassSymbol) -> IrClass = {
|
classFactory: (IrClassSymbol) -> IrClass = {
|
||||||
IrClassImpl(
|
IrClassImpl(
|
||||||
startOffset, endOffset, origin, it,
|
startOffset, endOffset, origin, it,
|
||||||
nameProvider.nameForDeclaration(descriptor), descriptor.kind,
|
nameProvider.nameForDeclaration(descriptor),
|
||||||
visibility, modality,
|
visibility = visibility, modality = modality,
|
||||||
isCompanion = descriptor.isCompanionObject,
|
|
||||||
isInner = descriptor.isInner,
|
|
||||||
isData = descriptor.isData,
|
|
||||||
isExternal = descriptor.isExternal,
|
|
||||||
isInline = descriptor.isInline,
|
|
||||||
isExpect = descriptor.isExpect,
|
|
||||||
isFun = descriptor.isFun
|
|
||||||
).apply { metadata = MetadataSource.Class(it.descriptor) }
|
).apply { metadata = MetadataSource.Class(it.descriptor) }
|
||||||
}
|
}
|
||||||
): IrClass {
|
): IrClass {
|
||||||
@@ -430,12 +425,7 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
IrConstructorImpl(
|
IrConstructorImpl(
|
||||||
startOffset, endOffset, origin, it,
|
startOffset, endOffset, origin, it,
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
nameProvider.nameForDeclaration(descriptor),
|
||||||
descriptor.visibility,
|
returnType = IrUninitializedType
|
||||||
returnType = IrUninitializedType,
|
|
||||||
isInline = descriptor.isInline,
|
|
||||||
isExternal = descriptor.isEffectivelyExternal(),
|
|
||||||
isPrimary = descriptor.isPrimary,
|
|
||||||
isExpect = descriptor.isExpect
|
|
||||||
).apply {
|
).apply {
|
||||||
metadata = MetadataSource.Function(it.descriptor)
|
metadata = MetadataSource.Function(it.descriptor)
|
||||||
}
|
}
|
||||||
@@ -530,10 +520,6 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
startOffset, endOffset, origin, it,
|
startOffset, endOffset, origin, it,
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
nameProvider.nameForDeclaration(descriptor),
|
||||||
type, visibility ?: it.descriptor.visibility,
|
type, visibility ?: it.descriptor.visibility,
|
||||||
isFinal = !descriptor.isVar,
|
|
||||||
isExternal = descriptor.isExternal,
|
|
||||||
isStatic = descriptor.dispatchReceiverParameter == null,
|
|
||||||
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
|
||||||
).apply {
|
).apply {
|
||||||
metadata = MetadataSource.Property(it.descriptor)
|
metadata = MetadataSource.Property(it.descriptor)
|
||||||
}
|
}
|
||||||
@@ -678,16 +664,7 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
IrFunctionImpl(
|
IrFunctionImpl(
|
||||||
startOffset, endOffset, origin, it,
|
startOffset, endOffset, origin, it,
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
nameProvider.nameForDeclaration(descriptor),
|
||||||
returnType = IrUninitializedType,
|
returnType = IrUninitializedType
|
||||||
visibility = descriptor.visibility,
|
|
||||||
modality = descriptor.modality,
|
|
||||||
isInline = descriptor.isInline,
|
|
||||||
isExternal = descriptor.isExternal,
|
|
||||||
isTailrec = descriptor.isTailrec,
|
|
||||||
isSuspend = descriptor.isSuspend,
|
|
||||||
isOperator = descriptor.isOperator,
|
|
||||||
isExpect = descriptor.isExpect,
|
|
||||||
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
|
||||||
).apply {
|
).apply {
|
||||||
metadata = MetadataSource.Function(it.descriptor)
|
metadata = MetadataSource.Function(it.descriptor)
|
||||||
}
|
}
|
||||||
@@ -739,11 +716,7 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
descriptor: TypeParameterDescriptor,
|
descriptor: TypeParameterDescriptor,
|
||||||
typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter = {
|
typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter = {
|
||||||
IrTypeParameterImpl(
|
IrTypeParameterImpl(startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor))
|
||||||
startOffset, endOffset, origin, it,
|
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
|
||||||
descriptor.index, descriptor.isReified, descriptor.variance
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
): IrTypeParameter =
|
): IrTypeParameter =
|
||||||
globalTypeParameterSymbolTable.declare(
|
globalTypeParameterSymbolTable.declare(
|
||||||
@@ -767,11 +740,7 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
descriptor: TypeParameterDescriptor,
|
descriptor: TypeParameterDescriptor,
|
||||||
typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter = {
|
typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter = {
|
||||||
IrTypeParameterImpl(
|
IrTypeParameterImpl(startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor))
|
||||||
startOffset, endOffset, origin, it,
|
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
|
||||||
descriptor.index, descriptor.isReified, descriptor.variance
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
): IrTypeParameter =
|
): IrTypeParameter =
|
||||||
scopedTypeParameterSymbolTable.declare(
|
scopedTypeParameterSymbolTable.declare(
|
||||||
@@ -799,14 +768,10 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
type: IrType,
|
type: IrType,
|
||||||
varargElementType: IrType? = null,
|
varargElementType: IrType? = null,
|
||||||
valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter = {
|
valueParameterFactory: (IrValueParameterSymbol) -> IrValueParameter = {
|
||||||
val valueParameterDescriptor = descriptor as? ValueParameterDescriptor
|
|
||||||
IrValueParameterImpl(
|
IrValueParameterImpl(
|
||||||
startOffset, endOffset, origin, it,
|
startOffset, endOffset, origin, it,
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
nameProvider.nameForDeclaration(descriptor),
|
||||||
valueParameterDescriptor?.index ?: -1,
|
type = type, varargElementType = varargElementType,
|
||||||
type, varargElementType,
|
|
||||||
isCrossinline = valueParameterDescriptor?.isCrossinline ?: false,
|
|
||||||
isNoinline = valueParameterDescriptor?.isNoinline ?: false
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
): IrValueParameter =
|
): IrValueParameter =
|
||||||
@@ -843,14 +808,7 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
descriptor: VariableDescriptor,
|
descriptor: VariableDescriptor,
|
||||||
type: IrType,
|
type: IrType,
|
||||||
variableFactory: (IrVariableSymbol) -> IrVariable = {
|
variableFactory: (IrVariableSymbol) -> IrVariable = {
|
||||||
IrVariableImpl(
|
IrVariableImpl(startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), type)
|
||||||
startOffset, endOffset, origin, it,
|
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
|
||||||
type,
|
|
||||||
isVar = descriptor.isVar,
|
|
||||||
isConst = descriptor.isConst,
|
|
||||||
isLateinit = descriptor.isLateInit
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
): IrVariable =
|
): IrVariable =
|
||||||
@@ -885,11 +843,7 @@ open class SymbolTable(val signaturer: IdSignatureComposer, val nameProvider: Na
|
|||||||
localDelegatedPropertySymbolTable.declareLocal(
|
localDelegatedPropertySymbolTable.declareLocal(
|
||||||
descriptor,
|
descriptor,
|
||||||
{ IrLocalDelegatedPropertySymbolImpl(descriptor) },
|
{ IrLocalDelegatedPropertySymbolImpl(descriptor) },
|
||||||
{
|
{ IrLocalDelegatedPropertyImpl(startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), type) }
|
||||||
IrLocalDelegatedPropertyImpl(
|
|
||||||
startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), type, descriptor.isVar
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
fun referenceLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors) =
|
fun referenceLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors) =
|
||||||
|
|||||||
Reference in New Issue
Block a user