[IR] Mark IrClassImpl with an opt-in annotation

KT-59318
This commit is contained in:
Sergej Jaskiewicz
2023-12-07 16:16:13 +01:00
committed by Space Team
parent 8aacb59aec
commit 2fab853700
7 changed files with 29 additions and 29 deletions
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.ir.IrImplementationDetail
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
import org.jetbrains.kotlin.ir.declarations.*
@@ -229,6 +230,7 @@ class Fir2IrDeclarationStorage(
return fileCache[firFile]!!
}
@OptIn(IrImplementationDetail::class)
internal class NonCachedSourceFileFacadeClass(
origin: IrDeclarationOrigin,
name: Name,
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.fileClasses.JvmMultifileClassPartInfo
import org.jetbrains.kotlin.fileClasses.JvmSimpleFileClassInfo
import org.jetbrains.kotlin.ir.PsiIrFileEntry
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl
import org.jetbrains.kotlin.ir.expressions.IrConst
import org.jetbrains.kotlin.ir.expressions.IrConstKind
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
@@ -98,17 +97,18 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa
IrDeclarationOrigin.FILE_CLASS
else
IrDeclarationOrigin.SYNTHETIC_FILE_CLASS
return IrClassImpl(
0, fileEntry.maxOffset,
fileClassOrigin,
symbol = IrClassSymbolImpl(),
return context.irFactory.createClass(
startOffset = 0,
endOffset = fileEntry.maxOffset,
origin = fileClassOrigin,
name = fileClassInfo.fileClassFqName.shortName(),
kind = ClassKind.CLASS,
visibility = if (isMultifilePart || onlyPrivateDeclarationsAndFeatureIsEnabled)
JavaDescriptorVisibilities.PACKAGE_VISIBILITY
else
DescriptorVisibilities.PUBLIC,
modality = Modality.FINAL
symbol = IrClassSymbolImpl(),
kind = ClassKind.CLASS,
modality = Modality.FINAL,
).apply {
superTypes = listOf(context.irBuiltIns.anyType)
parent = irFile
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.backend.jvm
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.IrImplementationDetail
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
@@ -14,6 +15,7 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrClassSymbolImpl
import org.jetbrains.kotlin.ir.util.DeserializableClass
import org.jetbrains.kotlin.name.Name
@OptIn(IrImplementationDetail::class)
class JvmFileFacadeClass(
origin: IrDeclarationOrigin,
name: Name,
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.IrImplementationDetail
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
@@ -15,7 +16,7 @@ import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name
open class IrClassImpl(
open class IrClassImpl @IrImplementationDetail constructor(
override val startOffset: Int,
override val endOffset: Int,
override var origin: IrDeclarationOrigin,
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.types.impl
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.IrFileEntry
import org.jetbrains.kotlin.ir.IrImplementationDetail
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.*
@@ -19,6 +20,8 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled
@OptIn(IrImplementationDetail::class)
object IrErrorClassImpl : IrClassImpl(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.ERROR_CLASS, IrClassSymbolImpl(),
Name.special("<error>"), ClassKind.CLASS, DescriptorVisibilities.DEFAULT_VISIBILITY, Modality.FINAL
@@ -1114,13 +1114,15 @@ private class ObjCBlockPointerValuePassing(
private fun IrBuilderWithScope.generateKotlinFunctionClass(): IrConstructor {
val symbols = stubs.symbols
val irClass = IrClassImpl(
startOffset, endOffset,
OBJC_BLOCK_FUNCTION_IMPL, IrClassSymbolImpl(),
val irClass = context.irFactory.createClass(
startOffset,
endOffset,
OBJC_BLOCK_FUNCTION_IMPL,
Name.identifier(stubs.getUniqueKotlinFunctionReferenceClassName("BlockFunctionImpl")),
ClassKind.CLASS, DescriptorVisibilities.PRIVATE, Modality.FINAL,
isCompanion = false, isInner = false, isData = false, isExternal = false,
isValue = false, isExpect = false, isFun = false
DescriptorVisibilities.PRIVATE,
IrClassSymbolImpl(),
ClassKind.CLASS,
Modality.FINAL,
)
irClass.createParameterDeclarations()
@@ -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.IrClassImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrConstructorImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
import org.jetbrains.kotlin.ir.expressions.IrExpression
@@ -34,15 +33,12 @@ import org.jetbrains.kotlin.ir.symbols.impl.IrConstructorSymbolImpl
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.util.SetDeclarationsParentVisitor
import org.jetbrains.kotlin.ir.util.addChild
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.descriptorUtil.module
internal class TestProcessor (val context: Context) {
companion object {
@@ -479,21 +475,15 @@ internal class TestProcessor (val context: Context) {
functions: Collection<TestFunction>,
irFile: IrFile
): IrClass {
return IrClassImpl(
testClass.startOffset, testClass.endOffset,
return context.irFactory.createClass(
testClass.startOffset,
testClass.endOffset,
TEST_SUITE_CLASS,
IrClassSymbolImpl(),
testClass.name.synthesizeSuiteClassName(),
ClassKind.CLASS,
DescriptorVisibilities.PRIVATE,
IrClassSymbolImpl(),
ClassKind.CLASS,
Modality.FINAL,
isCompanion = false,
isInner = false,
isData = false,
isExternal = false,
isValue = false,
isExpect = false,
isFun = false
).apply {
irFile.addChild(this)
createParameterDeclarations()