Refactor QualifiedExpressionResolver
- fix return types everywhere: Collection<DeclarationDescriptor> instead of Collection<? extends DeclarationDescriptor> - delete useless LookupResult.EMPTY and merge LookupResult with SuccessfulLookupResult - reformat, minor inlines, etc.
This commit is contained in:
@@ -388,9 +388,9 @@ public class ElementResolver {
|
||||
if (expression.getParent() instanceof JetUserType) {
|
||||
JetUserType qualifier = ((JetUserType) expression.getParent()).getQualifier();
|
||||
if (qualifier != null) {
|
||||
Collection<? extends DeclarationDescriptor> descriptors = qualifiedExpressionResolver
|
||||
.lookupDescriptorsForUserType(qualifier, getExpressionResolutionScope(resolveSession, expression), trace);
|
||||
|
||||
JetScope resolutionScope = getExpressionResolutionScope(resolveSession, expression);
|
||||
Collection<DeclarationDescriptor> descriptors =
|
||||
qualifiedExpressionResolver.lookupDescriptorsForUserType(qualifier, resolutionScope, trace);
|
||||
for (DeclarationDescriptor descriptor : descriptors) {
|
||||
if (descriptor instanceof LazyPackageDescriptor) {
|
||||
return ((LazyPackageDescriptor) descriptor).getMemberScope();
|
||||
|
||||
@@ -18,37 +18,23 @@ package org.jetbrains.jet.plugin.caches
|
||||
|
||||
import org.jetbrains.jet.plugin.project.ResolveSessionForBodies
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||
import org.jetbrains.jet.plugin.stubindex.JetTopLevelObjectShortNameIndex
|
||||
import org.jetbrains.jet.lang.descriptors.*
|
||||
import org.jetbrains.jet.plugin.stubindex.*
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
import org.jetbrains.jet.lang.psi.JetExpression
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext
|
||||
import org.jetbrains.jet.lang.psi.*
|
||||
import org.jetbrains.jet.lang.resolve.*
|
||||
import org.jetbrains.jet.lang.resolve.name.Name
|
||||
import org.jetbrains.jet.plugin.stubindex.JetTopLevelNonExtensionFunctionShortNameIndex
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionsFqnNameIndex
|
||||
import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertiesFqnNameIndex
|
||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression
|
||||
import org.jetbrains.jet.lang.psi.psiUtil.getReceiverExpression
|
||||
import org.jetbrains.jet.lang.types.JetType
|
||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils
|
||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer
|
||||
import org.jetbrains.jet.plugin.stubindex.JetFullClassNameIndex
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||
import org.jetbrains.jet.lang.psi.JetPsiFactory
|
||||
import org.jetbrains.jet.lang.resolve.ImportPath
|
||||
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver
|
||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext
|
||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor
|
||||
import com.intellij.openapi.project.Project
|
||||
import java.util.HashSet
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.jet.plugin.stubindex.JetTopLevelNonExtensionPropertyShortNameIndex
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver
|
||||
import org.jetbrains.jet.lang.resolve.bindingContextUtil.getDataFlowInfo
|
||||
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver.LookupMode
|
||||
|
||||
public class KotlinIndicesHelper(private val project: Project) {
|
||||
public fun getTopLevelObjects(nameFilter: (String) -> Boolean, resolveSession: ResolveSessionForBodies, scope: GlobalSearchScope): Collection<ClassDescriptor> {
|
||||
@@ -174,7 +160,7 @@ public class KotlinIndicesHelper(private val project: Project) {
|
||||
module: ModuleDescriptor,
|
||||
bindingContext: BindingContext): List<CallableDescriptor> {
|
||||
val importDirective = JetPsiFactory(receiverExpression).createImportDirective(callableFQN.asString())
|
||||
val declarationDescriptors = QualifiedExpressionResolver().analyseImportReference(importDirective, scope, BindingTraceContext(), module)
|
||||
val declarationDescriptors = analyzeImportReference(importDirective, scope, BindingTraceContext(), module)
|
||||
|
||||
val receiverValue = ExpressionReceiver(receiverExpression, receiverType)
|
||||
val dataFlowInfo = bindingContext.getDataFlowInfo(receiverExpression)
|
||||
@@ -206,7 +192,14 @@ public class KotlinIndicesHelper(private val project: Project) {
|
||||
|
||||
private fun findTopLevelCallables(fqName: FqName, context: JetExpression, jetScope: JetScope, resolveSession: ResolveSessionForBodies): Collection<CallableDescriptor> {
|
||||
val importDirective = JetPsiFactory(context.getProject()).createImportDirective(ImportPath(fqName, false))
|
||||
val allDescriptors = QualifiedExpressionResolver().analyseImportReference(importDirective, jetScope, BindingTraceContext(), resolveSession.getModuleDescriptor())
|
||||
val allDescriptors = analyzeImportReference(importDirective, jetScope, BindingTraceContext(), resolveSession.getModuleDescriptor())
|
||||
return allDescriptors.filterIsInstance(javaClass<CallableDescriptor>()).filter { it.getReceiverParameter() == null }
|
||||
}
|
||||
|
||||
private fun analyzeImportReference(
|
||||
importDirective: JetImportDirective, scope: JetScope, trace: BindingTrace, module: ModuleDescriptor
|
||||
): Collection<DeclarationDescriptor> {
|
||||
return QualifiedExpressionResolver().processImportReference(importDirective, scope, scope, Importer.DO_NOTHING, trace,
|
||||
module, LookupMode.EVERYTHING)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user