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 87ac4fa0f75..87addaaa10c 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 @@ -26785,6 +26785,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitInvokeAfterSafeCall.kt"); } + @Test + @TestMetadata("implicitPropertyType.kt") + public void testImplicitPropertyType() throws Exception { + runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt"); + } + @Test @TestMetadata("invokeAndSmartCast.kt") public void testInvokeAndSmartCast() throws Exception { 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 47ae74e9aff..65e5b56204c 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 @@ -26785,6 +26785,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitInvokeAfterSafeCall.kt"); } + @Test + @TestMetadata("implicitPropertyType.kt") + public void testImplicitPropertyType() throws Exception { + runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt"); + } + @Test @TestMetadata("invokeAndSmartCast.kt") public void testInvokeAndSmartCast() throws Exception { 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 25ca8ed4da5..3cd5b461093 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 @@ -26785,6 +26785,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitInvokeAfterSafeCall.kt"); } + @Test + @TestMetadata("implicitPropertyType.kt") + public void testImplicitPropertyType() throws Exception { + runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt"); + } + @Test @TestMetadata("invokeAndSmartCast.kt") public void testInvokeAndSmartCast() throws Exception { 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 9ab54e0771a..432dbd31c86 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 @@ -26797,6 +26797,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitInvokeAfterSafeCall.kt"); } + @Test + @TestMetadata("implicitPropertyType.kt") + public void testImplicitPropertyType() throws Exception { + runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt"); + } + @Test @TestMetadata("invokeAndSmartCast.kt") public void testInvokeAndSmartCast() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirInvokeResolveTowerExtension.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirInvokeResolveTowerExtension.kt index 52a0c932869..23a5e609c7c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirInvokeResolveTowerExtension.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirInvokeResolveTowerExtension.kt @@ -160,7 +160,8 @@ internal class FirInvokeResolveTowerExtension( if (symbol !is FirCallableSymbol<*> && symbol !is FirClassLikeSymbol<*>) continue val isExtensionFunctionType = - (symbol as? FirCallableSymbol<*>)?.fir?.returnTypeRef?.isExtensionFunctionType(components.session) == true + symbol is FirCallableSymbol<*> && + components.returnTypeCalculator.tryCalculateReturnType(symbol).isExtensionFunctionType(components.session) if (invokeBuiltinExtensionMode && !isExtensionFunctionType) { continue diff --git a/compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt b/compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt new file mode 100644 index 00000000000..ef6e8b1f2b7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt @@ -0,0 +1,10 @@ +// FIR_IDENTICAL +// ISSUE: KT-57947 + +class A + +fun A.bar() = baz("") + +val baz = foo() + +fun foo(): A.(String) -> Unit = TODO() 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 4b2f2c42daa..0352f2c83a6 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 @@ -27563,6 +27563,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitInvokeAfterSafeCall.kt"); } + @Test + @TestMetadata("implicitPropertyType.kt") + public void testImplicitPropertyType() throws Exception { + runTest("compiler/testData/diagnostics/tests/resolve/invoke/implicitPropertyType.kt"); + } + @Test @TestMetadata("invokeAndSmartCast.kt") public void testInvokeAndSmartCast() throws Exception {