[AA] Consider context receivers in FirTowerDataElement.getAvailableScope

This commit is contained in:
aleksandrina-streltsova
2023-02-26 21:48:39 +02:00
committed by teamcity
parent 5996b41443
commit d89d774411
7 changed files with 56 additions and 5 deletions
@@ -236,9 +236,10 @@ private class FirShorteningContext(val analysisSession: KtFirAnalysisSession) {
): List<FirScope>? {
val towerDataContext = towerContextProvider.getClosestAvailableParentContext(position) ?: return null
val result = buildList {
addAll(towerDataContext.nonLocalTowerDataElements.mapNotNull {
// We must use `it.getAvailableScope()` instead of `it.scope` to check scopes of companion objects as well.
it.getAvailableScope()
addAll(towerDataContext.nonLocalTowerDataElements.flatMap {
// We must use `it.getAvailableScopes()` instead of `it.scope` to check scopes of companion objects
// and context receivers as well.
it.getAvailableScopes()
})
addIfNotNull(createFakeImportingScope(newImports))
addAll(towerDataContext.localScopes)
@@ -160,6 +160,12 @@ public class FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated ext
runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/companionUsedOutOfClass.kt");
}
@Test
@TestMetadata("contextReceiver.kt")
public void testContextReceiver() throws Exception {
runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/contextReceiver.kt");
}
@Test
@TestMetadata("enumClassCompanionAlreadyImported.kt")
public void testEnumClassCompanionAlreadyImported() throws Exception {