Skip to content

Commit a62634c

Browse files
committed
Revert "[JVM] Unify how context and extension parameters behave among regular, single/multiple-field value classes"
This partially reverts commit 01f1d61, kepping added tests. Such renaming has to be synchronized with proper changes in debugger, otherwise it introduces severe regression and brings no value. ^KT-82138: Fixed ^KT-78413: Fixed ^KT-73995: Open
1 parent bae40a9 commit a62634c

File tree

19 files changed

+78
-145
lines changed

19 files changed

+78
-145
lines changed

compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -368,27 +368,25 @@ class ExpressionCodegen(
368368
mv.visitLocalVariable("this", classCodegen.type.descriptor, null, startLabel, endLabel, 0)
369369
}
370370
for (parameter in irFunction.parameters) {
371-
fun writeToLVT(useReceiverNaming: Boolean) = writeValueParameterInLocalVariableTable(parameter, startLabel, endLabel, useReceiverNaming)
371+
fun writeToLVT(isReceiver: Boolean) = writeValueParameterInLocalVariableTable(parameter, startLabel, endLabel, isReceiver)
372372
when (parameter.kind) {
373373
IrParameterKind.DispatchReceiver -> {}
374-
IrParameterKind.Context -> writeToLVT(useReceiverNaming = false)
375-
IrParameterKind.ExtensionReceiver -> writeToLVT(useReceiverNaming = !parameter.hasFixedName)
374+
IrParameterKind.Context -> writeToLVT(isReceiver = parameter.origin == IrDeclarationOrigin.UNDERSCORE_PARAMETER)
375+
IrParameterKind.ExtensionReceiver -> writeToLVT(isReceiver = true)
376376
IrParameterKind.Regular -> when (parameter.origin) {
377377
IrDeclarationOrigin.MASK_FOR_DEFAULT_FUNCTION, IrDeclarationOrigin.METHOD_HANDLER_IN_DEFAULT_FUNCTION -> {}
378-
else -> writeToLVT(useReceiverNaming = false)
378+
else -> writeToLVT(isReceiver = false)
379379
}
380380
}
381381
}
382382
}
383383

384-
private fun writeValueParameterInLocalVariableTable(
385-
param: IrValueParameter, startLabel: Label, endLabel: Label, useReceiverNaming: Boolean
386-
) {
384+
private fun writeValueParameterInLocalVariableTable(param: IrValueParameter, startLabel: Label, endLabel: Label, isReceiver: Boolean) {
387385
if (!param.isVisibleInLVT) return
388386

389387
// If the parameter is an extension receiver parameter or a captured extension receiver from enclosing,
390388
// then generate name accordingly.
391-
val name = if (param.origin == BOUND_RECEIVER_PARAMETER || useReceiverNaming) {
389+
val name = if (param.origin == BOUND_RECEIVER_PARAMETER || isReceiver) {
392390
getNameForReceiverParameter(irFunction.toIrBasedDescriptor(), context.config.languageVersionSettings)
393391
} else {
394392
param.name.asString()
@@ -446,7 +444,7 @@ class ExpressionCodegen(
446444
private val IrValueDeclaration.isVisibleInLVT: Boolean
447445
get() = origin != IrDeclarationOrigin.IR_TEMPORARY_VARIABLE &&
448446
origin != IrDeclarationOrigin.FOR_LOOP_ITERATOR &&
449-
(origin != IrDeclarationOrigin.UNDERSCORE_PARAMETER || this is IrValueParameter && this.kind == IrParameterKind.Context) &&
447+
origin != IrDeclarationOrigin.UNDERSCORE_PARAMETER &&
450448
origin != IrDeclarationOrigin.DESTRUCTURED_OBJECT_PARAMETER &&
451449
origin != JvmLoweredDeclarationOrigin.TEMPORARY_MULTI_FIELD_VALUE_CLASS_VARIABLE &&
452450
origin != JvmLoweredDeclarationOrigin.TEMPORARY_MULTI_FIELD_VALUE_CLASS_PARAMETER

compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.backend.jvm.codegen
88
import org.jetbrains.kotlin.backend.common.ir.isReifiable
99
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
1010
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin.SUPER_INTERFACE_METHOD_BRIDGE
11-
import org.jetbrains.kotlin.backend.jvm.hasFixedName
1211
import org.jetbrains.kotlin.backend.jvm.ir.*
1312
import org.jetbrains.kotlin.backend.jvm.ir.isJvmInterface
1413
import org.jetbrains.kotlin.backend.jvm.mapping.mapTypeAsDeclaration
@@ -373,9 +372,7 @@ private fun IrValueParameter.isSyntheticMarkerParameter(): Boolean =
373372

374373
private fun generateParameterNames(irFunction: IrFunction, mv: MethodVisitor, config: JvmBackendConfig) {
375374
for (parameter in irFunction.parameters) {
376-
val name = if (parameter.hasFixedName) {
377-
parameter.name.asString()
378-
} else when (parameter.kind) {
375+
val name = when (parameter.kind) {
379376
IrParameterKind.DispatchReceiver -> continue
380377
IrParameterKind.Regular, IrParameterKind.Context -> parameter.name.asString()
381378
IrParameterKind.ExtensionReceiver -> irFunction.extensionReceiverName(config)
@@ -389,8 +386,7 @@ private fun generateParameterNames(irFunction: IrFunction, mv: MethodVisitor, co
389386
JvmLoweredDeclarationOrigin.FIELD_FOR_OUTER_THIS -> Opcodes.ACC_MANDATED
390387
IrDeclarationOrigin.MOVED_EXTENSION_RECEIVER -> Opcodes.ACC_MANDATED
391388
IrDeclarationOrigin.MOVED_DISPATCH_RECEIVER -> Opcodes.ACC_SYNTHETIC
392-
IrDeclarationOrigin.MOVED_CONTEXT_RECEIVER -> Opcodes.ACC_MANDATED
393-
else if parameter.kind == IrParameterKind.Context -> Opcodes.ACC_MANDATED
389+
IrDeclarationOrigin.MOVED_CONTEXT_RECEIVER -> Opcodes.ACC_SYNTHETIC
394390
else if origin.isSynthetic -> Opcodes.ACC_SYNTHETIC
395391
else -> 0
396392
}

compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
package org.jetbrains.kotlin.backend.jvm
77

88
import org.jetbrains.kotlin.backend.jvm.ir.*
9-
import org.jetbrains.kotlin.codegen.AsmUtil
109
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
1110
import org.jetbrains.kotlin.config.LanguageFeature
1211
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
@@ -163,19 +162,11 @@ class MemoizedInlineClassReplacements(
163162
parameter.copyTo(
164163
this,
165164
defaultValue = null,
166-
name = when (parameter.kind) {
167-
IrParameterKind.ExtensionReceiver -> {
168-
// The function's name will be mangled, so preserve the old receiver name.
169-
function.extensionReceiverName(context.config).let(Name::identifier)
170-
}
171-
else -> parameter.name
172-
},
173-
origin = when (parameter.kind) {
174-
IrParameterKind.Context -> IrDeclarationOrigin.MOVED_CONTEXT_RECEIVER
175-
else -> parameter.origin
176-
}
165+
name = if (parameter.kind == IrParameterKind.ExtensionReceiver) {
166+
// The function's name will be mangled, so preserve the old receiver name.
167+
Name.identifier(function.extensionReceiverName(context.config))
168+
} else parameter.name
177169
).also {
178-
it.addOrInheritInlineClassPropertyNameParts(oldParameter = parameter)
179170
// Assuming that constructors and non-override functions are always replaced with the unboxed
180171
// equivalent, deep-copying the value here is unnecessary. See `JvmInlineClassLowering`.
181172
it.defaultValue = parameter.defaultValue?.patchDeclarationParents(this)
@@ -188,16 +179,15 @@ class MemoizedInlineClassReplacements(
188179
buildReplacement(function, JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT, noFakeOverride = true) {
189180
this.originalFunctionOfStaticInlineClassReplacement = function
190181

182+
var nextContextReceiverIndex = 0
191183
parameters += function.parameters.map { parameter ->
192184
when (parameter.kind) {
193185
IrParameterKind.DispatchReceiver -> {
194186
// FAKE_OVERRIDEs have broken dispatch receivers
195-
val parent = function.parentAsClass
196-
parent.thisReceiver!!.copyTo(
187+
function.parentAsClass.thisReceiver!!.copyTo(
197188
this,
198-
name = Name.identifier(AsmUtil.THIS),
199-
type = parent.defaultType,
200-
origin = IrDeclarationOrigin.MOVED_DISPATCH_RECEIVER,
189+
name = Name.identifier("arg0"),
190+
type = function.parentAsClass.defaultType, origin = IrDeclarationOrigin.MOVED_DISPATCH_RECEIVER,
201191
kind = IrParameterKind.Regular,
202192
)
203193
}
@@ -218,15 +208,12 @@ class MemoizedInlineClassReplacements(
218208
)
219209
}
220210
IrParameterKind.Regular -> {
221-
parameter.copyTo(
222-
this,
223-
defaultValue = null,
224-
).also {
211+
parameter.copyTo(this, defaultValue = null).also {
225212
// See comment next to a similar line above.
226213
it.defaultValue = parameter.defaultValue?.patchDeclarationParents(this)
227214
}
228215
}
229-
}.apply { addOrInheritInlineClassPropertyNameParts(oldParameter = parameter) }
216+
}
230217
}
231218

232219
context.remapMultiFieldValueClassStructure(function, this, parametersMappingOrNull = null)

compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.jvm.MemoizedMultiFieldValueClassReplacements
99
import org.jetbrains.kotlin.backend.jvm.MemoizedMultiFieldValueClassReplacements.RemappedParameter.MultiFieldValueClassMapping
1010
import org.jetbrains.kotlin.backend.jvm.MemoizedMultiFieldValueClassReplacements.RemappedParameter.RegularMapping
1111
import org.jetbrains.kotlin.backend.jvm.ir.*
12-
import org.jetbrains.kotlin.codegen.AsmUtil
1312
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
1413
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
1514
import org.jetbrains.kotlin.ir.builders.IrBlockBuilder
@@ -63,7 +62,6 @@ class MemoizedMultiFieldValueClassReplacements(
6362
irFactory: IrFactory,
6463
context: JvmBackendContext
6564
) : MemoizedValueClassAbstractReplacements(irFactory, context, LockBasedStorageManager("multi-field-value-class-replacements")) {
66-
6765
private fun IrValueParameter.grouped(
6866
name: String?,
6967
substitutionMap: Map<IrTypeParameterSymbol, IrType>,
@@ -75,10 +73,9 @@ class MemoizedMultiFieldValueClassReplacements(
7573
if (!type.needsMfvcFlattening()) return RegularMapping(
7674
targetFunction.addValueParameter {
7775
updateFrom(oldParam)
78-
this.name = name?.let(Name::identifier) ?: oldParam.name
76+
this.name = oldParam.name
7977
this.origin = originWhenNotFlattened
8078
}.apply {
81-
addOrInheritInlineClassPropertyNameParts(oldParameter = oldParam)
8279
defaultValue = oldParam.defaultValue
8380
copyAnnotationsFrom(oldParam)
8481
}
@@ -87,16 +84,14 @@ class MemoizedMultiFieldValueClassReplacements(
8784
defaultValue?.expression?.let { this::oldMfvcDefaultArgument.getOrSetIfNull { it } }
8885
val newType = type.substitute(substitutionMap) as IrSimpleType
8986
val localSubstitutionMap = makeTypeArgumentsFromType(newType)
90-
val valueParameters = rootMfvcNode.mapLeavesIndexed { index, leaf ->
87+
val valueParameters = rootMfvcNode.mapLeaves { leaf ->
9188
targetFunction.addValueParameter {
9289
updateFrom(oldParam)
90+
this.name = Name.identifier("${name ?: oldParam.name}-${leaf.fullFieldName}")
9391
type = leaf.type.substitute(localSubstitutionMap)
94-
this.name = (name?.let(Name::identifier) ?: oldParam.name)
95-
.withValueClassParameterNameIfNeeded(oldParam.type.erasedUpperBound, index)
9692
origin = originWhenFlattened
9793
isAssignable = isAssignable || oldParam.defaultValue != null
9894
}.also { newParam ->
99-
newParam.hasFixedName = true
10095
newParam.defaultValue = oldParam.defaultValue?.let {
10196
context.createJvmIrBuilder(targetFunction.symbol).run { irExprBody(irGet(newParam)) }
10297
}
@@ -140,12 +135,13 @@ class MemoizedMultiFieldValueClassReplacements(
140135
substitutionMap: Map<IrTypeParameterSymbol, IrType>,
141136
targetFunction: IrFunction,
142137
): List<RemappedParameter> {
138+
var contextParameterIndex = 0
143139
return sourceFunction.parameters.mapNotNull { param ->
144140
val sourceParam = if (param.kind == IrParameterKind.DispatchReceiver) {
145141
if (includeDispatcherReceiver) sourceFunction.parentAsClass.thisReceiver!! else null
146142
} else param
147143
val name = when (param.kind) {
148-
IrParameterKind.DispatchReceiver -> AsmUtil.THIS
144+
IrParameterKind.DispatchReceiver -> "\$dispatchReceiver"
149145
IrParameterKind.ExtensionReceiver -> sourceFunction.extensionReceiverName(context.config)
150146
IrParameterKind.Regular, IrParameterKind.Context -> null
151147
}

compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedValueClassAbstractReplacements.kt

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package org.jetbrains.kotlin.backend.jvm
77

8-
import org.jetbrains.kotlin.backend.jvm.ir.isInlineClassType
98
import org.jetbrains.kotlin.descriptors.Modality
109
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
1110
import org.jetbrains.kotlin.ir.builders.declarations.IrFunctionBuilder
@@ -17,13 +16,10 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
1716
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
1817
import org.jetbrains.kotlin.ir.expressions.impl.fromSymbolOwner
1918
import org.jetbrains.kotlin.ir.irAttribute
20-
import org.jetbrains.kotlin.ir.irFlag
2119
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
2220
import org.jetbrains.kotlin.ir.types.classOrNull
2321
import org.jetbrains.kotlin.ir.util.*
24-
import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
2522
import org.jetbrains.kotlin.name.JvmStandardClassIds.JVM_EXPOSE_BOXED_ANNOTATION_FQ_NAME
26-
import org.jetbrains.kotlin.name.Name
2723
import org.jetbrains.kotlin.resolve.JVM_NAME_ANNOTATION_FQ_NAME
2824
import org.jetbrains.kotlin.storage.LockBasedStorageManager
2925
import org.jetbrains.kotlin.utils.addToStdlib.getOrSetIfNull
@@ -136,31 +132,6 @@ abstract class MemoizedValueClassAbstractReplacements(
136132
}
137133

138134
protected fun IrSimpleFunction.overridesOnlyMethodsFromJava(): Boolean = allOverridden().all { it.isFromJava() }
139-
140-
private fun String.escape() = asIterable().joinToString("") {
141-
when (it) {
142-
'-' -> "--"
143-
'$' -> "$$"
144-
'.' -> "-"
145-
else -> "$it"
146-
}
147-
}
148-
149-
protected fun Name.withValueClassParameterNameIfNeeded(bound: IrClass, index: Int): Name =
150-
Name.identifier($$"$v$c$$${bound.fqNameWhenAvailable?.asString().orEmpty().escape()}$-$${asString()}$$$index")
151-
152-
protected fun IrValueParameter.addOrInheritInlineClassPropertyNameParts(oldParameter: IrValueParameter) {
153-
when {
154-
hasFixedName -> return
155-
oldParameter.hasFixedName -> hasFixedName = true
156-
type.isNullable() -> return
157-
type.isInlineClassType() -> {
158-
name = name.withValueClassParameterNameIfNeeded(type.erasedUpperBound, index = 0)
159-
hasFixedName = true
160-
}
161-
else -> return
162-
}
163-
}
164135
}
165136

166137
fun List<IrConstructorCall>.withoutJvmExposeBoxedAnnotation(): List<IrConstructorCall> =
@@ -195,6 +166,3 @@ fun List<IrConstructorCall>.withJvmExposeBoxedAnnotation(declaration: IrDeclarat
195166
?: IrConstImpl.string(UNDEFINED_OFFSET, UNDEFINED_OFFSET, context.irBuiltIns.stringType, "")
196167
}
197168
}
198-
199-
var IrValueParameter.hasFixedName: Boolean by irFlag(copyByDefault = true)
200-
internal set

compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MfvcNode.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,6 @@ val List<NameableMfvcNode>.subnodeIndices: Map<NameableMfvcNode, IntRange>
292292
}
293293

294294
inline fun <R> MfvcNode.mapLeaves(crossinline f: (LeafMfvcNode) -> R): List<R> = flatMapLeaves { listOf(f(it)) }
295-
inline fun <R> MfvcNode.mapLeavesIndexed(crossinline f: (Int, LeafMfvcNode) -> R): List<R> = mapLeaves { it }.mapIndexed(f)
296295

297296
fun <R> MfvcNode.flatMapLeaves(f: (LeafMfvcNode) -> List<R>): List<R> = when (this) {
298297
is MfvcNodeWithSubnodes -> subnodes.flatMap { it.flatMapLeaves(f) }

compiler/testData/checkLocalVariablesTable/contextParameters.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,9 @@ class ClassTest(val a: Boolean) {
99
}
1010

1111
// METHOD : ClassTest.foo(IIJIIJI)V
12-
// VARIABLE : NAME=$context-Int#1 TYPE=I INDEX=*
13-
// VARIABLE : NAME=$context-Int#2 TYPE=I INDEX=*
14-
// VARIABLE : NAME=$context-Long TYPE=J INDEX=*
1512
// VARIABLE : NAME=arg0 TYPE=I INDEX=*
1613
// VARIABLE : NAME=c1 TYPE=I INDEX=*
1714
// VARIABLE : NAME=c2 TYPE=I INDEX=*
1815
// VARIABLE : NAME=c3 TYPE=J INDEX=*
1916
// VARIABLE : NAME=this TYPE=LClassTest; INDEX=*
20-
// VARIABLE : NAME=x TYPE=I INDEX=*
17+
// VARIABLE : NAME=x TYPE=I INDEX=*

compiler/testData/checkLocalVariablesTable/inlineClassesExtension.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ fun UInt.foo(x: Int, y: UInt) {
77
}
88

99
// METHOD : InlineClassesExtensionKt.foo-2L4_mC8(IIIIIII)V
10-
// VARIABLE : NAME=$context-Int TYPE=I INDEX=*
11-
// VARIABLE : NAME=$v$c$kotlin-UInt$-$context-UInt$0 TYPE=I INDEX=*
12-
// VARIABLE : NAME=$v$c$kotlin-UInt$-$this$foo$0 TYPE=I INDEX=*
13-
// VARIABLE : NAME=$v$c$kotlin-UInt$-c2$0 TYPE=I INDEX=*
14-
// VARIABLE : NAME=$v$c$kotlin-UInt$-y$0 TYPE=I INDEX=*
10+
// VARIABLE : NAME=$this$foo_u2d2L4_mC8 TYPE=I INDEX=*
1511
// VARIABLE : NAME=arg0 TYPE=I INDEX=*
1612
// VARIABLE : NAME=c1 TYPE=I INDEX=*
13+
// VARIABLE : NAME=c2 TYPE=I INDEX=*
1714
// VARIABLE : NAME=x TYPE=I INDEX=*
15+
// VARIABLE : NAME=y TYPE=I INDEX=*

compiler/testData/checkLocalVariablesTable/inlineClassesMethod.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ value class InlineClassTest(val a: UInt) {
1111

1212
// METHOD : InlineClassTest.foo-2L4_mC8(IIIIIIII)V
1313
// VARIABLE : NAME=$context-Int TYPE=I INDEX=*
14-
// VARIABLE : NAME=$v$c$InlineClassTest$-this$0 TYPE=I INDEX=*
15-
// VARIABLE : NAME=$v$c$kotlin-UInt$-$context-UInt$0 TYPE=I INDEX=*
16-
// VARIABLE : NAME=$v$c$kotlin-UInt$-$this$foo$0 TYPE=I INDEX=*
17-
// VARIABLE : NAME=$v$c$kotlin-UInt$-c2$0 TYPE=I INDEX=*
18-
// VARIABLE : NAME=$v$c$kotlin-UInt$-y$0 TYPE=I INDEX=*
14+
// VARIABLE : NAME=$context-UInt TYPE=I INDEX=*
15+
// VARIABLE : NAME=$this$foo TYPE=I INDEX=*
16+
// VARIABLE : NAME=arg0 TYPE=I INDEX=*
1917
// VARIABLE : NAME=arg0 TYPE=I INDEX=*
2018
// VARIABLE : NAME=c1 TYPE=I INDEX=*
19+
// VARIABLE : NAME=c2 TYPE=I INDEX=*
2120
// VARIABLE : NAME=x TYPE=I INDEX=*
21+
// VARIABLE : NAME=y TYPE=I INDEX=*

compiler/testData/checkLocalVariablesTable/multiFieldValueClassesExtension.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ fun ValueClassTest.foo(x: Int, y: UInt, z: ValueClassTest) {
1212

1313
// METHOD : MultiFieldValueClassesExtensionKt.foo-09T95H0(IIIZIIIZIZIIIZ)V
1414
// VARIABLE : NAME=$context-Int TYPE=I INDEX=*
15-
// VARIABLE : NAME=$v$c$ValueClassTest$-$context-ValueClassTest$0 TYPE=I INDEX=*
16-
// VARIABLE : NAME=$v$c$ValueClassTest$-$context-ValueClassTest$1 TYPE=Z INDEX=*
17-
// VARIABLE : NAME=$v$c$ValueClassTest$-$this$foo$0 TYPE=I INDEX=*
18-
// VARIABLE : NAME=$v$c$ValueClassTest$-$this$foo$1 TYPE=Z INDEX=*
19-
// VARIABLE : NAME=$v$c$ValueClassTest$-c3$0 TYPE=I INDEX=*
20-
// VARIABLE : NAME=$v$c$ValueClassTest$-c3$1 TYPE=Z INDEX=*
21-
// VARIABLE : NAME=$v$c$ValueClassTest$-z$0 TYPE=I INDEX=*
22-
// VARIABLE : NAME=$v$c$ValueClassTest$-z$1 TYPE=Z INDEX=*
23-
// VARIABLE : NAME=$v$c$kotlin-UInt$-$context-UInt$0 TYPE=I INDEX=*
24-
// VARIABLE : NAME=$v$c$kotlin-UInt$-c2$0 TYPE=I INDEX=*
25-
// VARIABLE : NAME=$v$c$kotlin-UInt$-y$0 TYPE=I INDEX=*
15+
// VARIABLE : NAME=$context-UInt TYPE=I INDEX=*
16+
// VARIABLE : NAME=$context-ValueClassTest-a TYPE=I INDEX=*
17+
// VARIABLE : NAME=$context-ValueClassTest-boolean TYPE=Z INDEX=*
18+
// VARIABLE : NAME=$this$foo-a TYPE=I INDEX=*
19+
// VARIABLE : NAME=$this$foo-boolean TYPE=Z INDEX=*
2620
// VARIABLE : NAME=arg0 TYPE=I INDEX=*
2721
// VARIABLE : NAME=c1 TYPE=I INDEX=*
22+
// VARIABLE : NAME=c2 TYPE=I INDEX=*
23+
// VARIABLE : NAME=c3-a TYPE=I INDEX=*
24+
// VARIABLE : NAME=c3-boolean TYPE=Z INDEX=*
2825
// VARIABLE : NAME=x TYPE=I INDEX=*
26+
// VARIABLE : NAME=y TYPE=I INDEX=*
27+
// VARIABLE : NAME=z-a TYPE=I INDEX=*
28+
// VARIABLE : NAME=z-boolean TYPE=Z INDEX=*

0 commit comments

Comments
 (0)