[IR] Mark IrConstructorImpl with an opt-in annotation

KT-59318
This commit is contained in:
Sergej Jaskiewicz
2023-12-07 16:40:15 +01:00
committed by Space Team
parent 2fab853700
commit 444dcae93d
5 changed files with 45 additions and 35 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.ir.IrImplementationDetail
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrBody
@@ -18,7 +19,7 @@ import org.jetbrains.kotlin.ir.types.impl.ReturnTypeIsNotInitializedException
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
class IrConstructorImpl(
class IrConstructorImpl @IrImplementationDetail constructor(
override val startOffset: Int,
override val endOffset: Int,
override var origin: IrDeclarationOrigin,
@@ -1142,14 +1142,17 @@ private class ObjCBlockPointerValuePassing(
)
irClass.addChild(blockHolderField)
val constructor = IrConstructorImpl(
startOffset, endOffset,
val constructor = context.irFactory.createConstructor(
startOffset,
endOffset,
OBJC_BLOCK_FUNCTION_IMPL,
IrConstructorSymbolImpl(),
Name.special("<init>"),
DescriptorVisibilities.PUBLIC,
isInline = false,
isExpect = false,
irClass.defaultType,
isInline = false, isExternal = false, isPrimary = true, isExpect = false
IrConstructorSymbolImpl(),
isPrimary = true,
)
irClass.addChild(constructor)
@@ -11,11 +11,10 @@ import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.builders.IrBuilder
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrConstructorImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
import org.jetbrains.kotlin.ir.util.*
@@ -88,9 +87,18 @@ internal interface DescriptorToIrTranslationMixin {
fun createConstructor(constructorDescriptor: ClassConstructorDescriptor): IrConstructor {
val irConstructor = symbolTable.descriptorExtension.declareConstructor(constructorDescriptor) {
with(constructorDescriptor) {
IrConstructorImpl(
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB, it, name, visibility,
IrUninitializedType, isInline, isEffectivelyExternal(), isPrimary, isExpect
symbolTable.irFactory.createConstructor(
SYNTHETIC_OFFSET,
SYNTHETIC_OFFSET,
IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
name,
visibility,
isInline,
isExpect,
IrUninitializedType,
it,
isPrimary,
isEffectivelyExternal(),
)
}
}
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrConstructorImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.*
@@ -106,23 +105,23 @@ internal class EnumConstructorsLowering(val context: Context) : ClassLoweringPas
val startOffset = constructor.startOffset
val endOffset = constructor.endOffset
val loweredConstructor =
IrConstructorImpl(
startOffset, endOffset,
constructor.origin,
IrConstructorSymbolImpl(),
constructor.name,
DescriptorVisibilities.PROTECTED,
constructor.returnType,
isInline = false,
isExternal = false,
isPrimary = constructor.isPrimary,
isExpect = false
).apply {
parent = constructor.parent
val body = constructor.body!!
this.body = body // Will be transformed later.
body.setDeclarationsParent(this)
}
context.irFactory.createConstructor(
startOffset,
endOffset,
constructor.origin,
constructor.name,
DescriptorVisibilities.PROTECTED,
isInline = false,
isExpect = false,
constructor.returnType,
IrConstructorSymbolImpl(),
isPrimary = constructor.isPrimary,
).apply {
parent = constructor.parent
val body = constructor.body!!
this.body = body // Will be transformed later.
body.setDeclarationsParent(this)
}
fun createSynthesizedValueParameter(index: Int, name: String, type: IrType): IrValueParameter =
IrValueParameterImpl(
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.builders.*
import org.jetbrains.kotlin.ir.builders.declarations.buildField
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrConstructorImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.impl.*
@@ -420,17 +419,17 @@ internal class TestProcessor (val context: Context) {
owner: IrClass,
functions: Collection<TestFunction>,
ignored: Boolean): IrConstructor =
IrConstructorImpl(
testSuite.owner.startOffset, testSuite.owner.endOffset,
context.irFactory.createConstructor(
testSuite.owner.startOffset,
testSuite.owner.endOffset,
TEST_SUITE_GENERATED_MEMBER,
IrConstructorSymbolImpl(),
Name.special("<init>"),
DescriptorVisibilities.PUBLIC,
testSuite.starProjectedType,
isInline = false,
isExternal = false,
isExpect = false,
testSuite.starProjectedType,
IrConstructorSymbolImpl(),
isPrimary = true,
isExpect = false
).apply {
parent = owner