From 0a7a73d4bed4ea04ee410874fdad98692dec2446 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 9 Mar 2017 15:37:14 +0300 Subject: [PATCH] Refactoring: extract method for getting lexical scope without facade --- .../org/jetbrains/kotlin/idea/util/scopeUtils.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/scopeUtils.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/scopeUtils.kt index b7045ab49a1..a30fe937077 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/scopeUtils.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/scopeUtils.kt @@ -59,7 +59,7 @@ fun LexicalScope.getVariableFromImplicitReceivers(name: Name): VariableDescripto return null } -fun PsiElement.getResolutionScope(bindingContext: BindingContext, resolutionFacade: ResolutionFacade/*TODO: get rid of this parameter*/): LexicalScope { +fun PsiElement.getResolutionScope(bindingContext: BindingContext): LexicalScope? { for (parent in parentsWithSelf) { if (parent is KtElement) { val scope = bindingContext[BindingContext.LEXICAL_SCOPE, parent] @@ -72,12 +72,20 @@ fun PsiElement.getResolutionScope(bindingContext: BindingContext, resolutionFaca return classDescriptor.scopeForMemberDeclarationResolution } } - if (parent is KtFile) { - return resolutionFacade.getFileResolutionScope(parent) + break } } - error("Not in KtFile") + + return null +} + +fun PsiElement.getResolutionScope(bindingContext: BindingContext, resolutionFacade: ResolutionFacade/*TODO: get rid of this parameter*/): LexicalScope { + return getResolutionScope(bindingContext) ?: + when (containingFile) { + is KtFile -> resolutionFacade.getFileResolutionScope(containingFile as KtFile) + else -> error("Not in KtFile") + } } fun KtElement.getResolutionScope(): LexicalScope {