[Analysis API FIR] support call expression resolve in class literal

KTIJ-23272
This commit is contained in:
Anna Kozlova
2022-11-04 08:10:09 +01:00
parent 5dc2442872
commit f18d1e9067
6 changed files with 26 additions and 2 deletions
@@ -520,6 +520,12 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/intArrayOfInAnnotation.kt");
}
@Test
@TestMetadata("javaClassReference.kt")
public void testJavaClassReference() throws Exception {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/javaClassReference.kt");
}
@Test
@TestMetadata("javaFunctionCall.kt")
public void testJavaFunctionCall() throws Exception {
@@ -222,7 +222,7 @@ internal class KtFirCallResolver(
}
/**
* Resolves call expressions like `Foo<Bar>` or `test.Foo<Bar>` in calls like `Foo<Bar>::foo` and `test.Foo<Bar>::foo`.
* Resolves call expressions like `Foo<Bar>` or `test.Foo<Bar>` in calls like `Foo<Bar>::foo`, `test.Foo<Bar>::foo` and class literals like `Foo<Bar>`::class.java.
*
* We have a separate [KtGenericTypeQualifier] type of [KtCall].
*/
@@ -233,7 +233,7 @@ internal class KtFirCallResolver(
val call = psiElement.getPossiblyQualifiedCallExpression() ?: return null
if (call.typeArgumentList == null || call.valueArgumentList != null) return null
val parentReferenceExpression = psiElement.parent as? KtCallableReferenceExpression ?: return null
val parentReferenceExpression = psiElement.parent as? KtDoubleColonExpression ?: return null
if (parentReferenceExpression.lhs != psiElement) return null
return KtSuccessCallInfo(KtGenericTypeQualifier(token, psiElement))
@@ -520,6 +520,12 @@ public class FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated extends Ab
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/intArrayOfInAnnotation.kt");
}
@Test
@TestMetadata("javaClassReference.kt")
public void testJavaClassReference() throws Exception {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/javaClassReference.kt");
}
@Test
@TestMetadata("javaFunctionCall.kt")
public void testJavaFunctionCall() throws Exception {
@@ -520,6 +520,12 @@ public class FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated ext
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/intArrayOfInAnnotation.kt");
}
@Test
@TestMetadata("javaClassReference.kt")
public void testJavaClassReference() throws Exception {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/javaClassReference.kt");
}
@Test
@TestMetadata("javaFunctionCall.kt")
public void testJavaFunctionCall() throws Exception {
@@ -0,0 +1,3 @@
fun call() {
val someVal = <expr>Array<String></expr>::class.java
}
@@ -0,0 +1,3 @@
KtSuccessCallInfo:
call = KtGenericTypeQualifier:
qualifier = Array<String>