From 83ad6eca08d6e147f6500cb7ec43a459004df5ff Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 18 Jan 2024 18:40:16 +0900 Subject: [PATCH] [Analysis API] Minor, prettify 'hasParentSymbol()' --- ...tFirSymbolContainingDeclarationProvider.kt | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) 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 7eca6b13b20..be18b5c036f 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 @@ -114,12 +114,28 @@ internal class KtFirSymbolContainingDeclarationProvider( private fun hasParentSymbol(symbol: KtSymbol): Boolean { when (symbol) { - is KtReceiverParameterSymbol -> return true // KT-55124 - !is KtDeclarationSymbol -> return false - is KtSamConstructorSymbol -> return false // SAM constructors are always top-level - is KtScriptSymbol -> return false // Scripts are always top-level - else -> { - if (symbol is KtSymbolWithKind && symbol.symbolKind == KtSymbolKind.TOP_LEVEL) { + is KtReceiverParameterSymbol -> { + // KT-55124 + return true + } + + !is KtDeclarationSymbol -> { + // File, package, etc. + return false + } + + is KtSamConstructorSymbol -> { + // SAM constructors are always top-level + return false + } + + is KtScriptSymbol -> { + // Scripts are always top-level + return false + } + + is KtSymbolWithKind -> { + if (symbol.symbolKind == KtSymbolKind.TOP_LEVEL) { val containingFile = (symbol.firSymbol.fir as? FirElementWithResolveState)?.getContainingFile() if (containingFile == null || containingFile.declarations.firstOrNull() !is FirScript) { // Should be replaced with proper check after KT-61451 and KT-61887 @@ -129,6 +145,10 @@ internal class KtFirSymbolContainingDeclarationProvider( return true } + + else -> { + return true + } } }