diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrSlots.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrSlots.kt index eedfe9aa81d..c75d84d1c16 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrSlots.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrSlots.kt @@ -16,28 +16,34 @@ package org.jetbrains.kotlin.ir +// Slots should be unique within children of particular node type. +// Non-negative numbers are used for slots in indexed container elements, for example, value arguments in a call. +// NB a node can potentially contain several "containers"; it's up to a node how to organize numbering in such case. +// Negative numbers are used for "named" slots, for example, dispatch and extension receivers in a call. + const val DETACHED_SLOT = Int.MIN_VALUE + const val CHILD_EXPRESSION_SLOT = 0 const val ARGUMENT0_SLOT = 0 const val ARGUMENT1_SLOT = 1 +const val SETTER_ARGUMENT_INDEX = 0 + const val DISPATCH_RECEIVER_SLOT = -1 const val EXTENSION_RECEIVER_SLOT = -2 -const val BACKING_FIELD_RECEIVER_SLOT = -1 -const val FUNCTION_BODY_SLOT = -1 -const val ANONYMOUS_INITIALIZER_BODY_SLOT = -1 -const val MODULE_SLOT = 0 -const val INITIALIZER_SLOT = 0 -const val IF_CONDITION_SLOT = 0 -const val IF_THEN_SLOT = 1 -const val IF_ELSE_SLOT = -1 -const val LOOP_BODY_SLOT = -1 -const val LOOP_CONDITION_SLOT = -2 -const val SETTER_ARGUMENT_INDEX = 0 -const val TRY_RESULT_SLOT = -1 -const val FINALLY_EXPRESSION_SLOT = -2 -const val NESTED_INITIALIZERS_SLOT = -1 -const val PROPERTY_GETTER_SLOT = -1 -const val PROPERTY_SETTER_SLOT = -2 -const val DELEGATE_SLOT = -3 -const val ENUM_ENTRY_CLASS_SLOT = -1 -const val ENUM_ENTRY_INITIALIZER_SLOT = -2 \ No newline at end of file +const val BACKING_FIELD_RECEIVER_SLOT = -3 +const val FUNCTION_BODY_SLOT = -4 +const val ANONYMOUS_INITIALIZER_BODY_SLOT = -5 +const val MODULE_SLOT = -6 +const val INITIALIZER_SLOT = -7 +const val IF_CONDITION_SLOT = -8 +const val IF_THEN_SLOT = -9 +const val IF_ELSE_SLOT = -10 +const val LOOP_BODY_SLOT = -11 +const val LOOP_CONDITION_SLOT = -12 +const val TRY_RESULT_SLOT = -13 +const val FINALLY_EXPRESSION_SLOT = -14 +const val PROPERTY_GETTER_SLOT = -15 +const val PROPERTY_SETTER_SLOT = -16 +const val DELEGATE_SLOT = -17 +const val ENUM_ENTRY_CLASS_SLOT = -18 +const val ENUM_ENTRY_INITIALIZER_SLOT = -19 \ No newline at end of file