[Analysis API FIR] fix call resolution of non-resolvable elements
This commit is contained in:
+2
-2
@@ -145,7 +145,7 @@ internal class KtFe10CallResolver(
|
||||
get() = analysisSession.token
|
||||
|
||||
override fun resolveCall(psi: KtElement): KtCallInfo? = with(analysisContext.analyze(psi, AnalysisMode.PARTIAL_WITH_DIAGNOSTICS)) {
|
||||
if (psi.isNotResolvable()) return null
|
||||
if (!canBeResolvedAsCall(psi)) return null
|
||||
|
||||
val parentBinaryExpression = psi.parentOfType<KtBinaryExpression>()
|
||||
val lhs = KtPsiUtil.deparenthesize(parentBinaryExpression?.left)
|
||||
@@ -177,7 +177,7 @@ internal class KtFe10CallResolver(
|
||||
|
||||
override fun collectCallCandidates(psi: KtElement): List<KtCallCandidateInfo> =
|
||||
with(analysisContext.analyze(psi, AnalysisMode.PARTIAL_WITH_DIAGNOSTICS)) {
|
||||
if (psi.isNotResolvable()) return emptyList()
|
||||
if (!canBeResolvedAsCall(psi)) return emptyList()
|
||||
|
||||
val resolvedKtCallInfo = resolveCall(psi)
|
||||
val bestCandidateDescriptors =
|
||||
|
||||
+28
@@ -854,6 +854,34 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/components/callResolver/resolveCall/nonCalls")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class NonCalls {
|
||||
@Test
|
||||
public void testAllFilesPresentInNonCalls() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/callResolver/resolveCall/nonCalls"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ifExpression.kt")
|
||||
public void testIfExpression() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/nonCalls/ifExpression.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("literalExpression.kt")
|
||||
public void testLiteralExpression() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/nonCalls/literalExpression.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("whenExpression.kt")
|
||||
public void testWhenExpression() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/nonCalls/whenExpression.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/components/callResolver/resolveCall/withTestCompilerPluginEnabled")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
|
||||
Reference in New Issue
Block a user