[IR] Reorder parameters in IrFactory#createClass
This is to prepare for IrFactory auto-generation (KT-59308).
This commit is contained in:
committed by
Space Team
parent
bfb314adcb
commit
f46761a241
+25
-15
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.backend
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.fir.containingClassForLocalAttr
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnonymousObjectExpression
|
||||
@@ -352,18 +351,18 @@ class Fir2IrClassifierStorage(
|
||||
val irClass = regularClass.convertWithOffsets { startOffset, endOffset ->
|
||||
declareIrClass(signature) { symbol ->
|
||||
irFactory.createClass(
|
||||
startOffset,
|
||||
endOffset,
|
||||
regularClass.computeIrOrigin(predefinedOrigin),
|
||||
symbol,
|
||||
regularClass.name,
|
||||
regularClass.classKind,
|
||||
components.visibilityConverter.convertToDescriptorVisibility(visibility),
|
||||
modality,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = regularClass.computeIrOrigin(predefinedOrigin),
|
||||
name = regularClass.name,
|
||||
visibility = components.visibilityConverter.convertToDescriptorVisibility(visibility),
|
||||
symbol = symbol,
|
||||
kind = regularClass.classKind,
|
||||
modality = modality,
|
||||
isExternal = regularClass.isExternal,
|
||||
isCompanion = regularClass.isCompanion,
|
||||
isInner = regularClass.isInner,
|
||||
isData = regularClass.isData,
|
||||
isExternal = regularClass.isExternal,
|
||||
isValue = regularClass.isInline,
|
||||
isExpect = regularClass.isExpect,
|
||||
isFun = regularClass.isFun
|
||||
@@ -391,10 +390,15 @@ class Fir2IrClassifierStorage(
|
||||
val modality = Modality.FINAL
|
||||
val irAnonymousObject = anonymousObject.convertWithOffsets { startOffset, endOffset ->
|
||||
irFactory.createClass(
|
||||
startOffset, endOffset, origin, IrClassSymbolImpl(), name,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = components.visibilityConverter.convertToDescriptorVisibility(visibility),
|
||||
symbol = IrClassSymbolImpl(),
|
||||
// NB: for unknown reason, IR uses 'CLASS' kind for simple anonymous objects
|
||||
anonymousObject.classKind.takeIf { it == ClassKind.ENUM_ENTRY } ?: ClassKind.CLASS,
|
||||
components.visibilityConverter.convertToDescriptorVisibility(visibility), modality
|
||||
kind = anonymousObject.classKind.takeIf { it == ClassKind.ENUM_ENTRY } ?: ClassKind.CLASS,
|
||||
modality = modality,
|
||||
).apply {
|
||||
metadata = FirMetadataSource.Class(anonymousObject)
|
||||
}
|
||||
@@ -634,8 +638,14 @@ class Fir2IrClassifierStorage(
|
||||
|
||||
return symbolTable.referenceClass(signature, { Fir2IrClassSymbol(signature) }) {
|
||||
irFactory.createClass(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB, it, classId.shortClassName,
|
||||
ClassKind.CLASS, DescriptorVisibilities.DEFAULT_VISIBILITY, Modality.FINAL,
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
|
||||
name = classId.shortClassName,
|
||||
visibility = DescriptorVisibilities.DEFAULT_VISIBILITY,
|
||||
symbol = it,
|
||||
kind = ClassKind.CLASS,
|
||||
modality = Modality.FINAL,
|
||||
).apply {
|
||||
parent = irParent
|
||||
}
|
||||
|
||||
@@ -710,8 +710,21 @@ class IrBuiltInsOverFir(
|
||||
origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
||||
build()
|
||||
irFactory.createClass(
|
||||
startOffset, endOffset, origin, symbol, name, kind, visibility, modality,
|
||||
isCompanion, isInner, isData, isExternal, isValue, isExpect, isFun
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = visibility,
|
||||
symbol = symbol,
|
||||
kind = kind,
|
||||
modality = modality,
|
||||
isExternal = isExternal,
|
||||
isCompanion = isCompanion,
|
||||
isInner = isInner,
|
||||
isData = isData,
|
||||
isValue = isValue,
|
||||
isExpect = isExpect,
|
||||
isFun = isFun,
|
||||
)
|
||||
}.also {
|
||||
it.parent = parent
|
||||
@@ -776,8 +789,21 @@ class IrBuiltInsOverFir(
|
||||
origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
||||
builderBlock()
|
||||
irFactory.createClass(
|
||||
startOffset, endOffset, origin, symbol, name, kind, visibility, modality,
|
||||
isCompanion, isInner, isData, isExternal, isValue, isExpect, isFun
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = visibility,
|
||||
symbol = symbol,
|
||||
kind = kind,
|
||||
modality = modality,
|
||||
isExternal = isExternal,
|
||||
isCompanion = isCompanion,
|
||||
isInner = isInner,
|
||||
isData = isData,
|
||||
isValue = isValue,
|
||||
isExpect = isExpect,
|
||||
isFun = isFun,
|
||||
)
|
||||
}.also {
|
||||
it.parent = this
|
||||
|
||||
+8
-6
@@ -19,10 +19,6 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.interpreter.state.Complex
|
||||
import org.jetbrains.kotlin.ir.interpreter.state.ExceptionState
|
||||
import org.jetbrains.kotlin.ir.interpreter.state.Primitive
|
||||
import org.jetbrains.kotlin.ir.interpreter.state.State
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrVariableSymbolImpl
|
||||
@@ -108,8 +104,14 @@ internal fun createTempFunction(
|
||||
|
||||
internal fun createTempClass(name: Name, origin: IrDeclarationOrigin = TEMP_CLASS_FOR_INTERPRETER): IrClass {
|
||||
return IrFactoryImpl.createClass(
|
||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, origin, IrClassSymbolImpl(), name,
|
||||
ClassKind.CLASS, DescriptorVisibilities.PRIVATE, Modality.FINAL
|
||||
startOffset = SYNTHETIC_OFFSET,
|
||||
endOffset = SYNTHETIC_OFFSET,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = DescriptorVisibilities.PRIVATE,
|
||||
symbol = IrClassSymbolImpl(),
|
||||
kind = ClassKind.CLASS,
|
||||
modality = Modality.FINAL,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+8
-1
@@ -433,7 +433,14 @@ class IrDescriptorBasedFunctionFactory(
|
||||
val name = functionClassName(isK, isSuspend, n)
|
||||
if (symbol.isBound) return symbol.owner
|
||||
val klass = irFactory.createClass(
|
||||
offset, offset, classOrigin, symbol, Name.identifier(name), ClassKind.INTERFACE, DescriptorVisibilities.PUBLIC, Modality.ABSTRACT
|
||||
startOffset = offset,
|
||||
endOffset = offset,
|
||||
origin = classOrigin,
|
||||
name = Name.identifier(name),
|
||||
visibility = DescriptorVisibilities.PUBLIC,
|
||||
symbol = symbol,
|
||||
kind = ClassKind.INTERFACE,
|
||||
modality = Modality.ABSTRACT,
|
||||
)
|
||||
|
||||
val r = klass.createTypeParameters(n, descriptorFactory)
|
||||
|
||||
+15
-4
@@ -27,10 +27,21 @@ import org.jetbrains.kotlin.types.Variance
|
||||
@PublishedApi
|
||||
internal fun IrFactory.buildClass(builder: IrClassBuilder): IrClass = with(builder) {
|
||||
createClass(
|
||||
startOffset, endOffset, origin,
|
||||
IrClassSymbolImpl(),
|
||||
name, kind, visibility, modality,
|
||||
isCompanion, isInner, isData, isExternal, isValue, isExpect, isFun
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = visibility,
|
||||
symbol = IrClassSymbolImpl(),
|
||||
kind = kind,
|
||||
modality = modality,
|
||||
isExternal = isExternal,
|
||||
isCompanion = isCompanion,
|
||||
isInner = isInner,
|
||||
isData = isData,
|
||||
isValue = isValue,
|
||||
isExpect = isExpect,
|
||||
isFun = isFun,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -31,15 +31,15 @@ interface IrFactory {
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrClassSymbol,
|
||||
name: Name,
|
||||
kind: ClassKind,
|
||||
visibility: DescriptorVisibility,
|
||||
symbol: IrClassSymbol,
|
||||
kind: ClassKind,
|
||||
modality: Modality,
|
||||
isExternal: Boolean = false,
|
||||
isCompanion: Boolean = false,
|
||||
isInner: Boolean = false,
|
||||
isData: Boolean = false,
|
||||
isExternal: Boolean = false,
|
||||
isValue: Boolean = false,
|
||||
isExpect: Boolean = false,
|
||||
isFun: Boolean = false,
|
||||
|
||||
@@ -38,15 +38,15 @@ abstract class AbstractIrFactoryImpl : IrFactory {
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrClassSymbol,
|
||||
name: Name,
|
||||
kind: ClassKind,
|
||||
visibility: DescriptorVisibility,
|
||||
symbol: IrClassSymbol,
|
||||
kind: ClassKind,
|
||||
modality: Modality,
|
||||
isExternal: Boolean,
|
||||
isCompanion: Boolean,
|
||||
isInner: Boolean,
|
||||
isData: Boolean,
|
||||
isExternal: Boolean,
|
||||
isValue: Boolean,
|
||||
isExpect: Boolean,
|
||||
isFun: Boolean,
|
||||
|
||||
+6
-6
@@ -50,15 +50,15 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrClassSymbol,
|
||||
name: Name,
|
||||
kind: ClassKind,
|
||||
visibility: DescriptorVisibility,
|
||||
symbol: IrClassSymbol,
|
||||
kind: ClassKind,
|
||||
modality: Modality,
|
||||
isExternal: Boolean,
|
||||
isCompanion: Boolean,
|
||||
isInner: Boolean,
|
||||
isData: Boolean,
|
||||
isExternal: Boolean,
|
||||
isValue: Boolean,
|
||||
isExpect: Boolean,
|
||||
isFun: Boolean,
|
||||
@@ -68,15 +68,15 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst
|
||||
startOffset,
|
||||
endOffset,
|
||||
origin,
|
||||
symbol,
|
||||
name,
|
||||
kind,
|
||||
visibility,
|
||||
symbol,
|
||||
kind,
|
||||
modality,
|
||||
isExternal,
|
||||
isCompanion,
|
||||
isInner,
|
||||
isData,
|
||||
isExternal,
|
||||
isValue,
|
||||
isExpect,
|
||||
isFun,
|
||||
|
||||
@@ -24,15 +24,15 @@ class LazyIrFactory(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrClassSymbol,
|
||||
name: Name,
|
||||
kind: ClassKind,
|
||||
visibility: DescriptorVisibility,
|
||||
symbol: IrClassSymbol,
|
||||
kind: ClassKind,
|
||||
modality: Modality,
|
||||
isExternal: Boolean,
|
||||
isCompanion: Boolean,
|
||||
isInner: Boolean,
|
||||
isData: Boolean,
|
||||
isExternal: Boolean,
|
||||
isValue: Boolean,
|
||||
isExpect: Boolean,
|
||||
isFun: Boolean,
|
||||
@@ -41,8 +41,22 @@ class LazyIrFactory(
|
||||
symbol.owner
|
||||
else
|
||||
delegate.createClass(
|
||||
startOffset, endOffset, origin, symbol, name, kind, visibility, modality,
|
||||
isCompanion, isInner, isData, isExternal, isValue, isExpect, isFun, source
|
||||
startOffset,
|
||||
endOffset,
|
||||
origin,
|
||||
name,
|
||||
visibility,
|
||||
symbol,
|
||||
kind,
|
||||
modality,
|
||||
isExternal,
|
||||
isCompanion,
|
||||
isInner,
|
||||
isData,
|
||||
isValue,
|
||||
isExpect,
|
||||
isFun,
|
||||
source,
|
||||
)
|
||||
|
||||
override fun createConstructor(
|
||||
|
||||
@@ -141,20 +141,21 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
|
||||
override fun visitClass(declaration: IrClass): IrClass =
|
||||
declaration.factory.createClass(
|
||||
declaration.startOffset, declaration.endOffset,
|
||||
mapDeclarationOrigin(declaration.origin),
|
||||
symbolRemapper.getDeclaredClass(declaration.symbol),
|
||||
symbolRenamer.getClassName(declaration.symbol),
|
||||
declaration.kind,
|
||||
declaration.visibility,
|
||||
declaration.modality,
|
||||
startOffset = declaration.startOffset,
|
||||
endOffset = declaration.endOffset,
|
||||
origin = mapDeclarationOrigin(declaration.origin),
|
||||
name = symbolRenamer.getClassName(declaration.symbol),
|
||||
visibility = declaration.visibility,
|
||||
symbol = symbolRemapper.getDeclaredClass(declaration.symbol),
|
||||
kind = declaration.kind,
|
||||
modality = declaration.modality,
|
||||
isExternal = declaration.isExternal,
|
||||
isCompanion = declaration.isCompanion,
|
||||
isInner = declaration.isInner,
|
||||
isData = declaration.isData,
|
||||
isExternal = declaration.isExternal,
|
||||
isValue = declaration.isValue,
|
||||
isExpect = declaration.isExpect,
|
||||
isFun = declaration.isFun
|
||||
isFun = declaration.isFun,
|
||||
).apply {
|
||||
transformAnnotations(declaration)
|
||||
copyTypeParametersFrom(declaration)
|
||||
|
||||
@@ -37,7 +37,20 @@ fun IrFactory.createIrClassFromDescriptor(
|
||||
visibility: DescriptorVisibility = descriptor.visibility,
|
||||
modality: Modality = descriptor.modality
|
||||
): IrClass = createClass(
|
||||
startOffset, endOffset, origin, symbol, name, descriptor.kind, visibility, modality,
|
||||
descriptor.isCompanionObject, descriptor.isInner, descriptor.isData, descriptor.isEffectivelyExternal(),
|
||||
descriptor.isValueClass(), descriptor.isExpect, descriptor.isFun, descriptor.source
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = name,
|
||||
visibility = visibility,
|
||||
symbol = symbol,
|
||||
kind = descriptor.kind,
|
||||
modality = modality,
|
||||
isExternal = descriptor.isEffectivelyExternal(),
|
||||
isCompanion = descriptor.isCompanionObject,
|
||||
isInner = descriptor.isInner,
|
||||
isData = descriptor.isData,
|
||||
isValue = descriptor.isValueClass(),
|
||||
isExpect = descriptor.isExpect,
|
||||
isFun = descriptor.isFun,
|
||||
source = descriptor.source,
|
||||
)
|
||||
|
||||
+3
-3
@@ -69,11 +69,11 @@ internal class MissingDeclarationStubGenerator(private val builtIns: IrBuiltIns)
|
||||
startOffset = UNDEFINED_OFFSET,
|
||||
endOffset = UNDEFINED_OFFSET,
|
||||
origin = PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION,
|
||||
symbol = symbol,
|
||||
name = symbol.guessName(),
|
||||
kind = ClassKind.CLASS,
|
||||
visibility = DescriptorVisibilities.DEFAULT_VISIBILITY,
|
||||
modality = Modality.OPEN
|
||||
symbol = symbol,
|
||||
kind = ClassKind.CLASS,
|
||||
modality = Modality.OPEN,
|
||||
).apply {
|
||||
setCommonParent()
|
||||
createImplicitParameterDeclarationWithWrappedDescriptor()
|
||||
|
||||
+15
-13
@@ -357,19 +357,21 @@ class IrDeclarationDeserializer(
|
||||
}
|
||||
symbolTable.declareClass(signature, { symbol.checkSymbolType(CLASS_SYMBOL) }) {
|
||||
irFactory.createClass(
|
||||
startOffset, endOffset, origin,
|
||||
it,
|
||||
deserializeName(proto.name),
|
||||
flags.kind,
|
||||
flags.visibility,
|
||||
effectiveModality,
|
||||
flags.isCompanion,
|
||||
flags.isInner,
|
||||
flags.isData,
|
||||
flags.isExternal || isEffectivelyExternal,
|
||||
flags.isValue,
|
||||
flags.isExpect,
|
||||
flags.isFun,
|
||||
startOffset = startOffset,
|
||||
endOffset = endOffset,
|
||||
origin = origin,
|
||||
name = deserializeName(proto.name),
|
||||
visibility = flags.visibility,
|
||||
symbol = it,
|
||||
kind = flags.kind,
|
||||
modality = effectiveModality,
|
||||
isExternal = flags.isExternal || isEffectivelyExternal,
|
||||
isCompanion = flags.isCompanion,
|
||||
isInner = flags.isInner,
|
||||
isData = flags.isData,
|
||||
isValue = flags.isValue,
|
||||
isExpect = flags.isExpect,
|
||||
isFun = flags.isFun,
|
||||
)
|
||||
}.usingParent {
|
||||
typeParameters = deserializeTypeParameters(proto.typeParameterList, true)
|
||||
|
||||
Reference in New Issue
Block a user