[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:
+6
@@ -47,6 +47,12 @@ public class Fe10IdeNormalAnalysisSourceModuleExpectForActualTestGenerated exten
|
|||||||
runTest("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual/actual_object.kt");
|
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
|
@Test
|
||||||
public void testAllFilesPresentInExpectForActual() {
|
public void testAllFilesPresentInExpectForActual() {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
|
|||||||
+2
-6
@@ -23,13 +23,9 @@ internal class KtFirMultiplatformInfoProvider(
|
|||||||
override fun getExpectForActual(actual: KtDeclarationSymbol): List<KtDeclarationSymbol> {
|
override fun getExpectForActual(actual: KtDeclarationSymbol): List<KtDeclarationSymbol> {
|
||||||
require(actual is KtFirSymbol<*>)
|
require(actual is KtFirSymbol<*>)
|
||||||
val firSymbol = actual.firSymbol
|
val firSymbol = actual.firSymbol
|
||||||
val status = when (firSymbol) {
|
if (firSymbol !is FirCallableSymbol && firSymbol !is FirClassSymbol && firSymbol !is FirTypeAliasSymbol) {
|
||||||
is FirCallableSymbol -> firSymbol.rawStatus
|
return emptyList()
|
||||||
is FirClassSymbol -> firSymbol.rawStatus
|
|
||||||
is FirTypeAliasSymbol -> firSymbol.rawStatus
|
|
||||||
else -> null
|
|
||||||
}
|
}
|
||||||
if (status?.isActual != true) return emptyList()
|
|
||||||
|
|
||||||
return firSymbol.expectForActual?.get(ExpectActualMatchingCompatibility.MatchedSuccessfully)
|
return firSymbol.expectForActual?.get(ExpectActualMatchingCompatibility.MatchedSuccessfully)
|
||||||
?.map { analysisSession.firSymbolBuilder.buildSymbol(it) as KtDeclarationSymbol }.orEmpty()
|
?.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");
|
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
|
@Test
|
||||||
public void testAllFilesPresentInExpectForActual() {
|
public void testAllFilesPresentInExpectForActual() {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
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");
|
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
|
@Test
|
||||||
public void testAllFilesPresentInExpectForActual() {
|
public void testAllFilesPresentInExpectForActual() {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
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 FirStandaloneNormalAnalysisSourceModuleExpectForActualTestGenerated
|
|||||||
runTest("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual/actual_object.kt");
|
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
|
@Test
|
||||||
public void testAllFilesPresentInExpectForActual() {
|
public void testAllFilesPresentInExpectForActual() {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/multiplatformInfoProvider/expectForActual"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||||
|
|||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
expected symbols:
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
// !LANGUAGE: +MultiPlatformProjects
|
||||||
|
// MODULE: commonMain
|
||||||
|
// FILE: Common.kt
|
||||||
|
|
||||||
|
package sample
|
||||||
|
expect class Foo(n: Int)
|
||||||
|
|
||||||
|
// MODULE: androidMain()()(commonMain)
|
||||||
|
// FILE: JvmAndroid.kt
|
||||||
|
|
||||||
|
package sample
|
||||||
|
actual class Foo<caret>(n: Int) {
|
||||||
|
val k = n
|
||||||
|
}
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
expected symbols:
|
||||||
|
Common.kt : constructor(n: kotlin.Int)
|
||||||
Reference in New Issue
Block a user