[AA] return expect declaration for "implicit" actual
If actual declaration is broken (missing explicit `actual` keyword), expect declaration still makes sense. This way, we allow refactorings on broken code ^KT-65191 fixed
This commit is contained in:
+2
-6
@@ -23,13 +23,9 @@ internal class KtFirMultiplatformInfoProvider(
|
||||
override fun getExpectForActual(actual: KtDeclarationSymbol): List<KtDeclarationSymbol> {
|
||||
require(actual is KtFirSymbol<*>)
|
||||
val firSymbol = actual.firSymbol
|
||||
val status = when (firSymbol) {
|
||||
is FirCallableSymbol -> firSymbol.rawStatus
|
||||
is FirClassSymbol -> firSymbol.rawStatus
|
||||
is FirTypeAliasSymbol -> firSymbol.rawStatus
|
||||
else -> null
|
||||
if (firSymbol !is FirCallableSymbol && firSymbol !is FirClassSymbol && firSymbol !is FirTypeAliasSymbol) {
|
||||
return emptyList()
|
||||
}
|
||||
if (status?.isActual != true) return emptyList()
|
||||
|
||||
return firSymbol.expectForActual?.get(ExpectActualMatchingCompatibility.MatchedSuccessfully)
|
||||
?.map { analysisSession.firSymbolBuilder.buildSymbol(it) as KtDeclarationSymbol }.orEmpty()
|
||||
|
||||
+6
@@ -47,6 +47,12 @@ public class FirIdeDependentAnalysisSourceModuleExpectForActualTestGenerated ext
|
||||
runTest("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual/actual_object.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("actual_primaryConstructor.kt")
|
||||
public void testActual_primaryConstructor() {
|
||||
runTest("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual/actual_primaryConstructor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInExpectForActual() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
|
||||
+6
@@ -47,6 +47,12 @@ public class FirIdeNormalAnalysisSourceModuleExpectForActualTestGenerated extend
|
||||
runTest("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual/actual_object.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("actual_primaryConstructor.kt")
|
||||
public void testActual_primaryConstructor() {
|
||||
runTest("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual/actual_primaryConstructor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllFilesPresentInExpectForActual() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
|
||||
Reference in New Issue
Block a user