diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 1b98640c239..ad9ead2af65 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -22756,6 +22756,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/j+k/rawUpperBounds.kt"); } + @Test + @TestMetadata("receiverEnhancement.kt") + public void testReceiverEnhancement() { + runTest("compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt"); + } + @Test @TestMetadata("recursionWithJavaSyntheticProperty.kt") public void testRecursionWithJavaSyntheticProperty() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 2addb0f1dfa..bd5982f0265 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -22756,6 +22756,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/j+k/rawUpperBounds.kt"); } + @Test + @TestMetadata("receiverEnhancement.kt") + public void testReceiverEnhancement() { + runTest("compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt"); + } + @Test @TestMetadata("recursionWithJavaSyntheticProperty.kt") public void testRecursionWithJavaSyntheticProperty() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index c871d617294..dcfad9f239d 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -22750,6 +22750,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/j+k/rawUpperBounds.kt"); } + @Test + @TestMetadata("receiverEnhancement.kt") + public void testReceiverEnhancement() { + runTest("compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt"); + } + @Test @TestMetadata("recursionWithJavaSyntheticProperty.kt") public void testRecursionWithJavaSyntheticProperty() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index e09c19e7106..c7e80ad95f0 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -22756,6 +22756,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/j+k/rawUpperBounds.kt"); } + @Test + @TestMetadata("receiverEnhancement.kt") + public void testReceiverEnhancement() { + runTest("compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt"); + } + @Test @TestMetadata("recursionWithJavaSyntheticProperty.kt") public void testRecursionWithJavaSyntheticProperty() { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt index adf29dc2648..d33a4353ca7 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt @@ -368,7 +368,7 @@ class FirSignatureEnhancement( typeParameterSubstitutor?.substituteOrNull(newReturnTypeRef.coneType) ) val substitutedReceiverTypeRef = newReceiverTypeRef?.withReplacedConeType( - typeParameterSubstitutor?.substituteOrNull(newReturnTypeRef.coneType) + typeParameterSubstitutor?.substituteOrNull(newReceiverTypeRef.coneType) ) receiverParameter = substitutedReceiverTypeRef?.let { receiverType -> buildReceiverParameter { diff --git a/compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt b/compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt new file mode 100644 index 00000000000..945cc46028f --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt @@ -0,0 +1,23 @@ +// FIR_IDENTICAL +// FILE: J.java +public class J extends Foo { + @Override + public T bar(String $this$bar) { + super.bar($this$bar); + } +} + +// FILE: test.kt +open class Foo { + fun String.bar(): T { + @Suppress("UNCHECKED_CAST") + return null as T + } +} + +fun J.test(s1: String?, s2: String) { + s1.bar() + s1?.bar() + s2.bar() + s2?.bar() +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index f55b2893207..163d7a91772 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -22756,6 +22756,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/j+k/rawUpperBounds.kt"); } + @Test + @TestMetadata("receiverEnhancement.kt") + public void testReceiverEnhancement() { + runTest("compiler/testData/diagnostics/tests/j+k/receiverEnhancement.kt"); + } + @Test @TestMetadata("recursionWithJavaSyntheticProperty.kt") public void testRecursionWithJavaSyntheticProperty() {