From 4efe7a00f11e7cd516a761618d7844d9049aa403 Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Wed, 15 Nov 2023 16:26:09 +0100 Subject: [PATCH] [AA] KtFirSymbolContainingDeclarationProvider: Support `EnumGeneratedDeclaration` in `getContainingPsi` - The root cause of the exception in KT-62982 is that symbol light classes are accessed in dumb mode (see KT-63490). Nonetheless, we can patch the exception by supporting `EnumGeneratedDeclaration` in `getContainingPsi`. - To create a symbol from the containing PSI, `KtFirSymbolContainingDeclarationProvider` will still try and fail to find the enum class symbol via symbol providers, but it'll fall back to a designators search in the same `FirFile`, which will find the symbol without index access (see `findSourceNonLocalFirDeclaration` in LL API's `declarationUtils.kt`). ^KT-62982 fixed --- .../fir/components/KtFirSymbolContainingDeclarationProvider.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt index 7e2289b0c7f..03d7c4f9329 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolContainingDeclarationProvider.kt @@ -113,6 +113,7 @@ internal class KtFirSymbolContainingDeclarationProvider( KtFakeSourceElementKind.ImplicitConstructor -> return source.psi as KtDeclaration KtFakeSourceElementKind.PropertyFromParameter -> return source.psi?.parentOfType()!! KtFakeSourceElementKind.EnumInitializer -> return source.psi as KtEnumEntry + KtFakeSourceElementKind.EnumGeneratedDeclaration -> return source.psi as KtDeclaration KtFakeSourceElementKind.ScriptParameter -> return source.psi as KtScript KtRealSourceElementKind -> source.psi!! else ->