diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 2fc8569413e..1542d1a90e9 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/references/Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -1274,6 +1274,12 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfLocalProperty.kt"); } + @Test + @TestMetadata("SelfNonLocalEnumEntry.kt") + public void testSelfNonLocalEnumEntry() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt"); + } + @Test @TestMetadata("SelfNonLocalMethod.kt") public void testSelfNonLocalMethod() throws Exception { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt index 0455db0f7e8..ab673a72d1b 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt @@ -193,7 +193,8 @@ internal class KtFirScopeProvider( } val firScopes = towerDataElementsIndexed.flatMap { (index, towerDataElement) -> - towerDataElement.getAvailableScopes().map { IndexedValue(index, it) } + val availableScopes = towerDataElement.getAvailableScopes().flatMap { flattenFirScope(it) } + availableScopes.map { IndexedValue(index, it) } } val scopes = firScopes.map { (index, firScope) -> KtScopeWithKind(convertToKtScope(firScope), getScopeKind(firScope, index), token) @@ -202,6 +203,12 @@ internal class KtFirScopeProvider( return KtScopeContext(scopes, implicitReceivers, token) } + private fun flattenFirScope(firScope: FirScope): List = when (firScope) { + is FirCompositeScope -> firScope.scopes.flatMap { flattenFirScope(it) } + is FirNameAwareCompositeScope -> firScope.scopes.flatMap { flattenFirScope(it) } + else -> listOf(firScope) + } + private fun convertToKtScope(firScope: FirScope): KtScope { return when (firScope) { is FirAbstractSimpleImportingScope -> KtFirNonStarImportingScope(firScope, builder) diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java index 5dfbbb2c93e..7b6fb24c1b9 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -1274,6 +1274,12 @@ public class FirIdeDependentAnalysisSourceModuleReferenceResolveTestGenerated ex runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfLocalProperty.kt"); } + @Test + @TestMetadata("SelfNonLocalEnumEntry.kt") + public void testSelfNonLocalEnumEntry() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt"); + } + @Test @TestMetadata("SelfNonLocalMethod.kt") public void testSelfNonLocalMethod() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java index 000c41d0c43..4996ee9e196 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerated.java @@ -1158,6 +1158,12 @@ public class FirIdeNormalAnalysisLibrarySourceModuleReferenceResolveTestGenerate runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfLocalProperty.kt"); } + @Test + @TestMetadata("SelfNonLocalEnumEntry.kt") + public void testSelfNonLocalEnumEntry() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt"); + } + @Test @TestMetadata("SelfNonLocalMethod.kt") public void testSelfNonLocalMethod() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index bb681eb9bf1..4305d1a8c0d 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -1274,6 +1274,12 @@ public class FirIdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exten runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfLocalProperty.kt"); } + @Test + @TestMetadata("SelfNonLocalEnumEntry.kt") + public void testSelfNonLocalEnumEntry() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt"); + } + @Test @TestMetadata("SelfNonLocalMethod.kt") public void testSelfNonLocalMethod() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java index 884453f34ff..74e96d82bb9 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerated.java @@ -1274,6 +1274,12 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceResolveTestGenerate runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfLocalProperty.kt"); } + @Test + @TestMetadata("SelfNonLocalEnumEntry.kt") + public void testSelfNonLocalEnumEntry() throws Exception { + runTest("analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt"); + } + @Test @TestMetadata("SelfNonLocalMethod.kt") public void testSelfNonLocalMethod() throws Exception { diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt b/analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt new file mode 100644 index 00000000000..fd3489855a6 --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.kt @@ -0,0 +1,10 @@ +enum class E { + /** + * [AA] + */ + AA, BB; + + companion object { + fun f() {} + } +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.txt new file mode 100644 index 00000000000..cb622d7065c --- /dev/null +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/localContext/SelfNonLocalEnumEntry.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in E) AA