[IR] Drastically simplify the hierarchy of IR origins

IrStatementOriginImpl and IrDeclarationOriginImpl were made final
classes to simplify the creation of them (a delegate provider was
added) and to optimize performance when comparing the origins by type
and name
This commit is contained in:
Iaroslav Postovalov
2023-08-22 11:50:33 +02:00
committed by Space Team
parent f2ddae533e
commit a3b55cf758
67 changed files with 438 additions and 380 deletions
@@ -128,10 +128,10 @@ internal class OperatorExpressionGenerator(
}
private fun IrStatementOrigin.toIrDynamicOperator() = when (this) {
is IrStatementOrigin.EQEQ -> IrDynamicOperator.EQEQ
is IrStatementOrigin.EXCLEQ -> IrDynamicOperator.EXCLEQ
is IrStatementOrigin.EQEQEQ -> IrDynamicOperator.EQEQEQ
is IrStatementOrigin.EXCLEQEQ -> IrDynamicOperator.EXCLEQEQ
IrStatementOrigin.EQEQ -> IrDynamicOperator.EQEQ
IrStatementOrigin.EXCLEQ -> IrDynamicOperator.EXCLEQ
IrStatementOrigin.EQEQEQ -> IrDynamicOperator.EQEQEQ
IrStatementOrigin.EXCLEQEQ -> IrDynamicOperator.EXCLEQEQ
else -> null
}
@@ -22,9 +22,10 @@ import org.jetbrains.kotlin.ir.visitors.*
import org.jetbrains.kotlin.name.Name
abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val context: C) : FileLoweringPass {
protected object STATEMENT_ORIGIN_COROUTINE_IMPL : IrStatementOriginImpl("COROUTINE_IMPL")
protected object DECLARATION_ORIGIN_COROUTINE_IMPL : IrDeclarationOriginImpl("COROUTINE_IMPL")
protected companion object {
val STATEMENT_ORIGIN_COROUTINE_IMPL = IrStatementOriginImpl("COROUTINE_IMPL")
val DECLARATION_ORIGIN_COROUTINE_IMPL = IrDeclarationOriginImpl("COROUTINE_IMPL")
}
protected abstract val stateMachineMethodName: Name
protected abstract fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.utils.filterIsInstanceAnd
val ANNOTATION_IMPLEMENTATION = object : IrDeclarationOriginImpl("ANNOTATION_IMPLEMENTATION", isSynthetic = true) {}
val ANNOTATION_IMPLEMENTATION by IrDeclarationOriginImpl.Synthetic
class AnnotationImplementationLowering(
val transformer: (IrFile) -> AnnotationImplementationTransformer
@@ -103,7 +103,7 @@ private class ArrayConstructorTransformer(
}
private object ArrayConstructorWrapper : IrDeclarationOriginImpl("arrayConstructorWrapper")
private val ArrayConstructorWrapper = IrDeclarationOriginImpl("arrayConstructorWrapper")
class ArrayConstructorReferenceLowering(val context: CommonBackendContext) : BodyLoweringPass {
override fun lower(irBody: IrBody, container: IrDeclaration) {
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.ir.util.setDeclarationsParent
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.name.Name
object FINALLY_EXPRESSION : IrStatementOriginImpl("FINALLY_EXPRESSION")
val FINALLY_EXPRESSION by IrStatementOriginImpl
class FinallyBlocksLowering(val context: CommonBackendContext, private val throwableType: IrType): FileLoweringPass, IrElementTransformerVoidWithContext() {
@@ -59,9 +59,9 @@ val IrDeclaration.parentsWithSelf: Sequence<IrDeclarationParent>
val IrDeclaration.parents: Sequence<IrDeclarationParent>
get() = generateSequence(parent) { (it as? IrDeclaration)?.parent }
object BOUND_VALUE_PARAMETER : IrDeclarationOriginImpl("BOUND_VALUE_PARAMETER")
val BOUND_VALUE_PARAMETER by IrDeclarationOriginImpl
object BOUND_RECEIVER_PARAMETER : IrDeclarationOriginImpl("BOUND_RECEIVER_PARAMETER")
val BOUND_RECEIVER_PARAMETER by IrDeclarationOriginImpl
/*
Local functions raised in LocalDeclarationLowering continue to refer to
@@ -86,11 +86,13 @@ class LocalDeclarationsLowering(
runOnFilePostfix(irFile)
}
object DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE :
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
companion object {
val DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE =
IrDeclarationOriginImpl("FIELD_FOR_CAPTURED_VALUE", isSynthetic = true)
object DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE :
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
val DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE =
IrDeclarationOriginImpl("FIELD_FOR_CROSSINLINE_CAPTURED_VALUE", isSynthetic = true)
}
override fun lower(irBody: IrBody, container: IrDeclaration) {
LocalDeclarationsTransformer(irBody, container).lowerLocalDeclarations()
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.backend.common.lower
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
interface LoweredStatementOrigins {
object STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE : IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
object SYNTHESIZED_INIT_BLOCK : IrStatementOriginImpl("SYNTHESIZED_INIT_BLOCK")
object DEFAULT_DISPATCH_CALL : IrStatementOriginImpl("DEFAULT_DISPATCH_CALL")
}
object LoweredStatementOrigins {
val STATEMENT_ORIGIN_INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE = IrStatementOriginImpl("INITIALIZER_OF_FIELD_FOR_CAPTURED_VALUE")
val SYNTHESIZED_INIT_BLOCK by IrStatementOriginImpl
val DEFAULT_DISPATCH_CALL by IrStatementOriginImpl
}
@@ -917,6 +917,6 @@ class FunctionInlining(
}
}
object INLINED_FUNCTION_REFERENCE : IrStatementOriginImpl("INLINED_FUNCTION_REFERENCE")
object INLINED_FUNCTION_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_ARGUMENTS")
object INLINED_FUNCTION_DEFAULT_ARGUMENTS : IrStatementOriginImpl("INLINED_FUNCTION_DEFAULT_ARGUMENTS")
val INLINED_FUNCTION_REFERENCE by IrStatementOriginImpl
val INLINED_FUNCTION_ARGUMENTS by IrStatementOriginImpl
val INLINED_FUNCTION_DEFAULT_ARGUMENTS by IrStatementOriginImpl
@@ -9,21 +9,21 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
object JsLoweredDeclarationOrigin {
object JS_INTRINSICS_STUB : IrDeclarationOriginImpl("JS_INTRINSICS_STUB")
object JS_CLOSURE_BOX_CLASS_DECLARATION : IrDeclarationOriginImpl("JS_CLOSURE_BOX_CLASS_DECLARATION")
object BRIDGE_WITH_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITH_STABLE_NAME")
object BRIDGE_WITHOUT_STABLE_NAME : IrDeclarationOriginImpl("BRIDGE_WITHOUT_STABLE_NAME")
object BRIDGE_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("BRIDGE_PROPERTY_ACCESSOR")
object OBJECT_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("OBJECT_GET_INSTANCE_FUNCTION")
object JS_SHADOWED_EXPORT : IrDeclarationOriginImpl("JS_SHADOWED_EXPORT")
object JS_SUPER_CONTEXT_PARAMETER : IrDeclarationOriginImpl("JS_SUPER_CONTEXT_PARAMETER")
object JS_SHADOWED_DEFAULT_PARAMETER : IrDeclarationOriginImpl("JS_SHADOWED_DEFAULT_PARAMETER")
object ENUM_GET_INSTANCE_FUNCTION : IrDeclarationOriginImpl("ENUM_GET_INSTANCE_FUNCTION")
val JS_INTRINSICS_STUB by IrDeclarationOriginImpl
val JS_CLOSURE_BOX_CLASS_DECLARATION by IrDeclarationOriginImpl
val BRIDGE_WITH_STABLE_NAME by IrDeclarationOriginImpl
val BRIDGE_WITHOUT_STABLE_NAME by IrDeclarationOriginImpl
val BRIDGE_PROPERTY_ACCESSOR by IrDeclarationOriginImpl
val OBJECT_GET_INSTANCE_FUNCTION by IrDeclarationOriginImpl
val JS_SHADOWED_EXPORT by IrDeclarationOriginImpl
val JS_SUPER_CONTEXT_PARAMETER by IrDeclarationOriginImpl
val JS_SHADOWED_DEFAULT_PARAMETER by IrDeclarationOriginImpl
val ENUM_GET_INSTANCE_FUNCTION by IrDeclarationOriginImpl
fun isBridgeDeclarationOrigin(origin: IrDeclarationOrigin) = when (origin) {
is BRIDGE_WITH_STABLE_NAME -> true
is BRIDGE_WITHOUT_STABLE_NAME -> true
is BRIDGE_PROPERTY_ACCESSOR -> true
BRIDGE_WITH_STABLE_NAME -> true
BRIDGE_WITHOUT_STABLE_NAME -> true
BRIDGE_PROPERTY_ACCESSOR -> true
else -> false
}
}
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ir.util.parentAsClass
import org.jetbrains.kotlin.name.Name
object JsIrBuilder {
object SYNTHESIZED_DECLARATION : IrDeclarationOriginImpl("SYNTHESIZED_DECLARATION")
val SYNTHESIZED_DECLARATION by IrDeclarationOriginImpl
fun buildCall(
target: IrSimpleFunctionSymbol,
@@ -469,9 +469,9 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod
}
companion object {
object LAMBDA_IMPL : IrDeclarationOriginImpl("LAMBDA_IMPL")
object FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
object GENERATED_MEMBER_IN_CALLABLE_REFERENCE : IrDeclarationOriginImpl("GENERATED_MEMBER_IN_CALLABLE_REFERENCE")
val LAMBDA_IMPL by IrDeclarationOriginImpl
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl
val GENERATED_MEMBER_IN_CALLABLE_REFERENCE by IrDeclarationOriginImpl
val BOUND_RECEIVER_NAME = Name.identifier("\$boundThis")
}
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.util.isSubclassOf
import org.jetbrains.kotlin.ir.util.parentAsClass
import org.jetbrains.kotlin.name.Name
object ES6_THROWABLE_CONSTRUCTOR_SLOT : IrDeclarationOriginImpl("ES6_THROWABLE_CONSTRUCTOR_SLOT")
val ES6_THROWABLE_CONSTRUCTOR_SLOT by IrDeclarationOriginImpl
/**
* Capture stack trace in primary constructors of Throwable
*/
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.ir.util.transformFlat
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.utils.memoryOptimizedMap
private object SCRIPT_FUNCTION : IrDeclarationOriginImpl("SCRIPT_FUNCTION")
private val SCRIPT_FUNCTION by IrDeclarationOriginImpl
class CreateScriptFunctionsPhase(val context: CommonBackendContext) : FileLoweringPass {
override fun lower(irFile: IrFile) {
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
object ES6_BOX_PARAMETER : IrDeclarationOriginImpl("ES6_BOX_PARAMETER")
object ES6_BOX_PARAMETER_DEFAULT_RESOLUTION : IrStatementOriginImpl("ES6_BOX_PARAMETER_DEFAULT_RESOLUTION")
val ES6_BOX_PARAMETER by IrDeclarationOriginImpl
val ES6_BOX_PARAMETER_DEFAULT_RESOLUTION by IrStatementOriginImpl
val IrValueParameter.isBoxParameter: Boolean
get() = origin == ES6_BOX_PARAMETER
@@ -29,13 +29,13 @@ import org.jetbrains.kotlin.utils.memoryOptimizedMap
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
import org.jetbrains.kotlin.utils.newHashMapWithExpectedSize
object ES6_INIT_CALL : IrStatementOriginImpl("ES6_INIT_CALL")
object ES6_CONSTRUCTOR_REPLACEMENT : IrDeclarationOriginImpl("ES6_CONSTRUCTOR_REPLACEMENT")
object ES6_SYNTHETIC_EXPORT_CONSTRUCTOR: IrDeclarationOriginImpl("ES6_SYNTHETIC_EXPORT_CONSTRUCTOR")
object ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT : IrDeclarationOriginImpl("ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT")
object ES6_INIT_FUNCTION : IrDeclarationOriginImpl("ES6_INIT_FUNCTION")
object ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT : IrStatementOriginImpl("ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT")
object ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT : IrDeclarationOriginImpl("ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT")
val ES6_INIT_CALL by IrStatementOriginImpl
val ES6_CONSTRUCTOR_REPLACEMENT by IrDeclarationOriginImpl
val ES6_SYNTHETIC_EXPORT_CONSTRUCTOR by IrDeclarationOriginImpl
val ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT by IrDeclarationOriginImpl
val ES6_INIT_FUNCTION by IrDeclarationOriginImpl
val ES6_DELEGATING_CONSTRUCTOR_REPLACEMENT by IrStatementOriginImpl
val ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT by IrDeclarationOriginImpl
val IrDeclaration.isEs6ConstructorReplacement: Boolean
get() = origin == ES6_CONSTRUCTOR_REPLACEMENT || origin == ES6_PRIMARY_CONSTRUCTOR_REPLACEMENT
@@ -44,7 +44,7 @@ class JsCodeOutliningLowering(val backendContext: JsIrBackendContext) : BodyLowe
}
companion object {
val OUTLINED_JS_CODE_ORIGIN = object : IrDeclarationOriginImpl("OUTLINED_JS_CODE") {}
val OUTLINED_JS_CODE_ORIGIN = IrDeclarationOriginImpl("OUTLINED_JS_CODE")
}
}
@@ -42,7 +42,9 @@ class PrimaryConstructorLowering(val context: JsCommonBackendContext) : Declarat
return null
}
object SYNTHETIC_PRIMARY_CONSTRUCTOR : IrDeclarationOriginImpl("SYNTHETIC_PRIMARY_CONSTRUCTOR")
companion object {
val SYNTHETIC_PRIMARY_CONSTRUCTOR by IrDeclarationOriginImpl
}
private val unitType = context.irBuiltIns.unitType
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.utils.memoryOptimizedPlus
private val STATIC_THIS_PARAMETER = object : IrDeclarationOriginImpl("STATIC_THIS_PARAMETER") {}
private val STATIC_THIS_PARAMETER by IrDeclarationOriginImpl
class PrivateMembersLowering(val context: JsIrBackendContext) : DeclarationTransformer {
@@ -164,7 +164,7 @@ class PropertyLazyInitLowering(
}
companion object {
object PROPERTY_INIT_FUN_CALL : IrStatementOriginImpl("PROPERTY_INIT_FUN_CALL")
val PROPERTY_INIT_FUN_CALL by IrStatementOriginImpl
}
}
@@ -271,6 +271,6 @@ class PropertyReferenceLowering(private val context: JsIrBackendContext) : BodyL
}
companion object {
object PROPERTY_REFERENCE_FACTORY : IrDeclarationOriginImpl("PROPERTY_REFERNCE_FACTORY")
val PROPERTY_REFERENCE_FACTORY = IrDeclarationOriginImpl("PROPERTY_REFERNCE_FACTORY")
}
}
@@ -42,7 +42,9 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
private var IrFunction.coroutineConstructor by context.mapping.suspendFunctionToCoroutineConstructor
protected object DECLARATION_ORIGIN_COROUTINE_IMPL : IrDeclarationOriginImpl("COROUTINE_IMPL")
protected companion object {
val DECLARATION_ORIGIN_COROUTINE_IMPL = IrDeclarationOriginImpl("COROUTINE_IMPL")
}
protected abstract val stateMachineMethodName: Name
protected abstract fun getCoroutineBaseClass(function: IrFunction): IrClassSymbol
@@ -169,10 +169,10 @@ class IrElementToJsStatementTransformer : BaseIrElementToJsNodeTransformer<JsSta
val jsInitializer = value?.accept(IrElementToJsExpressionTransformer(), context)
val syntheticVariable = when (declaration.origin) {
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE -> true
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER -> true
is IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER -> true
is ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT -> true
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE -> true
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER -> true
IrDeclarationOrigin.IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER -> true
ES6_DELEGATING_CONSTRUCTOR_CALL_REPLACEMENT -> true
else -> false
}
@@ -58,7 +58,7 @@ internal class FragmentLocalFunctionPatchLowering(
override fun visitCall(expression: IrCall): IrExpression {
expression.transformChildrenVoid(this)
val localDeclarationsDataKey = when (expression.symbol.owner.origin) {
is IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER -> context.mapping.defaultArgumentsOriginalFunction[expression.symbol.owner]
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER -> context.mapping.defaultArgumentsOriginalFunction[expression.symbol.owner]
else -> expression.symbol.owner
}
val localsData = localDeclarationsData[localDeclarationsDataKey] ?: return expression
@@ -506,7 +506,9 @@ internal class JvmMultiFieldValueClassLowering(context: JvmBackendContext) : Jvm
return listOf(replacement)
}
private object UNSAFE_MFVC_SET_ORIGIN : IrStatementOrigin
private companion object {
private val UNSAFE_MFVC_SET_ORIGIN by IrStatementOriginImpl
}
private fun RootMfvcNode.replaceMfvcNotStaticFields() {
val fieldsToRemove = mfvc.fields.filter { !it.isStatic }.toList()
@@ -439,7 +439,7 @@ class JvmOptimizationLowering(val context: JvmBackendContext) : FileLoweringPass
if (!hasSameLineNumber(argument, expression)) {
return null
}
return rewriteCompoundAssignmentAsPrefixIncrDecr(expression, argument, expression.origin is IrStatementOrigin.MINUSEQ)
return rewriteCompoundAssignmentAsPrefixIncrDecr(expression, argument, expression.origin == IrStatementOrigin.MINUSEQ)
}
IrStatementOrigin.EQ -> {
val value = expression.value
@@ -52,8 +52,10 @@ internal val propertyReferencePhase = makeIrFilePhase(
)
internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrElementTransformerVoidWithContext(), FileLoweringPass {
// Marking a property reference with this origin causes it to not generate a class.
object REFLECTED_PROPERTY_REFERENCE : IrStatementOriginImpl("REFLECTED_PROPERTY_REFERENCE")
companion object {
// Marking a property reference with this origin causes it to not generate a class.
val REFLECTED_PROPERTY_REFERENCE by IrStatementOriginImpl
}
// TODO: join IrLocalDelegatedPropertyReference and IrPropertyReference via the class hierarchy?
private val IrMemberAccessExpression<*>.getter: IrSimpleFunctionSymbol?
@@ -33,7 +33,7 @@ object InlineClassAbi {
* perform inline class mangling and so in the absence of jvm signatures in the metadata we need to avoid
* inline class mangling as well in the function references used as arguments to the signature string intrinsic.
*/
object UNMANGLED_FUNCTION_REFERENCE : IrStatementOriginImpl("UNMANGLED_FUNCTION_REFERENCE")
val UNMANGLED_FUNCTION_REFERENCE by IrStatementOriginImpl
/**
* Unwraps inline class types to their underlying representation.
@@ -5,60 +5,56 @@
package org.jetbrains.kotlin.backend.jvm
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
interface JvmLoweredDeclarationOrigin : IrDeclarationOrigin {
object CLASS_STATIC_INITIALIZER : IrDeclarationOriginImpl("CLASS_STATIC_INITIALIZER")
object DEFAULT_IMPLS : IrDeclarationOriginImpl("DEFAULT_IMPLS")
object SUPER_INTERFACE_METHOD_BRIDGE : IrDeclarationOriginImpl("SUPER_INTERFACE_METHOD_BRIDGE")
object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS")
object LAMBDA_IMPL : IrDeclarationOriginImpl("LAMBDA_IMPL")
object FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL", isSynthetic = true)
object SYNTHETIC_ACCESSOR : IrDeclarationOriginImpl("SYNTHETIC_ACCESSOR", isSynthetic = true)
object SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR :
IrDeclarationOriginImpl("SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR", isSynthetic = true)
object SYNTHETIC_MARKER_PARAMETER : IrDeclarationOriginImpl("SYNTHETIC_MARKER_PARAMETER", isSynthetic = true)
object TO_ARRAY : IrDeclarationOriginImpl("TO_ARRAY")
object JVM_STATIC_WRAPPER : IrDeclarationOriginImpl("JVM_STATIC_WRAPPER")
object JVM_OVERLOADS_WRAPPER : IrDeclarationOriginImpl("JVM_OVERLOADS_WRAPPER")
object SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS :
IrDeclarationOriginImpl("SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS", isSynthetic = true)
object GENERATED_PROPERTY_REFERENCE : IrDeclarationOriginImpl("GENERATED_PROPERTY_REFERENCE", isSynthetic = true)
object GENERATED_MEMBER_IN_CALLABLE_REFERENCE : IrDeclarationOriginImpl("GENERATED_MEMBER_IN_CALLABLE_REFERENCE", isSynthetic = false)
object ENUM_MAPPINGS_FOR_WHEN : IrDeclarationOriginImpl("ENUM_MAPPINGS_FOR_WHEN", isSynthetic = true)
object ENUM_MAPPINGS_FOR_ENTRIES : IrDeclarationOriginImpl("ENUM_MAPPINGS_FOR_ENTRIES", isSynthetic = true)
object SYNTHETIC_INLINE_CLASS_MEMBER : IrDeclarationOriginImpl("SYNTHETIC_INLINE_CLASS_MEMBER", isSynthetic = true)
object SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER :
IrDeclarationOriginImpl("SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER", isSynthetic = true)
object INLINE_CLASS_GENERATED_IMPL_METHOD : IrDeclarationOriginImpl("INLINE_CLASS_GENERATED_IMPL_METHOD")
object MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD : IrDeclarationOriginImpl("MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD")
object STATIC_INLINE_CLASS_REPLACEMENT : IrDeclarationOriginImpl("STATIC_INLINE_CLASS_REPLACEMENT")
object STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT : IrDeclarationOriginImpl("STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT")
object STATIC_INLINE_CLASS_CONSTRUCTOR : IrDeclarationOriginImpl("STATIC_INLINE_CLASS_CONSTRUCTOR")
object STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR : IrDeclarationOriginImpl("STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR")
object GENERATED_ASSERTION_ENABLED_FIELD : IrDeclarationOriginImpl("GENERATED_ASSERTION_ENABLED_FIELD", isSynthetic = true)
object GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER : IrDeclarationOriginImpl("GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER")
object TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER : IrDeclarationOriginImpl("TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER")
object TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE : IrDeclarationOriginImpl("TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE")
object MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE : IrDeclarationOriginImpl("MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE")
object GENERATED_EXTENDED_MAIN : IrDeclarationOriginImpl("GENERATED_EXTENDED_MAIN", isSynthetic = true)
object SUSPEND_IMPL_STATIC_FUNCTION : IrDeclarationOriginImpl("SUSPEND_IMPL_STATIC_FUNCTION", isSynthetic = true)
object INTERFACE_COMPANION_PRIVATE_INSTANCE : IrDeclarationOriginImpl("INTERFACE_COMPANION_PRIVATE_INSTANCE", isSynthetic = true)
object POLYMORPHIC_SIGNATURE_INSTANTIATION : IrDeclarationOriginImpl("POLYMORPHIC_SIGNATURE_INSTANTIATION", isSynthetic = true)
object ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER : IrDeclarationOriginImpl("ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER", isSynthetic = true)
object OBJECT_SUPER_CONSTRUCTOR_PARAMETER : IrDeclarationOriginImpl("OBJECT_SUPER_CONSTRUCTOR_PARAMETER", isSynthetic = true)
object CONTINUATION_CLASS : IrDeclarationOriginImpl("CONTINUATION_CLASS")
object SUSPEND_LAMBDA : IrDeclarationOriginImpl("SUSPEND_LAMBDA")
object FOR_INLINE_STATE_MACHINE_TEMPLATE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE")
object FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE_CROSSINLINE")
object CONTINUATION_CLASS_RESULT_FIELD: IrDeclarationOriginImpl("CONTINUATION_CLASS_RESULT_FIELD", isSynthetic = true)
object COMPANION_PROPERTY_BACKING_FIELD : IrDeclarationOriginImpl("COMPANION_PROPERTY_BACKING_FIELD")
object FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE")
object ABSTRACT_BRIDGE_STUB : IrDeclarationOriginImpl("ABSTRACT_BRIDGE_STUB")
object INVOKEDYNAMIC_CALL_TARGET : IrDeclarationOriginImpl("INVOKEDYNAMIC_CALL_TARGET")
object INLINE_LAMBDA : IrDeclarationOriginImpl("INLINE_LAMBDA")
object PROXY_FUN_FOR_METAFACTORY : IrDeclarationOriginImpl("PROXY_FUN_FOR_METAFACTORY")
object SYNTHETIC_PROXY_FUN_FOR_METAFACTORY : IrDeclarationOriginImpl("SYNTHETIC_PROXY_FUN_FOR_METAFACTORY", isSynthetic = true)
object DESERIALIZE_LAMBDA_FUN : IrDeclarationOriginImpl("DESERIALIZE_LAMBDA_FUN", isSynthetic = true)
object JvmLoweredDeclarationOrigin {
val CLASS_STATIC_INITIALIZER by IrDeclarationOriginImpl
val DEFAULT_IMPLS by IrDeclarationOriginImpl
val SUPER_INTERFACE_METHOD_BRIDGE by IrDeclarationOriginImpl
val FIELD_FOR_OUTER_THIS by IrDeclarationOriginImpl
val LAMBDA_IMPL by IrDeclarationOriginImpl
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl.Synthetic
val SYNTHETIC_ACCESSOR by IrDeclarationOriginImpl.Synthetic
val SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR by IrDeclarationOriginImpl.Synthetic
val SYNTHETIC_MARKER_PARAMETER by IrDeclarationOriginImpl.Synthetic
val TO_ARRAY by IrDeclarationOriginImpl
val JVM_STATIC_WRAPPER by IrDeclarationOriginImpl
val JVM_OVERLOADS_WRAPPER by IrDeclarationOriginImpl
val SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS by IrDeclarationOriginImpl.Synthetic
val GENERATED_PROPERTY_REFERENCE by IrDeclarationOriginImpl.Synthetic
val GENERATED_MEMBER_IN_CALLABLE_REFERENCE by IrDeclarationOriginImpl
val ENUM_MAPPINGS_FOR_WHEN by IrDeclarationOriginImpl.Synthetic
val ENUM_MAPPINGS_FOR_ENTRIES by IrDeclarationOriginImpl.Synthetic
val SYNTHETIC_INLINE_CLASS_MEMBER by IrDeclarationOriginImpl.Synthetic
val SYNTHETIC_MULTI_FIELD_VALUE_CLASS_MEMBER by IrDeclarationOriginImpl.Synthetic
val INLINE_CLASS_GENERATED_IMPL_METHOD by IrDeclarationOriginImpl
val MULTI_FIELD_VALUE_CLASS_GENERATED_IMPL_METHOD by IrDeclarationOriginImpl
val STATIC_INLINE_CLASS_REPLACEMENT by IrDeclarationOriginImpl
val STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT by IrDeclarationOriginImpl
val STATIC_INLINE_CLASS_CONSTRUCTOR by IrDeclarationOriginImpl
val STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR by IrDeclarationOriginImpl
val GENERATED_ASSERTION_ENABLED_FIELD by IrDeclarationOriginImpl.Synthetic
val GENERATED_MULTI_FIELD_VALUE_CLASS_PARAMETER by IrDeclarationOriginImpl
val TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER by IrDeclarationOriginImpl
val TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE by IrDeclarationOriginImpl
val MULTI_FIELD_VALUE_CLASS_REPRESENTATION_VARIABLE by IrDeclarationOriginImpl
val GENERATED_EXTENDED_MAIN by IrDeclarationOriginImpl.Synthetic
val SUSPEND_IMPL_STATIC_FUNCTION by IrDeclarationOriginImpl.Synthetic
val INTERFACE_COMPANION_PRIVATE_INSTANCE by IrDeclarationOriginImpl.Synthetic
val POLYMORPHIC_SIGNATURE_INSTANTIATION by IrDeclarationOriginImpl.Synthetic
val ENUM_CONSTRUCTOR_SYNTHETIC_PARAMETER by IrDeclarationOriginImpl.Synthetic
val OBJECT_SUPER_CONSTRUCTOR_PARAMETER by IrDeclarationOriginImpl.Synthetic
val CONTINUATION_CLASS by IrDeclarationOriginImpl
val SUSPEND_LAMBDA by IrDeclarationOriginImpl
val FOR_INLINE_STATE_MACHINE_TEMPLATE by IrDeclarationOriginImpl
val FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE by IrDeclarationOriginImpl
val CONTINUATION_CLASS_RESULT_FIELD by IrDeclarationOriginImpl.Synthetic
val COMPANION_PROPERTY_BACKING_FIELD by IrDeclarationOriginImpl
val FIELD_FOR_STATIC_CALLABLE_REFERENCE_INSTANCE by IrDeclarationOriginImpl
val ABSTRACT_BRIDGE_STUB by IrDeclarationOriginImpl
val INVOKEDYNAMIC_CALL_TARGET by IrDeclarationOriginImpl
val INLINE_LAMBDA by IrDeclarationOriginImpl
val PROXY_FUN_FOR_METAFACTORY by IrDeclarationOriginImpl
val SYNTHETIC_PROXY_FUN_FOR_METAFACTORY by IrDeclarationOriginImpl.Synthetic
val DESERIALIZE_LAMBDA_FUN by IrDeclarationOriginImpl.Synthetic
}
@@ -0,0 +1,18 @@
/*
* Copyright 2010-2020 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.backend.jvm
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
object JvmLoweredStatementOrigin {
val DEFAULT_STUB_CALL_TO_IMPLEMENTATION by IrStatementOriginImpl
val DO_WHILE_COUNTER_LOOP by IrStatementOriginImpl
val INLINE_LAMBDA by IrStatementOriginImpl
val FAKE_CONTINUATION by IrStatementOriginImpl
val FOLDED_SAFE_CALL by IrStatementOriginImpl
val FOLDED_ELVIS by IrStatementOriginImpl
}
@@ -387,8 +387,7 @@ class MemoizedMultiFieldValueClassReplacements(
private val IrProperty.backingFieldIfNotToRemove get() = backingField?.takeUnless { it in getFieldsToRemove(this.parentAsClass) }
@Suppress("ClassName")
private object FLATTENED_NOTHING_DEFAULT_VALUE : IrStatementOriginImpl("FLATTENED_NOTHING_DEFAULT_VALUE")
private val FLATTENED_NOTHING_DEFAULT_VALUE by IrStatementOriginImpl
fun mapFunctionMfvcStructures(
irBuilder: IrBlockBuilder,
@@ -1,18 +0,0 @@
/*
* Copyright 2010-2020 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.backend.jvm
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
interface JvmLoweredStatementOrigin {
object DEFAULT_STUB_CALL_TO_IMPLEMENTATION : IrStatementOriginImpl("DEFAULT_STUB_CALL_TO_IMPLEMENTATION")
object DO_WHILE_COUNTER_LOOP: IrStatementOriginImpl("DO_WHILE_COUNTER_LOOP")
object INLINE_LAMBDA : IrStatementOriginImpl("INLINE_LAMBDA")
object FAKE_CONTINUATION : IrStatementOriginImpl("FAKE_CONTINUATION")
object FOLDED_SAFE_CALL : IrStatementOriginImpl("FOLDED_SAFE_CALL")
object FOLDED_ELVIS : IrStatementOriginImpl("FOLDED_ELVIS")
}
@@ -310,5 +310,7 @@ internal class WasmPropertyReferenceLowering(val context: WasmBackendContext) :
return type.classifier == expectedClass
}
private object DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION : IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
private companion object {
private val DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION = IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
}
}
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.ir.util.isElseBranch
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.name.Name
private object OPTIMISED_WHEN_SUBJECT : IrDeclarationOriginImpl("OPTIMISED_WHEN_SUBJECT")
private val OPTIMISED_WHEN_SUBJECT by IrDeclarationOriginImpl
class WasmStringSwitchOptimizerLowering(
private val context: WasmBackendContext
@@ -26,8 +26,8 @@ import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.name.Name
internal val TEMP_CLASS_FOR_INTERPRETER = object : IrDeclarationOriginImpl("TEMP_CLASS_FOR_INTERPRETER") {}
internal val TEMP_FUNCTION_FOR_INTERPRETER = object : IrDeclarationOriginImpl("TEMP_FUNCTION_FOR_INTERPRETER") {}
internal val TEMP_CLASS_FOR_INTERPRETER = IrDeclarationOriginImpl("TEMP_CLASS_FOR_INTERPRETER")
internal val TEMP_FUNCTION_FOR_INTERPRETER = IrDeclarationOriginImpl("TEMP_FUNCTION_FOR_INTERPRETER")
@Deprecated("Please migrate to `org.jetbrains.kotlin.ir.util.toIrConst`", level = DeprecationLevel.HIDDEN)
fun Any?.toIrConst(irType: IrType, startOffset: Int = SYNTHETIC_OFFSET, endOffset: Int = SYNTHETIC_OFFSET): IrConst<*> =
@@ -77,8 +77,8 @@ abstract class IrAbstractDescriptorBasedFunctionFactory {
}
companion object {
val classOrigin = object : IrDeclarationOriginImpl("FUNCTION_INTERFACE_CLASS") {}
val memberOrigin = object : IrDeclarationOriginImpl("FUNCTION_INTERFACE_MEMBER") {}
val classOrigin = IrDeclarationOriginImpl("FUNCTION_INTERFACE_CLASS")
val memberOrigin = IrDeclarationOriginImpl("FUNCTION_INTERFACE_MEMBER")
const val offset = SYNTHETIC_OFFSET
internal fun functionClassName(isK: Boolean, isSuspend: Boolean, arity: Int): String =
@@ -215,7 +215,7 @@ abstract class IrBuiltIns {
companion object {
val KOTLIN_INTERNAL_IR_FQN = FqName("kotlin.internal.ir")
val BUILTIN_OPERATOR = object : IrDeclarationOriginImpl("OPERATOR") {}
val BUILTIN_OPERATOR = IrDeclarationOriginImpl("OPERATOR")
}
}
@@ -6,86 +6,96 @@
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.GeneratedDeclarationKey
import org.jetbrains.kotlin.utils.DummyDelegate
import kotlin.properties.PropertyDelegateProvider
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
interface IrDeclarationOrigin {
object DEFINED : IrDeclarationOriginImpl("DEFINED")
object FAKE_OVERRIDE : IrDeclarationOriginImpl("FAKE_OVERRIDE")
object FOR_LOOP_ITERATOR : IrDeclarationOriginImpl("FOR_LOOP_ITERATOR")
object FOR_LOOP_VARIABLE : IrDeclarationOriginImpl("FOR_LOOP_VARIABLE")
object FOR_LOOP_IMPLICIT_VARIABLE : IrDeclarationOriginImpl("FOR_LOOP_IMPLICIT_VARIABLE")
object PROPERTY_BACKING_FIELD : IrDeclarationOriginImpl("PROPERTY_BACKING_FIELD")
object DEFAULT_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("DEFAULT_PROPERTY_ACCESSOR")
object DELEGATE : IrDeclarationOriginImpl("DELEGATE", isSynthetic = true)
object PROPERTY_DELEGATE : IrDeclarationOriginImpl("PROPERTY_DELEGATE")
object DELEGATED_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("DELEGATED_PROPERTY_ACCESSOR")
object DELEGATED_MEMBER : IrDeclarationOriginImpl("DELEGATED_MEMBER")
object ENUM_CLASS_SPECIAL_MEMBER : IrDeclarationOriginImpl("ENUM_CLASS_SPECIAL_MEMBER")
object FUNCTION_FOR_DEFAULT_PARAMETER : IrDeclarationOriginImpl("FUNCTION_FOR_DEFAULT_PARAMETER", isSynthetic = true)
object MASK_FOR_DEFAULT_FUNCTION : IrDeclarationOriginImpl("MASK_FOR_DEFAULT_FUNCTION", isSynthetic = true)
object DEFAULT_CONSTRUCTOR_MARKER : IrDeclarationOriginImpl("DEFAULT_CONSTRUCTOR_MARKER", isSynthetic = true)
object METHOD_HANDLER_IN_DEFAULT_FUNCTION : IrDeclarationOriginImpl("METHOD_HANDLER_IN_DEFAULT_FUNCTION", isSynthetic = true)
object MOVED_DISPATCH_RECEIVER : IrDeclarationOriginImpl("MOVED_DISPATCH_RECEIVER")
object MOVED_EXTENSION_RECEIVER : IrDeclarationOriginImpl("MOVED_EXTENSION_RECEIVER")
object MOVED_CONTEXT_RECEIVER : IrDeclarationOriginImpl("MOVED_CONTEXT_RECEIVER")
val name: String
val isSynthetic: Boolean
get() = false
object FILE_CLASS : IrDeclarationOriginImpl("FILE_CLASS")
object SYNTHETIC_FILE_CLASS : IrDeclarationOriginImpl("SYNTHETIC_FILE_CLASS", isSynthetic = true)
object JVM_MULTIFILE_CLASS : IrDeclarationOriginImpl("JVM_MULTIFILE_CLASS")
object ERROR_CLASS : IrDeclarationOriginImpl("ERROR_CLASS")
companion object {
val DEFINED by IrDeclarationOriginImpl
val FAKE_OVERRIDE by IrDeclarationOriginImpl
val FOR_LOOP_ITERATOR by IrDeclarationOriginImpl
val FOR_LOOP_VARIABLE by IrDeclarationOriginImpl
val FOR_LOOP_IMPLICIT_VARIABLE by IrDeclarationOriginImpl
val PROPERTY_BACKING_FIELD by IrDeclarationOriginImpl
val DEFAULT_PROPERTY_ACCESSOR by IrDeclarationOriginImpl
val DELEGATE by IrDeclarationOriginImpl.Synthetic
val PROPERTY_DELEGATE by IrDeclarationOriginImpl
val DELEGATED_PROPERTY_ACCESSOR by IrDeclarationOriginImpl
val DELEGATED_MEMBER by IrDeclarationOriginImpl
val ENUM_CLASS_SPECIAL_MEMBER by IrDeclarationOriginImpl
val FUNCTION_FOR_DEFAULT_PARAMETER by IrDeclarationOriginImpl.Synthetic
val MASK_FOR_DEFAULT_FUNCTION by IrDeclarationOriginImpl.Synthetic
val DEFAULT_CONSTRUCTOR_MARKER by IrDeclarationOriginImpl.Synthetic
val METHOD_HANDLER_IN_DEFAULT_FUNCTION by IrDeclarationOriginImpl.Synthetic
val MOVED_DISPATCH_RECEIVER by IrDeclarationOriginImpl
val MOVED_EXTENSION_RECEIVER by IrDeclarationOriginImpl
val MOVED_CONTEXT_RECEIVER by IrDeclarationOriginImpl
object SCRIPT_CLASS : IrDeclarationOriginImpl("SCRIPT_CLASS")
object SCRIPT_THIS_RECEIVER : IrDeclarationOriginImpl("SCRIPT_THIS_RECEIVER")
object SCRIPT_STATEMENT : IrDeclarationOriginImpl("SCRIPT_STATEMENT")
object SCRIPT_EARLIER_SCRIPTS : IrDeclarationOriginImpl("SCRIPT_EARLIER_SCRIPTS")
object SCRIPT_CALL_PARAMETER : IrDeclarationOriginImpl("SCRIPT_CALL_PARAMETER")
object SCRIPT_IMPLICIT_RECEIVER : IrDeclarationOriginImpl("SCRIPT_IMPLICIT_RECEIVER")
object SCRIPT_PROVIDED_PROPERTY : IrDeclarationOriginImpl("SCRIPT_PROVIDED_PROPERTY")
object SCRIPT_RESULT_PROPERTY : IrDeclarationOriginImpl("SCRIPT_RESULT_PROPERTY")
object GENERATED_DATA_CLASS_MEMBER : IrDeclarationOriginImpl("GENERATED_DATA_CLASS_MEMBER")
object GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER : IrDeclarationOriginImpl("GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER")
object GENERATED_MULTI_FIELD_VALUE_CLASS_MEMBER : IrDeclarationOriginImpl("GENERATED_MULTI_FIELD_VALUE_CLASS_MEMBER")
object LOCAL_FUNCTION : IrDeclarationOriginImpl("LOCAL_FUNCTION")
object LOCAL_FUNCTION_FOR_LAMBDA : IrDeclarationOriginImpl("LOCAL_FUNCTION_FOR_LAMBDA")
object CATCH_PARAMETER : IrDeclarationOriginImpl("CATCH_PARAMETER")
object UNDERSCORE_PARAMETER : IrDeclarationOriginImpl("UNDERSCORE_PARAMETER")
object DESTRUCTURED_OBJECT_PARAMETER : IrDeclarationOriginImpl("DESTRUCTURED_OBJECT_PARAMETER")
object INSTANCE_RECEIVER : IrDeclarationOriginImpl("INSTANCE_RECEIVER")
object PRIMARY_CONSTRUCTOR_PARAMETER : IrDeclarationOriginImpl("PRIMARY_CONSTRUCTOR_PARAMETER")
object IR_TEMPORARY_VARIABLE : IrDeclarationOriginImpl("IR_TEMPORARY_VARIABLE")
object IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER : IrDeclarationOriginImpl("IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER")
object IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER : IrDeclarationOriginImpl("IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER")
object IR_EXTERNAL_DECLARATION_STUB : IrDeclarationOriginImpl("IR_EXTERNAL_DECLARATION_STUB")
object IR_EXTERNAL_JAVA_DECLARATION_STUB : IrDeclarationOriginImpl("IR_EXTERNAL_JAVA_DECLARATION_STUB")
object IR_BUILTINS_STUB : IrDeclarationOriginImpl("IR_BUILTINS_STUB")
object BRIDGE : IrDeclarationOriginImpl("BRIDGE", isSynthetic = true)
object BRIDGE_SPECIAL : IrDeclarationOriginImpl("BRIDGE_SPECIAL")
object GENERATED_SETTER_GETTER : IrDeclarationOriginImpl("GENERATED_SETTER_GETTER", isSynthetic = true)
val FILE_CLASS by IrDeclarationOriginImpl
val SYNTHETIC_FILE_CLASS by IrDeclarationOriginImpl.Synthetic
val JVM_MULTIFILE_CLASS by IrDeclarationOriginImpl
val ERROR_CLASS by IrDeclarationOriginImpl
object FIELD_FOR_ENUM_ENTRY : IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRY")
object SYNTHETIC_HELPER_FOR_ENUM_VALUES : IrDeclarationOriginImpl("SYNTHETIC_HELPER_FOR_ENUM_VALUES", isSynthetic = true)
object SYNTHETIC_HELPER_FOR_ENUM_ENTRIES : IrDeclarationOriginImpl("SYNTHETIC_HELPER_FOR_ENUM_ENTRIES", isSynthetic = true)
object FIELD_FOR_ENUM_VALUES : IrDeclarationOriginImpl("FIELD_FOR_ENUM_VALUES", isSynthetic = true)
object FIELD_FOR_ENUM_ENTRIES: IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRIES", isSynthetic = true)
object PROPERTY_FOR_ENUM_ENTRIES: IrDeclarationOriginImpl("PROPERTY_FOR_ENUM_ENTRIES", isSynthetic = false)
object FIELD_FOR_OBJECT_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_OBJECT_INSTANCE")
object FIELD_FOR_CLASS_CONTEXT_RECEIVER : IrDeclarationOriginImpl("FIELD_FOR_CLASS_CONTEXT_RECEIVER", isSynthetic = true)
val SCRIPT_CLASS by IrDeclarationOriginImpl
val SCRIPT_THIS_RECEIVER by IrDeclarationOriginImpl
val SCRIPT_STATEMENT by IrDeclarationOriginImpl
val SCRIPT_EARLIER_SCRIPTS by IrDeclarationOriginImpl
val SCRIPT_CALL_PARAMETER by IrDeclarationOriginImpl
val SCRIPT_IMPLICIT_RECEIVER by IrDeclarationOriginImpl
val SCRIPT_PROVIDED_PROPERTY by IrDeclarationOriginImpl
val SCRIPT_RESULT_PROPERTY by IrDeclarationOriginImpl
val GENERATED_DATA_CLASS_MEMBER by IrDeclarationOriginImpl
val GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER by IrDeclarationOriginImpl
val GENERATED_MULTI_FIELD_VALUE_CLASS_MEMBER by IrDeclarationOriginImpl
val LOCAL_FUNCTION by IrDeclarationOriginImpl
val LOCAL_FUNCTION_FOR_LAMBDA by IrDeclarationOriginImpl
val CATCH_PARAMETER by IrDeclarationOriginImpl
val UNDERSCORE_PARAMETER by IrDeclarationOriginImpl
val DESTRUCTURED_OBJECT_PARAMETER by IrDeclarationOriginImpl
val INSTANCE_RECEIVER by IrDeclarationOriginImpl
val PRIMARY_CONSTRUCTOR_PARAMETER by IrDeclarationOriginImpl
val IR_TEMPORARY_VARIABLE by IrDeclarationOriginImpl
val IR_TEMPORARY_VARIABLE_FOR_INLINED_PARAMETER by IrDeclarationOriginImpl
val IR_TEMPORARY_VARIABLE_FOR_INLINED_EXTENSION_RECEIVER by IrDeclarationOriginImpl
val IR_EXTERNAL_DECLARATION_STUB by IrDeclarationOriginImpl
val IR_EXTERNAL_JAVA_DECLARATION_STUB by IrDeclarationOriginImpl
val IR_BUILTINS_STUB by IrDeclarationOriginImpl
val BRIDGE by IrDeclarationOriginImpl.Synthetic
val BRIDGE_SPECIAL by IrDeclarationOriginImpl
val GENERATED_SETTER_GETTER by IrDeclarationOriginImpl.Synthetic
object ADAPTER_FOR_CALLABLE_REFERENCE : IrDeclarationOriginImpl("ADAPTER_FOR_CALLABLE_REFERENCE", isSynthetic = true)
object ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE")
object ADAPTER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_FOR_SUSPEND_CONVERSION", isSynthetic = true)
object ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION : IrDeclarationOriginImpl("ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION")
object ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR : IrDeclarationOriginImpl("ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR", isSynthetic = true)
val FIELD_FOR_ENUM_ENTRY by IrDeclarationOriginImpl
val SYNTHETIC_HELPER_FOR_ENUM_VALUES by IrDeclarationOriginImpl.Synthetic
val SYNTHETIC_HELPER_FOR_ENUM_ENTRIES by IrDeclarationOriginImpl.Synthetic
val FIELD_FOR_ENUM_VALUES by IrDeclarationOriginImpl.Synthetic
val FIELD_FOR_ENUM_ENTRIES by IrDeclarationOriginImpl.Synthetic
val PROPERTY_FOR_ENUM_ENTRIES by IrDeclarationOriginImpl
val FIELD_FOR_OBJECT_INSTANCE by IrDeclarationOriginImpl
val FIELD_FOR_CLASS_CONTEXT_RECEIVER by IrDeclarationOriginImpl.Synthetic
object GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("GENERATED_SAM_IMPLEMENTATION")
object SYNTHETIC_GENERATED_SAM_IMPLEMENTATION : IrDeclarationOriginImpl("SYNTHETIC_GENERATED_SAM_IMPLEMENTATION", isSynthetic = true)
val ADAPTER_FOR_CALLABLE_REFERENCE by IrDeclarationOriginImpl.Synthetic
val ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE by IrDeclarationOriginImpl
val ADAPTER_FOR_SUSPEND_CONVERSION by IrDeclarationOriginImpl.Synthetic
val ADAPTER_PARAMETER_FOR_SUSPEND_CONVERSION by IrDeclarationOriginImpl
val ADAPTER_FOR_FUN_INTERFACE_CONSTRUCTOR by IrDeclarationOriginImpl.Synthetic
object SYNTHETIC_JAVA_PROPERTY_DELEGATE : IrDeclarationOriginImpl("SYNTHETIC_JAVA_PROPERTY_DELEGATE", isSynthetic = true)
val GENERATED_SAM_IMPLEMENTATION by IrDeclarationOriginImpl
val SYNTHETIC_GENERATED_SAM_IMPLEMENTATION by IrDeclarationOriginImpl.Synthetic
object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS", isSynthetic = true)
object CONTINUATION : IrDeclarationOriginImpl("CONTINUATION", isSynthetic = true)
object LOWERED_SUSPEND_FUNCTION : IrDeclarationOriginImpl("LOWERED_SUSPEND_FUNCTION", isSynthetic = true)
val SYNTHETIC_JAVA_PROPERTY_DELEGATE by IrDeclarationOriginImpl.Synthetic
object SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT : IrDeclarationOriginImpl("SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT", isSynthetic = true)
val FIELD_FOR_OUTER_THIS by IrDeclarationOriginImpl.Synthetic
val CONTINUATION by IrDeclarationOriginImpl.Synthetic
val LOWERED_SUSPEND_FUNCTION by IrDeclarationOriginImpl.Synthetic
val SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT by IrDeclarationOriginImpl.Synthetic
}
/**
* [pluginKey] may be null if declaration with this origin was deserialized from klib
@@ -103,9 +113,7 @@ interface IrDeclarationOrigin {
override val name: String
get() = "GENERATED[${pluginId}]"
override fun toString(): String {
return name
}
override fun toString(): String = name
override fun equals(other: Any?): Boolean {
if (this === other) return true
@@ -113,20 +121,16 @@ interface IrDeclarationOrigin {
return pluginKey == other.pluginKey
}
override fun hashCode(): Int {
return pluginKey.hashCode()
}
override fun hashCode(): Int = pluginKey.hashCode()
}
val name: String
val isSynthetic: Boolean get() = false
}
abstract class IrDeclarationOriginImpl(
class IrDeclarationOriginImpl(
override val name: String,
override val isSynthetic: Boolean = false
) : IrDeclarationOrigin {
) : IrDeclarationOrigin, ReadOnlyProperty<Any?, IrDeclarationOriginImpl> {
override fun toString(): String = name
override fun getValue(thisRef: Any?, property: KProperty<*>): IrDeclarationOriginImpl = this
override fun equals(other: Any?): Boolean {
if (this === other) return true
@@ -137,7 +141,15 @@ abstract class IrDeclarationOriginImpl(
return true
}
override fun hashCode(): Int {
return name.hashCode()
override fun hashCode(): Int = name.hashCode()
companion object : PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, IrDeclarationOriginImpl>> {
override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty<Any?, IrDeclarationOriginImpl> =
IrDeclarationOriginImpl(property.name)
}
object Synthetic : PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, IrDeclarationOriginImpl>> {
override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty<Any?, IrDeclarationOriginImpl> =
IrDeclarationOriginImpl(property.name, isSynthetic = true)
}
}
@@ -18,8 +18,8 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.utils.SmartList
private val SCRIPT_ORIGIN = object : IrDeclarationOriginImpl("SCRIPT") {}
val SCRIPT_K2_ORIGIN = object : IrDeclarationOriginImpl("SCRIPT_K2") {}
private val SCRIPT_ORIGIN = IrDeclarationOriginImpl("SCRIPT")
val SCRIPT_K2_ORIGIN = IrDeclarationOriginImpl("SCRIPT_K2")
class IrScriptImpl(
override val symbol: IrScriptSymbol,
@@ -5,96 +5,113 @@
package org.jetbrains.kotlin.ir.expressions
abstract class IrStatementOriginImpl(val debugName: String) : IrStatementOrigin {
import kotlin.properties.PropertyDelegateProvider
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
class IrStatementOriginImpl(override val debugName: String) : IrStatementOrigin, ReadOnlyProperty<Any?, IrStatementOriginImpl> {
override fun getValue(thisRef: Any?, property: KProperty<*>): IrStatementOriginImpl = this
override fun toString(): String = debugName
companion object : PropertyDelegateProvider<Any?, ReadOnlyProperty<Any?, IrStatementOriginImpl>> {
override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty<Any?, IrStatementOriginImpl> =
IrStatementOriginImpl(property.name)
}
}
interface IrStatementOrigin {
object SAFE_CALL : IrStatementOriginImpl("SAFE_CALL")
val debugName: String
object UMINUS : IrStatementOriginImpl("UMINUS")
object UPLUS : IrStatementOriginImpl("UPLUS")
object EXCL : IrStatementOriginImpl("EXCL")
object EXCLEXCL : IrStatementOriginImpl("EXCLEXCL")
companion object {
val SAFE_CALL by IrStatementOriginImpl
object ELVIS : IrStatementOriginImpl("ELVIS")
val UMINUS by IrStatementOriginImpl
val UPLUS by IrStatementOriginImpl
val EXCL by IrStatementOriginImpl
val EXCLEXCL by IrStatementOriginImpl
object LT : IrStatementOriginImpl("LT")
object GT : IrStatementOriginImpl("GT")
object LTEQ : IrStatementOriginImpl("LTEQ")
object GTEQ : IrStatementOriginImpl("GTEQ")
val ELVIS by IrStatementOriginImpl
object EQEQ : IrStatementOriginImpl("EQEQ")
object EQEQEQ : IrStatementOriginImpl("EQEQEQ")
object EXCLEQ : IrStatementOriginImpl("EXCLEQ")
object EXCLEQEQ : IrStatementOriginImpl("EXCLEQEQ")
val LT by IrStatementOriginImpl
val GT by IrStatementOriginImpl
val LTEQ by IrStatementOriginImpl
val GTEQ by IrStatementOriginImpl
object IN : IrStatementOriginImpl("IN")
object NOT_IN : IrStatementOriginImpl("NOT_IN")
object ANDAND : IrStatementOriginImpl("ANDAND")
object OROR : IrStatementOriginImpl("OROR")
val EQEQ by IrStatementOriginImpl
val EQEQEQ by IrStatementOriginImpl
val EXCLEQ by IrStatementOriginImpl
val EXCLEQEQ by IrStatementOriginImpl
object PLUS : IrStatementOriginImpl("PLUS")
object MINUS : IrStatementOriginImpl("MINUS")
object MUL : IrStatementOriginImpl("MUL")
object DIV : IrStatementOriginImpl("DIV")
object PERC : IrStatementOriginImpl("PERC")
object RANGE : IrStatementOriginImpl("RANGE")
object RANGE_UNTIL : IrStatementOriginImpl("RANGE_UNTIL")
val IN by IrStatementOriginImpl
val NOT_IN by IrStatementOriginImpl
val ANDAND by IrStatementOriginImpl
val OROR by IrStatementOriginImpl
object INVOKE : IrStatementOriginImpl("INVOKE")
object VARIABLE_AS_FUNCTION : IrStatementOriginImpl("VARIABLE_AS_FUNCTION")
object GET_ARRAY_ELEMENT : IrStatementOriginImpl("GET_ARRAY_ELEMENT")
val PLUS by IrStatementOriginImpl
val MINUS by IrStatementOriginImpl
val MUL by IrStatementOriginImpl
val DIV by IrStatementOriginImpl
val PERC by IrStatementOriginImpl
val RANGE by IrStatementOriginImpl
val RANGE_UNTIL by IrStatementOriginImpl
object PREFIX_INCR : IrStatementOriginImpl("PREFIX_INCR")
object PREFIX_DECR : IrStatementOriginImpl("PREFIX_DECR")
object POSTFIX_INCR : IrStatementOriginImpl("POSTFIX_INCR")
object POSTFIX_DECR : IrStatementOriginImpl("POSTFIX_DECR")
val INVOKE by IrStatementOriginImpl
val VARIABLE_AS_FUNCTION by IrStatementOriginImpl
val GET_ARRAY_ELEMENT by IrStatementOriginImpl
object EQ : IrStatementOriginImpl("EQ")
object PLUSEQ : IrStatementOriginImpl("PLUSEQ")
object MINUSEQ : IrStatementOriginImpl("MINUSEQ")
object MULTEQ : IrStatementOriginImpl("MULTEQ")
object DIVEQ : IrStatementOriginImpl("DIVEQ")
object PERCEQ : IrStatementOriginImpl("PERCEQ")
val PREFIX_INCR by IrStatementOriginImpl
val PREFIX_DECR by IrStatementOriginImpl
val POSTFIX_INCR by IrStatementOriginImpl
val POSTFIX_DECR by IrStatementOriginImpl
object ARGUMENTS_REORDERING_FOR_CALL : IrStatementOriginImpl("ARGUMENTS_REORDERING_FOR_CALL")
object DESTRUCTURING_DECLARATION : IrStatementOriginImpl("DESTRUCTURING_DECLARATION")
val EQ by IrStatementOriginImpl
val PLUSEQ by IrStatementOriginImpl
val MINUSEQ by IrStatementOriginImpl
val MULTEQ by IrStatementOriginImpl
val DIVEQ by IrStatementOriginImpl
val PERCEQ by IrStatementOriginImpl
object GET_PROPERTY : IrStatementOriginImpl("GET_PROPERTY")
object GET_LOCAL_PROPERTY : IrStatementOriginImpl("GET_LOCAL_PROPERTY")
val ARGUMENTS_REORDERING_FOR_CALL by IrStatementOriginImpl
val DESTRUCTURING_DECLARATION by IrStatementOriginImpl
object IF : IrStatementOriginImpl("IF")
object WHEN : IrStatementOriginImpl("WHEN")
object WHEN_COMMA : IrStatementOriginImpl("WHEN_COMMA")
object WHILE_LOOP : IrStatementOriginImpl("WHILE_LOOP")
object DO_WHILE_LOOP : IrStatementOriginImpl("DO_WHILE_LOOP")
object FOR_LOOP : IrStatementOriginImpl("FOR_LOOP")
object FOR_LOOP_ITERATOR : IrStatementOriginImpl("FOR_LOOP_ITERATOR")
object FOR_LOOP_INNER_WHILE : IrStatementOriginImpl("FOR_LOOP_INNER_WHILE")
object FOR_LOOP_HAS_NEXT : IrStatementOriginImpl("FOR_LOOP_HAS_NEXT")
object FOR_LOOP_NEXT : IrStatementOriginImpl("FOR_LOOP_NEXT")
val GET_PROPERTY by IrStatementOriginImpl
val GET_LOCAL_PROPERTY by IrStatementOriginImpl
object LAMBDA : IrStatementOriginImpl("LAMBDA")
object DEFAULT_VALUE : IrStatementOriginImpl("DEFAULT_VALUE")
object ANONYMOUS_FUNCTION : IrStatementOriginImpl("ANONYMOUS_FUNCTION")
object OBJECT_LITERAL : IrStatementOriginImpl("OBJECT_LITERAL")
object ADAPTED_FUNCTION_REFERENCE : IrStatementOriginImpl("ADAPTED_FUNCTION_REFERENCE")
object SUSPEND_CONVERSION : IrStatementOriginImpl("SUSPEND_CONVERSION")
object FUN_INTERFACE_CONSTRUCTOR_REFERENCE : IrStatementOriginImpl("FUN_INTERFACE_CONSTRUCTOR_REFERENCE")
val IF by IrStatementOriginImpl
val WHEN by IrStatementOriginImpl
val WHEN_COMMA by IrStatementOriginImpl
val WHILE_LOOP by IrStatementOriginImpl
val DO_WHILE_LOOP by IrStatementOriginImpl
val FOR_LOOP by IrStatementOriginImpl
val FOR_LOOP_ITERATOR by IrStatementOriginImpl
val FOR_LOOP_INNER_WHILE by IrStatementOriginImpl
val FOR_LOOP_HAS_NEXT by IrStatementOriginImpl
val FOR_LOOP_NEXT by IrStatementOriginImpl
object INITIALIZE_PROPERTY_FROM_PARAMETER : IrStatementOriginImpl("INITIALIZE_PROPERTY_FROM_PARAMETER")
object INITIALIZE_FIELD : IrStatementOriginImpl("INITIALIZE_FIELD")
val LAMBDA by IrStatementOriginImpl
val DEFAULT_VALUE by IrStatementOriginImpl
val ANONYMOUS_FUNCTION by IrStatementOriginImpl
val OBJECT_LITERAL by IrStatementOriginImpl
val ADAPTED_FUNCTION_REFERENCE by IrStatementOriginImpl
val SUSPEND_CONVERSION by IrStatementOriginImpl
val FUN_INTERFACE_CONSTRUCTOR_REFERENCE by IrStatementOriginImpl
object PROPERTY_REFERENCE_FOR_DELEGATE : IrStatementOriginImpl("PROPERTY_REFERENCE_FOR_DELEGATE")
val INITIALIZE_PROPERTY_FROM_PARAMETER by IrStatementOriginImpl
val INITIALIZE_FIELD by IrStatementOriginImpl
object BRIDGE_DELEGATION : IrStatementOriginImpl("BRIDGE_DELEGATION")
val PROPERTY_REFERENCE_FOR_DELEGATE by IrStatementOriginImpl
object SYNTHETIC_NOT_AUTOBOXED_CHECK : IrStatementOriginImpl("SYNTHETIC_NOT_AUTOBOXED_CHECK")
val BRIDGE_DELEGATION by IrStatementOriginImpl
object PARTIAL_LINKAGE_RUNTIME_ERROR : IrStatementOriginImpl("PARTIAL_LINKAGE_RUNTIME_ERROR")
val SYNTHETIC_NOT_AUTOBOXED_CHECK by IrStatementOriginImpl
val PARTIAL_LINKAGE_RUNTIME_ERROR by IrStatementOriginImpl
}
data class COMPONENT_N private constructor(val index: Int) : IrStatementOrigin {
override val debugName: String = "COMPONENT_$index"
data class COMPONENT_N private constructor(val index: Int) : IrStatementOriginImpl("COMPONENT_$index") {
companion object {
private val precreatedComponents = Array(32) { i -> COMPONENT_N(i + 1) }
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrContainerExpression
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.PARTIAL_LINKAGE_RUNTIME_ERROR
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.Companion.PARTIAL_LINKAGE_RUNTIME_ERROR
import org.jetbrains.kotlin.ir.util.IrMessageLogger
import org.jetbrains.kotlin.ir.util.getPackageFragment
import org.jetbrains.kotlin.name.Name
@@ -5,19 +5,26 @@
package org.jetbrains.kotlin.ir.linkage.partial
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
@Suppress("KDocUnresolvedReference")
enum class PartiallyLinkedDeclarationOrigin : IrDeclarationOrigin {
object PartiallyLinkedDeclarationOrigin {
/** The unresolved (missing) declaration */
MISSING_DECLARATION,
val MISSING_DECLARATION by IrDeclarationOriginImpl
/** The abstract callable member that needs to be implemented in non-abstract class */
UNIMPLEMENTED_ABSTRACT_CALLABLE_MEMBER,
val UNIMPLEMENTED_ABSTRACT_CALLABLE_MEMBER by IrDeclarationOriginImpl
/** The callable member is not implemented and inherit several implementations from interfaces, but no implementation from class */
AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER,
val AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER by IrDeclarationOriginImpl
/** Auxiliary declaration generated by [PartiallyLinkedIrTreePatcher] */
AUXILIARY_GENERATED_DECLARATION;
val AUXILIARY_GENERATED_DECLARATION by IrDeclarationOriginImpl
val entries: Set<IrDeclarationOriginImpl> = setOf(
MISSING_DECLARATION,
UNIMPLEMENTED_ABSTRACT_CALLABLE_MEMBER,
AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER,
AUXILIARY_GENERATED_DECLARATION,
)
}
@@ -100,7 +100,7 @@ internal class PartialLinkageSupportForLoweringsImpl(
startOffset
}
else -> if (origin is PartiallyLinkedDeclarationOrigin) {
else -> if (origin in PartiallyLinkedDeclarationOrigin.entries) {
// There is no sense to take coordinates from the declaration that does not exist in the code.
// Let's take the coordinates of the parent.
parent.startOffsetOfFirstDenotableIrElement()
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyDeclarationBase
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.PARTIAL_LINKAGE_RUNTIME_ERROR
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.Companion.PARTIAL_LINKAGE_RUNTIME_ERROR
import org.jetbrains.kotlin.ir.expressions.impl.IrCompositeImpl
import org.jetbrains.kotlin.ir.linkage.partial.*
import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageCase.*
@@ -457,7 +457,7 @@ internal class PartiallyLinkedIrTreePatcher(
override fun visitDeclaration(declaration: IrDeclarationBase): IrStatement {
// Optimization: Don't patch expressions under generated synthetic declarations.
return if (declaration.origin is PartiallyLinkedDeclarationOrigin)
return if (declaration.origin in PartiallyLinkedDeclarationOrigin.entries)
declaration // There are neither expressions nor annotations to patch.
else {
declaration.filterUnusableAnnotations()
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.types.impl.*
import org.jetbrains.kotlin.ir.util.parentAsClass
import org.jetbrains.kotlin.utils.memoryOptimizedMap
import kotlin.reflect.full.declaredMemberProperties
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBlock as ProtoBlock
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBlockBody as ProtoBlockBody
import org.jetbrains.kotlin.backend.common.serialization.proto.IrBranch as ProtoBranch
@@ -857,11 +858,10 @@ class IrBodyDeserializer(
code: () -> Long
): S? = if (condition) deserializeTypedSymbol(code(), fallbackSymbolKind, remap = true) else null
companion object {
private val allKnownStatementOrigins = IrStatementOrigin::class.nestedClasses.toList()
private val statementOriginIndex =
allKnownStatementOrigins.mapNotNull { it.objectInstance as? IrStatementOriginImpl }.associateBy { it.debugName }
private companion object {
private val statementOriginIndex = IrStatementOrigin.Companion::class
.declaredMemberProperties
.mapNotNull { it.get(IrStatementOrigin.Companion) as? IrStatementOrigin }
.associateBy { it.debugName }
}
}
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.utils.*
import kotlin.collections.set
import kotlin.reflect.full.declaredMemberProperties
import org.jetbrains.kotlin.backend.common.serialization.proto.IrAnonymousInit as ProtoAnonymousInit
import org.jetbrains.kotlin.backend.common.serialization.proto.IrClass as ProtoClass
import org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructor as ProtoConstructor
@@ -252,7 +253,7 @@ class IrDeclarationDeserializer(
private inline fun <T> withDeserializedIrDeclarationBase(
proto: ProtoDeclarationBase,
setParent: Boolean = true,
block: (IrSymbol, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T
block: (IrSymbol, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T,
): T where T : IrDeclaration, T : IrSymbolOwner {
val (s, uid) = symbolDeserializer.deserializeIrSymbolToDeclare(proto.symbol)
val coordinates = BinaryCoordinates.decode(proto.coordinates)
@@ -556,7 +557,7 @@ class IrDeclarationDeserializer(
proto: ProtoFunctionBase,
setParent: Boolean = true,
fallbackSymbolKind: SymbolKind,
block: (S, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T
block: (S, IdSignature, Int, Int, IrDeclarationOrigin, Long) -> T,
): T = withDeserializedIrDeclarationBase(proto.base, setParent) { symbol, idSig, startOffset, endOffset, origin, fcode ->
val functionSymbol: S = symbol.checkSymbolType(fallbackSymbolKind)
symbolTable.withScope(functionSymbol) {
@@ -621,7 +622,8 @@ class IrDeclarationDeserializer(
isFakeOverride = flags.isFakeOverride,
)
}.apply {
overriddenSymbols = proto.overriddenList.memoryOptimizedMap { deserializeIrSymbolAndRemap(it).checkSymbolType(FUNCTION_SYMBOL) }
overriddenSymbols =
proto.overriddenList.memoryOptimizedMap { deserializeIrSymbolAndRemap(it).checkSymbolType(FUNCTION_SYMBOL) }
}
}
@@ -726,7 +728,7 @@ class IrDeclarationDeserializer(
private fun deserializeIrLocalDelegatedProperty(
proto: ProtoLocalDelegatedProperty,
setParent: Boolean = true
setParent: Boolean = true,
): IrLocalDelegatedProperty =
withDeserializedIrDeclarationBase(proto.base, setParent) { symbol, _, startOffset, endOffset, origin, fcode ->
val flags = LocalVariableFlags.decode(fcode)
@@ -794,17 +796,20 @@ class IrDeclarationDeserializer(
}
}
companion object {
private val allKnownDeclarationOrigins = IrDeclarationOrigin::class.nestedClasses.toList()
private val declarationOriginIndex =
allKnownDeclarationOrigins.mapNotNull { it.objectInstance as? IrDeclarationOriginImpl }.associateBy { it.name }
private companion object {
private val declarationOriginIndex by lazy {
IrDeclarationOrigin.Companion::class
.declaredMemberProperties
.mapNotNull { it.get(IrDeclarationOrigin.Companion) as? IrDeclarationOriginImpl }
.associateBy { it.name }
}
}
private fun deserializeIrDeclarationOrigin(protoName: Int): IrDeclarationOrigin {
val originName = libraryFile.string(protoName)
return IrDeclarationOrigin.GeneratedByPlugin.fromSerializedString(originName)
?: declarationOriginIndex[originName]
?: object : IrDeclarationOriginImpl(originName) {}
?: IrDeclarationOriginImpl(originName)
}
fun deserializeDeclaration(proto: ProtoDeclaration, setParent: Boolean = true): IrDeclaration {
@@ -92,7 +92,7 @@ class FileDeserializationState(
linker.fakeOverrideBuilder,
compatibilityMode = moduleDeserializer.compatibilityMode,
linker.partialLinkageSupport.isEnabled,
internationService = linker.internationService
internationService = linker.internationService,
)
val fileDeserializer = IrFileDeserializer(file, fileReader, fileProto, symbolDeserializer, declarationDeserializer)
@@ -183,7 +183,7 @@ open class IrFileSerializer(
private fun serializeIrDeclarationOrigin(origin: IrDeclarationOrigin): Int = serializeString(origin.name)
private fun serializeIrStatementOrigin(origin: IrStatementOrigin): Int =
serializeString((origin as? IrStatementOriginImpl)?.debugName ?: error("Unable to serialize origin ${origin.javaClass.name}"))
serializeString(origin.debugName)
private fun serializeCoordinates(start: Int, end: Int): Long = if (skipPrivateApi) {
0L
@@ -8,16 +8,18 @@ package org.jetbrains.kotlin.ir.backend.js
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl
import org.jetbrains.kotlin.ir.expressions.IrStatementOriginImpl
interface JsStatementOrigins {
object BIND_CALL : IrStatementOriginImpl("BIND_CALL")
object STATEMENT_ORIGIN_COROUTINE_IMPL : IrStatementOriginImpl("COROUTINE_IMPL")
object SYNTHESIZED_STATEMENT : IrStatementOriginImpl("SYNTHESIZED_STATEMENT")
object CALLABLE_REFERENCE_CREATE : IrStatementOriginImpl("CALLABLE_REFERENCE_CREATE")
object CALLABLE_REFERENCE_INVOKE : IrStatementOriginImpl("CALLABLE_REFERENCE_INVOKE")
object EXPLICIT_INVOKE : IrStatementOriginImpl("EXPLICIT_INVOKE")
object FACTORY_ORIGIN : IrDeclarationOriginImpl("FACTORY_ORIGIN")
object COROUTINE_ROOT_LOOP : IrStatementOriginImpl("COROUTINE_ROOT_LOOP")
object COROUTINE_SWITCH : IrStatementOriginImpl("COROUTINE_SWITCH")
object CLASS_REFERENCE : IrStatementOriginImpl("CLASS_REFERENCE")
object IMPLEMENTATION_DELEGATION_CALL : IrStatementOriginImpl("IMPLEMENTATION_DELEGATION_CALL")
object JsStatementOrigins {
val BIND_CALL by IrStatementOriginImpl
val STATEMENT_ORIGIN_COROUTINE_IMPL = IrStatementOriginImpl("COROUTINE_IMPL")
val SYNTHESIZED_STATEMENT by IrStatementOriginImpl
val CALLABLE_REFERENCE_CREATE by IrStatementOriginImpl
val CALLABLE_REFERENCE_INVOKE by IrStatementOriginImpl
val EXPLICIT_INVOKE by IrStatementOriginImpl
val FACTORY_ORIGIN by IrDeclarationOriginImpl
val COROUTINE_ROOT_LOOP by IrStatementOriginImpl
val COROUTINE_SWITCH by IrStatementOriginImpl
val CLASS_REFERENCE by IrStatementOriginImpl
val IMPLEMENTATION_DELEGATION_CALL by IrStatementOriginImpl
}
@@ -44,7 +44,7 @@ private fun Context.getTypeConversionImpl(
}.symbol
}
internal object DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION : IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION")
internal val DECLARATION_ORIGIN_INLINE_CLASS_SPECIAL_FUNCTION = IrDeclarationOriginImpl("INLINE_CLASS_SPECIAL_FUNCTION")
private fun IrClass.defaultOrNullableType(hasQuestionMark: Boolean) =
if (hasQuestionMark) this.defaultType.makeNullable() else this.defaultType
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.util.OperatorNameConventions
internal object DECLARATION_ORIGIN_FUNCTION_CLASS : IrDeclarationOriginImpl("DECLARATION_ORIGIN_FUNCTION_CLASS")
internal val DECLARATION_ORIGIN_FUNCTION_CLASS by IrDeclarationOriginImpl
@OptIn(ObsoleteDescriptorBasedAPI::class)
val IrPackageFragment.isFunctionInterfaceFile get() = packageFragmentDescriptor is FunctionInterfacePackageFragment
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.ir.types.typeWith
import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET
import org.jetbrains.kotlin.name.Name
internal object DECLARATION_ORIGIN_ENTRY_POINT : IrDeclarationOriginImpl("ENTRY_POINT")
internal val DECLARATION_ORIGIN_ENTRY_POINT = IrDeclarationOriginImpl("ENTRY_POINT")
internal fun makeEntryPoint(generationState: NativeGenerationState): IrFunction {
val context = generationState.context
@@ -1100,7 +1100,9 @@ private class ObjCBlockPointerValuePassing(
)
}
private object OBJC_BLOCK_FUNCTION_IMPL : IrDeclarationOriginImpl("OBJC_BLOCK_FUNCTION_IMPL")
private companion object {
private val OBJC_BLOCK_FUNCTION_IMPL by IrDeclarationOriginImpl
}
private fun IrBuilderWithScope.createKotlinFunctionObject(blockPointer: IrExpression): IrExpression {
val constructor = generateKotlinFunctionClass()
@@ -151,7 +151,7 @@ internal class KotlinCBridgeBuilder(
isKotlinToC: Boolean,
foreignExceptionMode: ForeignExceptionMode.Mode = ForeignExceptionMode.default
) {
private val origin: CBridgeOrigin = if (isKotlinToC) CBridgeOrigin.KOTLIN_TO_C_BRIDGE else CBridgeOrigin.C_TO_KOTLIN_BRIDGE
private val origin = if (isKotlinToC) CBridgeOrigin.KOTLIN_TO_C_BRIDGE else CBridgeOrigin.C_TO_KOTLIN_BRIDGE
private val kotlinBridgeBuilder = KotlinBridgeBuilder(startOffset, endOffset, cName, stubs, isExternal = isKotlinToC, foreignExceptionMode, origin)
private val cBridgeBuilder = CFunctionBuilder()
@@ -261,7 +261,7 @@ internal class CCallBuilder {
}
}
sealed class CBridgeOrigin(name: String): IrDeclarationOriginImpl(name, isSynthetic = true) {
object KOTLIN_TO_C_BRIDGE: CBridgeOrigin("KOTLIN_TO_C_BRIDGE")
object C_TO_KOTLIN_BRIDGE: CBridgeOrigin("C_TO_KOTLIN_BRIDGE")
object CBridgeOrigin {
val KOTLIN_TO_C_BRIDGE by IrDeclarationOriginImpl.Synthetic
val C_TO_KOTLIN_BRIDGE by IrDeclarationOriginImpl.Synthetic
}
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.name.Name
/**
* Allows to distinguish external declarations to internal ABI.
*/
internal object INTERNAL_ABI_ORIGIN : IrDeclarationOriginImpl("INTERNAL_ABI")
internal val INTERNAL_ABI_ORIGIN = IrDeclarationOriginImpl("INTERNAL_ABI")
/**
* Sometimes we need to reference symbols that are not declared in metadata.
@@ -288,5 +288,7 @@ internal class PropertyDelegationLowering(val generationState: NativeGenerationS
return type.classifier == expectedClass
}
private object DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION : IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
private companion object {
private val DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION = IrDeclarationOriginImpl("KPROPERTIES_FOR_DELEGATION")
}
}
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildField
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.ARGUMENTS_REORDERING_FOR_CALL
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.Companion.ARGUMENTS_REORDERING_FOR_CALL
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.types.classifierOrNull
import org.jetbrains.kotlin.ir.types.typeWith
@@ -85,7 +85,7 @@ internal class EnumsSupport(
}
}
internal object DECLARATION_ORIGIN_ENUM : IrDeclarationOriginImpl("ENUM")
internal val DECLARATION_ORIGIN_ENUM = IrDeclarationOriginImpl("ENUM")
internal class NativeEnumWhenLowering constructor(context: Context) : EnumWhenLowering(context) {
override fun mapConstEnumEntry(entry: IrEnumEntry): Int {
@@ -61,9 +61,9 @@ import org.jetbrains.kotlin.name.Name
* ```
*/
internal class FunctionReferenceLowering(val generationState: NativeGenerationState) : FileLoweringPass {
private object DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
companion object {
private val DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL = IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL")
fun isLoweredFunctionReference(declaration: IrDeclaration): Boolean =
declaration.origin == DECLARATION_ORIGIN_FUNCTION_REFERENCE_IMPL
}
@@ -26,10 +26,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
internal class InitializersLowering(val context: CommonBackendContext) : ClassLoweringPass {
object STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER : IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
object DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER : IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
companion object {
val STATEMENT_ORIGIN_ANONYMOUS_INITIALIZER = IrStatementOriginImpl("ANONYMOUS_INITIALIZER")
val DECLARATION_ORIGIN_ANONYMOUS_INITIALIZER = IrDeclarationOriginImpl("ANONYMOUS_INITIALIZER")
}
override fun lower(irClass: IrClass) {
if (irClass.isInterface) return
@@ -312,8 +312,9 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
}
}
private object OVERRIDING_INITIALIZER_BY_CONSTRUCTOR :
IrDeclarationOriginImpl("OVERRIDING_INITIALIZER_BY_CONSTRUCTOR")
private companion object {
private val OVERRIDING_INITIALIZER_BY_CONSTRUCTOR by IrDeclarationOriginImpl
}
private fun IrConstructor.overridesConstructor(other: IrConstructor): Boolean {
return this.descriptor.valueParameters.size == other.descriptor.valueParameters.size &&
@@ -171,7 +171,8 @@ internal class ObjectClassLowering(val generationState: NativeGenerationState) :
}
// This is a hack to avoid early freezing. Should be removed when freezing is removed
object IrStatementOriginFieldPreInit : IrStatementOriginImpl("FIELD_PRE_INIT")
companion object {
// This is a hack to avoid early freezing. Should be removed when freezing is removed
val IrStatementOriginFieldPreInit = IrStatementOriginImpl("FIELD_PRE_INIT")
}
}
@@ -25,9 +25,9 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
import org.jetbrains.kotlin.name.Name
internal object DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
internal object DECLARATION_ORIGIN_STATIC_THREAD_LOCAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_THREAD_LOCAL_INITIALIZER")
internal object DECLARATION_ORIGIN_STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER : IrDeclarationOriginImpl("STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER")
internal val DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_GLOBAL_INITIALIZER")
internal val DECLARATION_ORIGIN_STATIC_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_THREAD_LOCAL_INITIALIZER")
internal val DECLARATION_ORIGIN_STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER = IrDeclarationOriginImpl("STATIC_STANDALONE_THREAD_LOCAL_INITIALIZER")
internal val IrFunction.isStaticInitializer: Boolean
get() = origin == DECLARATION_ORIGIN_STATIC_GLOBAL_INITIALIZER
@@ -45,11 +45,10 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.descriptorUtil.module
internal class TestProcessor (val context: Context) {
object TEST_SUITE_CLASS: IrDeclarationOriginImpl("TEST_SUITE_CLASS")
object TEST_SUITE_GENERATED_MEMBER: IrDeclarationOriginImpl("TEST_SUITE_GENERATED_MEMBER")
companion object {
val TEST_SUITE_CLASS by IrDeclarationOriginImpl
val TEST_SUITE_GENERATED_MEMBER by IrDeclarationOriginImpl
val COMPANION_GETTER_NAME = Name.identifier("getCompanion")
val INSTANCE_GETTER_NAME = Name.identifier("createInstance")
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.util.capitalizeDecapitalize.*
import org.jetbrains.kotlin.ir.util.*
object IR_DECLARATION_ORIGIN_VOLATILE : IrDeclarationOriginImpl("VOLATILE")
val IR_DECLARATION_ORIGIN_VOLATILE = IrDeclarationOriginImpl("VOLATILE")
internal class VolatileFieldsLowering(val context: Context) : FileLoweringPass {
private val symbols = context.ir.symbols
@@ -33,8 +33,8 @@ internal class ExternalModulesDFG(val allTypes: List<DataFlowIR.Type.Declared>,
val publicFunctions: Map<Long, DataFlowIR.FunctionSymbol.Public>,
val functionDFGs: Map<DataFlowIR.FunctionSymbol, DataFlowIR.Function>)
internal object STATEMENT_ORIGIN_PRODUCER_INVOCATION : IrStatementOriginImpl("PRODUCER_INVOCATION")
internal object STATEMENT_ORIGIN_JOB_INVOCATION : IrStatementOriginImpl("JOB_INVOCATION")
internal val STATEMENT_ORIGIN_PRODUCER_INVOCATION = IrStatementOriginImpl("PRODUCER_INVOCATION")
internal val STATEMENT_ORIGIN_JOB_INVOCATION = IrStatementOriginImpl("JOB_INVOCATION")
private fun IrTypeOperator.isCast() =
this == IrTypeOperator.CAST || this == IrTypeOperator.IMPLICIT_CAST || this == IrTypeOperator.SAFE_CAST
@@ -36,7 +36,7 @@ internal class KonanForwardDeclarationModuleDeserializer(
}
companion object {
private val FORWARD_DECLARATION_ORIGIN = object : IrDeclarationOriginImpl("FORWARD_DECLARATION_ORIGIN") {}
private val FORWARD_DECLARATION_ORIGIN by IrDeclarationOriginImpl
}
private val declaredDeclaration = mutableMapOf<IdSignature, IrClass>()
@@ -113,11 +113,13 @@ abstract class AbstractAtomicSymbols(
annotations = emptyList()
)
object ATOMICFU_GENERATED_CLASS : IrDeclarationOriginImpl("ATOMICFU_GENERATED_CLASS", isSynthetic = true)
object ATOMICFU_GENERATED_FUNCTION : IrDeclarationOriginImpl("ATOMICFU_GENERATED_FUNCTION", isSynthetic = true)
object ATOMICFU_GENERATED_FIELD : IrDeclarationOriginImpl("ATOMICFU_GENERATED_FIELD", isSynthetic = true)
object ATOMICFU_GENERATED_PROPERTY : IrDeclarationOriginImpl("ATOMICFU_GENERATED_PROPERTY", isSynthetic = true)
object ATOMICFU_GENERATED_PROPERTY_ACCESSOR : IrDeclarationOriginImpl("ATOMICFU_GENERATED_PROPERTY_ACCESSOR", isSynthetic = true)
companion object {
val ATOMICFU_GENERATED_CLASS by IrDeclarationOriginImpl.Synthetic
val ATOMICFU_GENERATED_FUNCTION by IrDeclarationOriginImpl.Synthetic
val ATOMICFU_GENERATED_FIELD by IrDeclarationOriginImpl.Synthetic
val ATOMICFU_GENERATED_PROPERTY by IrDeclarationOriginImpl.Synthetic
val ATOMICFU_GENERATED_PROPERTY_ACCESSOR by IrDeclarationOriginImpl.Synthetic
}
protected fun createPackage(packageName: String): IrPackageFragment =
IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(
@@ -46,7 +46,7 @@ import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.UN
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationPackages
import org.jetbrains.kotlinx.serialization.compiler.resolve.bitMaskSlotCount
object SERIALIZATION_PLUGIN_ORIGIN : IrDeclarationOriginImpl("KOTLINX_SERIALIZATION", true)
val SERIALIZATION_PLUGIN_ORIGIN = IrDeclarationOriginImpl("KOTLINX_SERIALIZATION", true)
internal typealias FunctionWithArgs = Pair<IrFunctionSymbol, List<IrExpression>>