[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");
|
||||
}
|
||||
|
||||
@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);
|
||||
|
||||
+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);
|
||||
|
||||
+6
@@ -47,6 +47,12 @@ public class FirStandaloneNormalAnalysisSourceModuleExpectForActualTestGenerated
|
||||
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);
|
||||
|
||||
+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