diff --git a/compiler/testData/codegen/bytecodeText/inlineClasses/propertyAccessorsAreCalledByInlineClass.kt b/compiler/testData/codegen/bytecodeText/inlineClasses/propertyAccessorsAreCalledByInlineClass.kt new file mode 100644 index 00000000000..527fee8f618 --- /dev/null +++ b/compiler/testData/codegen/bytecodeText/inlineClasses/propertyAccessorsAreCalledByInlineClass.kt @@ -0,0 +1,41 @@ +// !LANGUAGE: +InlineClasses + +// FILE: Z.kt +inline class Z(val x: Int) { + val aVal: Int + get() = x + + var aVar: Int + get() = x + set(v) {} + + val String.extVal: Int + get() = x + + var String.extVar: Int + get() = x + set(v) {} +} + +// FILE: test.kt +fun Z.test() { + aVal + aVar + aVar = 42 + aVar++ + + "".extVal + "".extVar + "".extVar = 42 + "".extVar++ +} + +// @TestKt.class: +// 0 INVOKESTATIC Z\$Erased\. +// 0 INVOKESTATIC Z\-Erased\. +// 1 INVOKESTATIC Z.getAVal \(I\)I +// 2 INVOKESTATIC Z.getAVar \(I\)I +// 2 INVOKESTATIC Z.setAVar \(II\)V +// 1 INVOKESTATIC Z.getExtVal \(ILjava/lang/String;\)I +// 2 INVOKESTATIC Z.getExtVar \(ILjava/lang/String;\)I +// 2 INVOKESTATIC Z.setExtVar \(ILjava/lang/String;I\)V \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java index 2e8730b7ae0..efed652593b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java @@ -2163,6 +2163,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest { runTest("compiler/testData/codegen/bytecodeText/inlineClasses/primaryConstructorCalledByInlineClass.kt"); } + @TestMetadata("propertyAccessorsAreCalledByInlineClass.kt") + public void testPropertyAccessorsAreCalledByInlineClass() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/inlineClasses/propertyAccessorsAreCalledByInlineClass.kt"); + } + @TestMetadata("skipCallToUnderlyingValueOfInlineClass.kt") public void testSkipCallToUnderlyingValueOfInlineClass() throws Exception { runTest("compiler/testData/codegen/bytecodeText/inlineClasses/skipCallToUnderlyingValueOfInlineClass.kt");