[IR] Mark IrAnonymousInitializerImpl with an opt-in annotation
KT-59318
This commit is contained in:
committed by
Space Team
parent
22709bcb18
commit
8aacb59aec
+1
-4
@@ -14,11 +14,8 @@ import org.jetbrains.kotlin.backend.jvm.ir.replaceThisByStaticReference
|
||||
import org.jetbrains.kotlin.backend.jvm.propertiesPhase
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.addField
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.addProperty
|
||||
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||
import org.jetbrains.kotlin.ir.builders.irCall
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrAnonymousInitializerImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetFieldImpl
|
||||
@@ -100,7 +97,7 @@ private class MoveOrCopyCompanionObjectFieldsLowering(val context: JvmBackendCon
|
||||
with(oldInitializer) {
|
||||
val oldParent = parentAsClass
|
||||
val newSymbol = IrAnonymousInitializerSymbolImpl(newParent.symbol)
|
||||
IrAnonymousInitializerImpl(startOffset, endOffset, origin, newSymbol, isStatic = true).apply {
|
||||
factory.createAnonymousInitializer(startOffset, endOffset, origin, newSymbol, isStatic = true).apply {
|
||||
parent = newParent
|
||||
body = this@with.body.patchDeclarationParents(newParent)
|
||||
replaceThisByStaticReference(context.cachedDeclarations.fieldsForObjectInstances, oldParent, oldParent.thisReceiver!!)
|
||||
|
||||
+1
-1
@@ -1031,7 +1031,7 @@ private inline fun IrClass.addAnonymousInitializer(builder: IrFunctionBuilder.()
|
||||
IrFunctionBuilder().run {
|
||||
builder()
|
||||
returnType = defaultType
|
||||
IrAnonymousInitializerImpl(
|
||||
factory.createAnonymousInitializer(
|
||||
startOffset, endOffset, origin,
|
||||
IrAnonymousInitializerSymbolImpl()
|
||||
)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.ir
|
||||
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||
|
||||
/**
|
||||
* IR implementation classes annotated with this annotation are not expected to be used directly.
|
||||
*
|
||||
* [IrFactory] should be the preferred way to create instances of such classes.
|
||||
*/
|
||||
@RequiresOptIn("Use IrFactory instead of creating IR nodes directly", level = RequiresOptIn.Level.ERROR)
|
||||
@Target(AnnotationTarget.CONSTRUCTOR)
|
||||
annotation class IrImplementationDetail
|
||||
+2
-1
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.ir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrImplementationDetail
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||
@@ -15,7 +16,7 @@ import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
|
||||
|
||||
class IrAnonymousInitializerImpl(
|
||||
class IrAnonymousInitializerImpl @IrImplementationDetail constructor(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var origin: IrDeclarationOrigin,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.ir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.IrImplementationDetail
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
@@ -23,6 +23,7 @@ object IrFactoryImpl : AbstractIrFactoryImpl() {
|
||||
override val stageController: StageController = StageController()
|
||||
}
|
||||
|
||||
@OptIn(IrImplementationDetail::class)
|
||||
abstract class AbstractIrFactoryImpl : IrFactory {
|
||||
|
||||
override fun createAnonymousInitializer(
|
||||
|
||||
Reference in New Issue
Block a user