diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java index 60fc9b2ac59..f6c964a0ff6 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java @@ -881,7 +881,7 @@ public class KotlinTypeMapper { FunctionDescriptor overriddenSpecialBuiltinFunction = SpecialBuiltinMembers.getOverriddenBuiltinReflectingJvmDescriptor(functionDescriptor.getOriginal()); - FunctionDescriptor functionToCall = overriddenSpecialBuiltinFunction != null && !superCall + FunctionDescriptor functionToCall = overriddenSpecialBuiltinFunction != null && !superCall && !toInlinedErasedClass ? overriddenSpecialBuiltinFunction.getOriginal() : functionDescriptor.getOriginal(); diff --git a/compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt b/compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt new file mode 100644 index 00000000000..468e455e2d3 --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt @@ -0,0 +1,21 @@ +// !LANGUAGE: +InlineClasses + +inline class UInt(val x: Int) + +inline class UIntArray(private val storage: IntArray) : Collection { + public override val size: Int get() = storage.size + + override operator fun iterator() = TODO() + override fun contains(element: UInt): Boolean = TODO() + override fun containsAll(elements: Collection): Boolean = TODO() + override fun isEmpty(): Boolean = TODO() +} + +fun calculate(u: UIntArray): Int { + return u.size +} + +fun box(): String { + if (calculate(UIntArray(intArrayOf(1, 2, 3, 4))) != 4) return "Fail" + return "OK" +} \ No newline at end of file diff --git a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index afe39726f68..70efa65f9d9 100644 --- a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -11174,6 +11174,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callSpeciallyOverriddenPropertyOfInlineClass.kt") + public void testCallSpeciallyOverriddenPropertyOfInlineClass() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt"); + } + @TestMetadata("callableReferencesWithInlineClasses.kt") public void testCallableReferencesWithInlineClasses() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index ca72e092a55..da7bccf32a1 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -11174,6 +11174,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callSpeciallyOverriddenPropertyOfInlineClass.kt") + public void testCallSpeciallyOverriddenPropertyOfInlineClass() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt"); + } + @TestMetadata("callableReferencesWithInlineClasses.kt") public void testCallableReferencesWithInlineClasses() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index b72ac1f8fcd..24515e988e1 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11174,6 +11174,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callSpeciallyOverriddenPropertyOfInlineClass.kt") + public void testCallSpeciallyOverriddenPropertyOfInlineClass() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt"); + } + @TestMetadata("callableReferencesWithInlineClasses.kt") public void testCallableReferencesWithInlineClasses() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java index 598af11994a..d2fea0a408a 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java @@ -10839,6 +10839,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callSpeciallyOverriddenPropertyOfInlineClass.kt") + public void testCallSpeciallyOverriddenPropertyOfInlineClass() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt"); + } + @TestMetadata("callableReferencesWithInlineClasses.kt") public void testCallableReferencesWithInlineClasses() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index e014bd04c67..173783c1fc7 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -9717,6 +9717,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/callComputablePropertyInsideInlineClass.kt"); } + @TestMetadata("callSpeciallyOverriddenPropertyOfInlineClass.kt") + public void testCallSpeciallyOverriddenPropertyOfInlineClass() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/callSpeciallyOverriddenPropertyOfInlineClass.kt"); + } + @TestMetadata("callableReferencesWithInlineClasses.kt") public void testCallableReferencesWithInlineClasses() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/callableReferencesWithInlineClasses.kt");