diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/OperatorExpressionGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/OperatorExpressionGenerator.kt index 2abe32c5559..c73f58ee569 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/OperatorExpressionGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/OperatorExpressionGenerator.kt @@ -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 } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt index 43cdc3113ee..30da517ef56 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt @@ -22,9 +22,10 @@ import org.jetbrains.kotlin.ir.visitors.* import org.jetbrains.kotlin.name.Name abstract class AbstractSuspendFunctionsLowering(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 diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AnnotationImplementationTransformer.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AnnotationImplementationTransformer.kt index 5a97ee4393a..a498fff7ad1 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AnnotationImplementationTransformer.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AnnotationImplementationTransformer.kt @@ -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 diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt index d96a9806e4c..3cb8e2dc624 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ArrayConstructorLowering.kt @@ -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) { diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/FinallyBlocksLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/FinallyBlocksLowering.kt index 7409e462ad3..c7afb6e3717 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/FinallyBlocksLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/FinallyBlocksLowering.kt @@ -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() { diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index 89bddbfbd95..6375cb0293d 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -59,9 +59,9 @@ val IrDeclaration.parentsWithSelf: Sequence val IrDeclaration.parents: Sequence 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() diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/Origins.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/Origins.kt index ceeb8d579f5..81b68684010 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/Origins.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/Origins.kt @@ -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") -} \ No newline at end of file +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 +} diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt index 57f3379f3f7..515b7687c60 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt index e7204c775a8..c5df6b072b3 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/DeclarationOrigins.kt @@ -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 } } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt index 6db3bead190..2c3fef50737 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt @@ -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, diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt index ebf575d24c7..086c45900b2 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt @@ -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") } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CaptureStackTraceInThrowables.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CaptureStackTraceInThrowables.kt index 7b831dd6d5f..0d6a99f0e60 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CaptureStackTraceInThrowables.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CaptureStackTraceInThrowables.kt @@ -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 */ diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt index 3cf1da43001..8774a7a48b3 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CreateScriptFunctionsPhase.kt @@ -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) { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddBoxParameterLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddBoxParameterLowering.kt index 29c63d15f3f..5a5bef7b390 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddBoxParameterLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6AddBoxParameterLowering.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6ConstructorLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6ConstructorLowering.kt index 7ce37fc39fe..b43beb39f3e 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6ConstructorLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/ES6ConstructorLowering.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsCodeOutliningLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsCodeOutliningLowering.kt index b567abb23b7..08e525826bb 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsCodeOutliningLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/JsCodeOutliningLowering.kt @@ -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") } } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt index 0d31547360c..917445c60a5 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrimaryConstructorLowering.kt @@ -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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt index 0534b6190c7..73d2453f4a8 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt @@ -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 { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt index b54cf578c17..21207c518c7 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyLazyInitLowering.kt @@ -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 } } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyReferenceLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyReferenceLowering.kt index 08b81cd4ecc..95ae2b0eb75 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyReferenceLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PropertyReferenceLowering.kt @@ -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") } } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt index 0dce94637bd..4eda4442c25 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt @@ -42,7 +42,9 @@ abstract class AbstractSuspendFunctionsLowering(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 diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsStatementTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsStatementTransformer.kt index 502550e901a..de3dd3fed0d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsStatementTransformer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrElementToJsStatementTransformer.kt @@ -169,10 +169,10 @@ class IrElementToJsStatementTransformer : BaseIrElementToJsNodeTransformer 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 } diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FragmentLocalFunctionPatchLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FragmentLocalFunctionPatchLowering.kt index c82e0be4fb1..a2ee95bb5ef 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FragmentLocalFunctionPatchLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/FragmentLocalFunctionPatchLowering.kt @@ -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 diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmMultiFieldValueClassLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmMultiFieldValueClassLowering.kt index 743d06588a6..39fcd25169d 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmMultiFieldValueClassLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmMultiFieldValueClassLowering.kt @@ -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() diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOptimizationLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOptimizationLowering.kt index fd4401e2a7b..3a55e3af7ae 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOptimizationLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOptimizationLowering.kt @@ -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 diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt index 96d2254645e..a2bd6b9e796 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt @@ -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? diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/InlineClassAbi.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/InlineClassAbi.kt index 33eafa5d1c2..10efc549cb0 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/InlineClassAbi.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/InlineClassAbi.kt @@ -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. diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt index c4529acaa96..2755867201f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt @@ -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 } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredStatementOrigin.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredStatementOrigin.kt new file mode 100644 index 00000000000..e9288426b50 --- /dev/null +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredStatementOrigin.kt @@ -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 +} diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt index 446abe0df3b..00ce0932e7f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt @@ -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, diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/StatementOrigins.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/StatementOrigins.kt deleted file mode 100644 index ef7c5b6503e..00000000000 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/StatementOrigins.kt +++ /dev/null @@ -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") -} diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmPropertyReferenceLowering.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmPropertyReferenceLowering.kt index 1fae1aa4aa2..67c311561c9 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmPropertyReferenceLowering.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmPropertyReferenceLowering.kt @@ -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") + } } diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmStringSwitchOptimizerLowering.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmStringSwitchOptimizerLowering.kt index dd108dad91c..806e3379950 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmStringSwitchOptimizerLowering.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmStringSwitchOptimizerLowering.kt @@ -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 diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt index ee0d4b9971c..ac649017b18 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrTreeBuildUtils.kt @@ -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<*> = diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrDescriptorBasedFunctionFactory.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrDescriptorBasedFunctionFactory.kt index 631cc4f3ad1..655c70cc97c 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrDescriptorBasedFunctionFactory.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrDescriptorBasedFunctionFactory.kt @@ -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 = diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt index e2452ca71a8..4e314e485e4 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrBuiltIns.kt @@ -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") } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt index 96c327c9954..c1007ee2f6a 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin.kt @@ -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 { 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> { + override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty = + IrDeclarationOriginImpl(property.name) + } + + object Synthetic : PropertyDelegateProvider> { + override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty = + IrDeclarationOriginImpl(property.name, isSynthetic = true) } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt index 310c3c5d328..3f696b2f880 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt @@ -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, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementOrigin.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementOrigin.kt index 18c6efb8675..0b28e3bccaf 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementOrigin.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementOrigin.kt @@ -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 { + override fun getValue(thisRef: Any?, property: KProperty<*>): IrStatementOriginImpl = this + override fun toString(): String = debugName + + companion object : PropertyDelegateProvider> { + override fun provideDelegate(thisRef: Any?, property: KProperty<*>): ReadOnlyProperty = + 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) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartialLinkageUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartialLinkageUtils.kt index c7523ff8c20..d0d11c58c75 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartialLinkageUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartialLinkageUtils.kt @@ -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 diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartiallyLinkedDeclarationOrigin.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartiallyLinkedDeclarationOrigin.kt index d27a265f42c..8e3bbc60ac8 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartiallyLinkedDeclarationOrigin.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/linkage/partial/PartiallyLinkedDeclarationOrigin.kt @@ -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 = setOf( + MISSING_DECLARATION, + UNIMPLEMENTED_ABSTRACT_CALLABLE_MEMBER, + AMBIGUOUS_NON_OVERRIDDEN_CALLABLE_MEMBER, + AUXILIARY_GENERATED_DECLARATION, + ) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLoweringsImpl.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLoweringsImpl.kt index a21fd007b04..554f6ad80e7 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLoweringsImpl.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLoweringsImpl.kt @@ -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() diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt index c4c7b5ad3f8..3e96a6d68f6 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartiallyLinkedIrTreePatcher.kt @@ -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() diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt index 42657347f88..23bc655b59c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt @@ -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 } } } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt index 1fcf2c8f5f5..9e54bc04914 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt @@ -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 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 { diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt index 7ff867039c7..6131258dd3c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt @@ -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) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt index a54fbad1286..dc1be1bdc78 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt @@ -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 diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/StatementOrigins.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/StatementOrigins.kt index 213090af6a8..d1811e64d87 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/StatementOrigins.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/StatementOrigins.kt @@ -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 } \ No newline at end of file diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Boxing.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Boxing.kt index f1fbaf8da1e..aaa19b5e9b0 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Boxing.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/Boxing.kt @@ -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 diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BuiltInFictitiousFunctionIrClassFactory.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BuiltInFictitiousFunctionIrClassFactory.kt index f5ad71a7aad..991566f0a4a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BuiltInFictitiousFunctionIrClassFactory.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BuiltInFictitiousFunctionIrClassFactory.kt @@ -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 diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/EntryPoint.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/EntryPoint.kt index 61a18f01f00..6b24949ed5e 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/EntryPoint.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/EntryPoint.kt @@ -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 diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt index 2d73a42ebae..da2e58796fc 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGen.kt @@ -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() diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGenUtils.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGenUtils.kt index 598ae9269c0..ebc0be80c9a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGenUtils.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cgen/CBridgeGenUtils.kt @@ -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 } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CachesAbiLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CachesAbiLowering.kt index 86e13dd769d..35be5e7b4d4 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CachesAbiLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/CachesAbiLowering.kt @@ -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. diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt index 9e0123856d1..b97526b461a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/DelegationLowering.kt @@ -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") + } } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt index b175869d476..052b57b2cd6 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/EnumClassLowering.kt @@ -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 { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionReferenceLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionReferenceLowering.kt index 5495b148d08..97c72d8ae97 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionReferenceLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/FunctionReferenceLowering.kt @@ -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 } diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt index 7f1871a1692..971bfa73bfc 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InitializersLowering.kt @@ -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 diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt index edea3eb6f47..7d2b189fb1f 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/InteropLowering.kt @@ -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 && diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt index 703e80c82d2..143d3e91c61 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/ObjectClassLowering.kt @@ -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") + } } \ No newline at end of file diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StaticInitializersLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StaticInitializersLowering.kt index cde42cb91df..673cdafcfcb 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StaticInitializersLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/StaticInitializersLowering.kt @@ -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 diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt index badae71419e..3840faa8e22 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/TestProcessor.kt @@ -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") diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt index e8186c00679..eb6cd5deb1a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VolatileFieldsLowering.kt @@ -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 diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt index 4333dea8b1b..b3066c53e66 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DFGBuilder.kt @@ -33,8 +33,8 @@ internal class ExternalModulesDFG(val allTypes: List, val publicFunctions: Map, val functionDFGs: Map) -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 diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanForwardDeclarationModuleDeserializer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanForwardDeclarationModuleDeserializer.kt index d99e960603c..a0fdbb8554e 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanForwardDeclarationModuleDeserializer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanForwardDeclarationModuleDeserializer.kt @@ -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() diff --git a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt index cd40f404b28..f6bab02e518 100644 --- a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt +++ b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/common/AbstractAtomicSymbols.kt @@ -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( diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt index c20524b8a03..9ebbdb3ac90 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.backend/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/SerializerIrGenerator.kt @@ -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>