Refactor: Do not pass rootScope to QualifiedExpressionResolver#processImportReference
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.resolve
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.Errors
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
import org.jetbrains.kotlin.psi.JetImportDirective
|
import org.jetbrains.kotlin.psi.JetImportDirective
|
||||||
@@ -32,10 +33,10 @@ public class ImportDirectiveProcessor(
|
|||||||
) {
|
) {
|
||||||
public fun processImportReference(
|
public fun processImportReference(
|
||||||
importDirective: JetImportDirective,
|
importDirective: JetImportDirective,
|
||||||
scope: JetScope,
|
moduleDescriptor: ModuleDescriptor,
|
||||||
shouldBeVisibleFrom: DeclarationDescriptor,
|
|
||||||
trace: BindingTrace,
|
trace: BindingTrace,
|
||||||
lookupMode: QualifiedExpressionResolver.LookupMode
|
lookupMode: QualifiedExpressionResolver.LookupMode,
|
||||||
|
allowClassesFromDefaultPackage: Boolean
|
||||||
): JetScope {
|
): JetScope {
|
||||||
if (importDirective.isAbsoluteInRootPackage()) {
|
if (importDirective.isAbsoluteInRootPackage()) {
|
||||||
trace.report(Errors.UNSUPPORTED.on(importDirective, "TypeHierarchyResolver")) // TODO
|
trace.report(Errors.UNSUPPORTED.on(importDirective, "TypeHierarchyResolver")) // TODO
|
||||||
@@ -44,16 +45,17 @@ public class ImportDirectiveProcessor(
|
|||||||
|
|
||||||
val importedReference = importDirective.getImportedReference() ?: return JetScope.Empty
|
val importedReference = importDirective.getImportedReference() ?: return JetScope.Empty
|
||||||
|
|
||||||
|
val scope = JetModuleUtil.getImportsResolutionScope(moduleDescriptor, allowClassesFromDefaultPackage)
|
||||||
val descriptors = if (importedReference is JetQualifiedExpression) {
|
val descriptors = if (importedReference is JetQualifiedExpression) {
|
||||||
//store result only when we find all descriptors, not only classes on the second phase
|
//store result only when we find all descriptors, not only classes on the second phase
|
||||||
qualifiedExpressionResolver.lookupDescriptorsForQualifiedExpression(
|
qualifiedExpressionResolver.lookupDescriptorsForQualifiedExpression(
|
||||||
importedReference, scope, shouldBeVisibleFrom, trace, lookupMode, lookupMode.isEverything()
|
importedReference, scope, moduleDescriptor, trace, lookupMode, lookupMode.isEverything()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
assert(importedReference is JetSimpleNameExpression)
|
assert(importedReference is JetSimpleNameExpression)
|
||||||
qualifiedExpressionResolver.lookupDescriptorsForSimpleNameReference(
|
qualifiedExpressionResolver.lookupDescriptorsForSimpleNameReference(
|
||||||
importedReference as JetSimpleNameExpression, scope, shouldBeVisibleFrom, trace, lookupMode, true, lookupMode.isEverything()
|
importedReference as JetSimpleNameExpression, scope, moduleDescriptor, trace, lookupMode, true, lookupMode.isEverything()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,12 +74,12 @@ public class QualifiedExpressionResolver {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public JetScope processImportReference(
|
public JetScope processImportReference(
|
||||||
@NotNull JetImportDirective importDirective,
|
@NotNull JetImportDirective importDirective,
|
||||||
@NotNull JetScope scope,
|
|
||||||
@NotNull ModuleDescriptor moduleDescriptor,
|
@NotNull ModuleDescriptor moduleDescriptor,
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull LookupMode lookupMode
|
@NotNull LookupMode lookupMode,
|
||||||
|
boolean allowClassesFromDefaultPackage
|
||||||
) {
|
) {
|
||||||
return importDirectiveProcessor.processImportReference(importDirective, scope, moduleDescriptor, trace, lookupMode);
|
return importDirectiveProcessor.processImportReference(importDirective, moduleDescriptor, trace, lookupMode, allowClassesFromDefaultPackage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.psi.JetImportDirective
|
import org.jetbrains.kotlin.psi.JetImportDirective
|
||||||
import org.jetbrains.kotlin.psi.JetPsiUtil
|
import org.jetbrains.kotlin.psi.JetPsiUtil
|
||||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||||
import org.jetbrains.kotlin.resolve.JetModuleUtil
|
|
||||||
import org.jetbrains.kotlin.resolve.PlatformTypesMappedToKotlinChecker
|
import org.jetbrains.kotlin.resolve.PlatformTypesMappedToKotlinChecker
|
||||||
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver.LookupMode
|
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver.LookupMode
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
@@ -69,12 +68,11 @@ class LazyImportResolver(
|
|||||||
val moduleDescriptor: ModuleDescriptor,
|
val moduleDescriptor: ModuleDescriptor,
|
||||||
val indexedImports: IndexedImports,
|
val indexedImports: IndexedImports,
|
||||||
private val traceForImportResolve: BindingTrace,
|
private val traceForImportResolve: BindingTrace,
|
||||||
includeRootPackageClasses: Boolean
|
private val includeRootPackageClasses: Boolean
|
||||||
) {
|
) {
|
||||||
private val importedScopesProvider = resolveSession.getStorageManager().createMemoizedFunction {
|
private val importedScopesProvider = resolveSession.getStorageManager().createMemoizedFunction {
|
||||||
directive: JetImportDirective -> ImportDirectiveResolveCache(directive)
|
directive: JetImportDirective -> ImportDirectiveResolveCache(directive)
|
||||||
}
|
}
|
||||||
private val rootScope = JetModuleUtil.getImportsResolutionScope(resolveSession.getModuleDescriptor(), includeRootPackageClasses)
|
|
||||||
|
|
||||||
private var directiveUnderResolve: JetImportDirective? = null
|
private var directiveUnderResolve: JetImportDirective? = null
|
||||||
|
|
||||||
@@ -101,7 +99,7 @@ class LazyImportResolver(
|
|||||||
try {
|
try {
|
||||||
val resolver = resolveSession.getQualifiedExpressionResolver()
|
val resolver = resolveSession.getQualifiedExpressionResolver()
|
||||||
val directiveImportScope = resolver.processImportReference(
|
val directiveImportScope = resolver.processImportReference(
|
||||||
directive, rootScope, moduleDescriptor, traceForImportResolve, mode)
|
directive, moduleDescriptor, traceForImportResolve, mode, includeRootPackageClasses)
|
||||||
val descriptors = if (directive.isAllUnder()) emptyList() else directiveImportScope.getAllDescriptors()
|
val descriptors = if (directive.isAllUnder()) emptyList() else directiveImportScope.getAllDescriptors()
|
||||||
|
|
||||||
if (mode == LookupMode.EVERYTHING) {
|
if (mode == LookupMode.EVERYTHING) {
|
||||||
@@ -211,11 +209,6 @@ class LazyImportResolver(
|
|||||||
public fun getImportScope(directive: JetImportDirective, lookupMode: LookupMode): JetScope {
|
public fun getImportScope(directive: JetImportDirective, lookupMode: LookupMode): JetScope {
|
||||||
return importedScopesProvider(directive).scopeForMode(lookupMode)
|
return importedScopesProvider(directive).scopeForMode(lookupMode)
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun printScopeStructure(p: Printer) {
|
|
||||||
p.print("rootScope = ")
|
|
||||||
rootScope.printScopeStructure(p.withholdIndentOnce())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class LazyImportScope(
|
class LazyImportScope(
|
||||||
@@ -296,8 +289,6 @@ class LazyImportScope(
|
|||||||
|
|
||||||
p.println("containingDeclaration = ", containingDeclaration)
|
p.println("containingDeclaration = ", containingDeclaration)
|
||||||
|
|
||||||
importResolver.printScopeStructure(p)
|
|
||||||
|
|
||||||
p.popIndent()
|
p.popIndent()
|
||||||
p.println("}")
|
p.println("}")
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -225,10 +225,9 @@ private class ResolutionFacadeImpl(private val project: Project, private val cac
|
|||||||
override fun resolveImportReference(moduleDescriptor: ModuleDescriptor, fqName: FqName, isDefaultImport: Boolean): Collection<DeclarationDescriptor> {
|
override fun resolveImportReference(moduleDescriptor: ModuleDescriptor, fqName: FqName, isDefaultImport: Boolean): Collection<DeclarationDescriptor> {
|
||||||
val importDirective = JetPsiFactory(project).createImportDirective(ImportPath(fqName, false))
|
val importDirective = JetPsiFactory(project).createImportDirective(ImportPath(fqName, false))
|
||||||
val resolveSession = cache.getLazyResolveSession(moduleDescriptor)
|
val resolveSession = cache.getLazyResolveSession(moduleDescriptor)
|
||||||
val scope = JetModuleUtil.getImportsResolutionScope(moduleDescriptor, !isDefaultImport)
|
|
||||||
val resolver = resolveSession.getQualifiedExpressionResolver()
|
val resolver = resolveSession.getQualifiedExpressionResolver()
|
||||||
return resolver.processImportReference(
|
return resolver.processImportReference(
|
||||||
importDirective, moduleDescriptor, scope, BindingTraceContext(), QualifiedExpressionResolver.LookupMode.EVERYTHING).getAllDescriptors()
|
importDirective, moduleDescriptor, BindingTraceContext(), QualifiedExpressionResolver.LookupMode.EVERYTHING, !isDefaultImport).getAllDescriptors()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <T> get(extension: CacheExtension<T>): T {
|
override fun <T> get(extension: CacheExtension<T>): T {
|
||||||
|
|||||||
Reference in New Issue
Block a user