[AA] don't ignore type arguments on property access expressions
^KT-54942
diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
index ae35f99..032e2ac 100644
--- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -695,6 +695,18 @@
}
@Test
+ @TestMetadata("propertyCallWithTypeArguments.kt")
+ public void testPropertyCallWithTypeArguments() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.kt");
+ }
+
+ @Test
+ @TestMetadata("propertyCallWithTypeArgumentsWithInvoke.kt")
+ public void testPropertyCallWithTypeArgumentsWithInvoke() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.kt");
+ }
+
+ @Test
@TestMetadata("qualifiedCalleeExpressionOfImplicitInvoke.kt")
public void testQualifiedCalleeExpressionOfImplicitInvoke() throws Exception {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/qualifiedCalleeExpressionOfImplicitInvoke.kt");
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
index d12432e..8693fe7 100644
--- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -695,6 +695,18 @@
}
@Test
+ @TestMetadata("propertyCallWithTypeArguments.kt")
+ public void testPropertyCallWithTypeArguments() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.kt");
+ }
+
+ @Test
+ @TestMetadata("propertyCallWithTypeArgumentsWithInvoke.kt")
+ public void testPropertyCallWithTypeArgumentsWithInvoke() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.kt");
+ }
+
+ @Test
@TestMetadata("qualifiedCalleeExpressionOfImplicitInvoke.kt")
public void testQualifiedCalleeExpressionOfImplicitInvoke() throws Exception {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/qualifiedCalleeExpressionOfImplicitInvoke.kt");
diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
index 0f0f301..e71ba3e 100644
--- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -695,6 +695,18 @@
}
@Test
+ @TestMetadata("propertyCallWithTypeArguments.kt")
+ public void testPropertyCallWithTypeArguments() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.kt");
+ }
+
+ @Test
+ @TestMetadata("propertyCallWithTypeArgumentsWithInvoke.kt")
+ public void testPropertyCallWithTypeArgumentsWithInvoke() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.kt");
+ }
+
+ @Test
@TestMetadata("qualifiedCalleeExpressionOfImplicitInvoke.kt")
public void testQualifiedCalleeExpressionOfImplicitInvoke() throws Exception {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/qualifiedCalleeExpressionOfImplicitInvoke.kt");
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.descriptors.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.descriptors.txt
new file mode 100644
index 0000000..66914df
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.descriptors.txt
@@ -0,0 +1,3 @@
+KtErrorCallInfo:
+ candidateCalls = []
+ diagnostic = ERROR<UNRESOLVED_REFERENCE: Unresolved reference: f>
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.kt
new file mode 100644
index 0000000..7198241
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.kt
@@ -0,0 +1,4 @@
+fun main(f: F<String>) {
+ <expr>f</expr><String>
+}
+class F<T>
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.txt
new file mode 100644
index 0000000..a1cf97f
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArguments.txt
@@ -0,0 +1,17 @@
+KtErrorCallInfo:
+ candidateCalls = [
+ KtSimpleVariableAccessCall:
+ partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+ dispatchReceiver = null
+ extensionReceiver = null
+ signature = KtVariableLikeSignature:
+ name = f
+ receiverType = null
+ returnType = F<kotlin.String>
+ symbol = f: F<kotlin.String>
+ callableIdIfNonLocal = null
+ simpleAccess = Read:
+
+ typeArgumentsMapping = {}
+ ]
+ diagnostic = ERROR<INAPPLICABLE_CANDIDATE: Inapplicable candidate(s): f: F<String>>
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.kt
new file mode 100644
index 0000000..88174a4
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.kt
@@ -0,0 +1,6 @@
+fun main(f: F<String>) {
+ <expr>f</expr><String>()
+}
+class F<T> {
+ operator fun <K> invoke() {}
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.txt
new file mode 100644
index 0000000..43c8f55
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/propertyCallWithTypeArgumentsWithInvoke.txt
@@ -0,0 +1,14 @@
+KtSuccessCallInfo:
+ call = KtSimpleVariableAccessCall:
+ partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+ dispatchReceiver = null
+ extensionReceiver = null
+ signature = KtVariableLikeSignature:
+ name = f
+ receiverType = null
+ returnType = F<kotlin.String>
+ symbol = f: F<kotlin.String>
+ callableIdIfNonLocal = null
+ simpleAccess = Read:
+
+ typeArgumentsMapping = {}
\ No newline at end of file
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt
index f947b7d..52a8b5a 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt
@@ -183,7 +183,7 @@
): ResolutionResult {
val explicitReceiver = qualifiedAccess.explicitReceiver
val argumentList = (qualifiedAccess as? FirFunctionCall)?.argumentList ?: FirEmptyArgumentList
- val typeArguments = (qualifiedAccess as? FirFunctionCall)?.typeArguments.orEmpty()
+ val typeArguments = qualifiedAccess.typeArguments
val info = CallInfo(
qualifiedAccess,