From 85b4f5d593d1aa4d2d5126fb10383f9bec5b195d Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Fri, 18 Dec 2015 19:55:12 +0300 Subject: [PATCH] Move part of resolutionApi to ide-common --- .../idea/caches/resolve/resolutionApi.kt | 23 +++--------- .../kotlin/idea/caches/resolve/scopeUtils.kt | 36 +++++++++++++++++++ 2 files changed, 41 insertions(+), 18 deletions(-) rename idea/{idea-analysis => ide-common}/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt (81%) create mode 100644 idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/scopeUtils.kt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt similarity index 81% rename from idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt rename to idea/ide-common/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt index db855c79340..8ebc12c6226 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt @@ -18,15 +18,16 @@ package org.jetbrains.kotlin.idea.caches.resolve -import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.idea.resolve.ResolutionFacade -import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.ImportPath @@ -85,18 +86,4 @@ fun ResolutionFacade.resolveImportReference( val qualifiedExpressionResolver = this.getFrontendService(moduleDescriptor, QualifiedExpressionResolver::class.java) return qualifiedExpressionResolver.processImportReference( importDirective, moduleDescriptor, BindingTraceContext(), packageFragmentForVisibilityCheck = null)?.getContributedDescriptors() ?: emptyList() -} - -//NOTE: idea default API returns module search scope for file under module but not in source or production source (for example, test data ) -// this scope can't be used to search for kotlin declarations in index in order to resolve in that case -// see com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl.getInherentResolveScope -fun getResolveScope(file: KtFile): GlobalSearchScope { - if (file is KtCodeFragment) { - file.forcedResolveScope?.let { return KotlinSourceFilterScope.sourceAndClassFiles(it, file.project) } - } - - return when (file.getModuleInfo()) { - is ModuleSourceInfo -> file.resolveScope - else -> GlobalSearchScope.EMPTY_SCOPE - } -} +} \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/scopeUtils.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/scopeUtils.kt new file mode 100644 index 00000000000..a78d1ea23e2 --- /dev/null +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/scopeUtils.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.caches.resolve + +import com.intellij.psi.search.GlobalSearchScope +import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope +import org.jetbrains.kotlin.psi.KtCodeFragment +import org.jetbrains.kotlin.psi.KtFile + +//NOTE: idea default API returns module search scope for file under module but not in source or production source (for example, test data ) +// this scope can't be used to search for kotlin declarations in index in order to resolve in that case +// see com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl.getInherentResolveScope +fun getResolveScope(file: KtFile): GlobalSearchScope { + if (file is KtCodeFragment) { + file.forcedResolveScope?.let { return KotlinSourceFilterScope.sourceAndClassFiles(it, file.project) } + } + + return when (file.getModuleInfo()) { + is ModuleSourceInfo -> file.resolveScope + else -> GlobalSearchScope.EMPTY_SCOPE + } +}