It is more correct to resolve default imports this way
This commit is contained in:
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.JetModuleUtil
|
|||||||
import org.jetbrains.kotlin.resolve.NoSubpackagesInPackageScope
|
import org.jetbrains.kotlin.resolve.NoSubpackagesInPackageScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
class LazyFileScope private(
|
class LazyFileScope private(
|
||||||
private val aliasImportsScope: LazyImportScope,
|
private val aliasImportsScope: LazyImportScope,
|
||||||
@@ -71,13 +72,16 @@ class LazyFileScope private(
|
|||||||
file.getImportDirectives()
|
file.getImportDirectives()
|
||||||
|
|
||||||
val packageView = getPackageViewDescriptor(file, resolveSession)
|
val packageView = getPackageViewDescriptor(file, resolveSession)
|
||||||
|
val inRootPackage = packageView.getFqName().isRoot()
|
||||||
|
val rootPackageView = resolveSession.getModuleDescriptor().getPackage(FqName.ROOT)
|
||||||
|
?: throw IllegalStateException("Root package not found")
|
||||||
|
|
||||||
val currentPackageMembersScope = NoSubpackagesInPackageScope(packageView)
|
val currentPackageMembersScope = NoSubpackagesInPackageScope(packageView)
|
||||||
val rootPackagesScope = JetModuleUtil.getSubpackagesOfRootScope(resolveSession.getModuleDescriptor())
|
val rootPackagesScope = JetModuleUtil.getSubpackagesOfRootScope(resolveSession.getModuleDescriptor())
|
||||||
val aliasImportsScope = LazyImportScope(resolveSession, packageView, AliasImportsIndexed(imports), traceForImportResolve, "Alias imports in $debugName")
|
val aliasImportsScope = LazyImportScope(resolveSession, packageView, AliasImportsIndexed(imports), traceForImportResolve, "Alias imports in $debugName", inRootPackage)
|
||||||
val allUnderImportsScope = LazyImportScope(resolveSession, packageView, AllUnderImportsIndexed(imports), traceForImportResolve, "All under imports in $debugName")
|
val allUnderImportsScope = LazyImportScope(resolveSession, packageView, AllUnderImportsIndexed(imports), traceForImportResolve, "All under imports in $debugName", inRootPackage)
|
||||||
val defaultAliasImportsScope = LazyImportScope(resolveSession, packageView, AliasImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default alias imports in $debugName")
|
val defaultAliasImportsScope = LazyImportScope(resolveSession, rootPackageView, AliasImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default alias imports in $debugName", false)
|
||||||
val defaultAllUnderImportsScope = LazyImportScope(resolveSession, packageView, AllUnderImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default all under imports in $debugName")
|
val defaultAllUnderImportsScope = LazyImportScope(resolveSession, rootPackageView, AllUnderImportsIndexed(defaultImports), traceForDefaultImportResolve, "Default all under imports in $debugName", false)
|
||||||
|
|
||||||
return LazyFileScope(aliasImportsScope, allUnderImportsScope, defaultAliasImportsScope, defaultAllUnderImportsScope,
|
return LazyFileScope(aliasImportsScope, allUnderImportsScope, defaultAliasImportsScope, defaultAllUnderImportsScope,
|
||||||
currentPackageMembersScope, rootPackagesScope, additionalScopes,
|
currentPackageMembersScope, rootPackagesScope, additionalScopes,
|
||||||
|
|||||||
@@ -66,13 +66,13 @@ class LazyImportScope(
|
|||||||
private val containingDeclaration: PackageViewDescriptor,
|
private val containingDeclaration: PackageViewDescriptor,
|
||||||
private val indexedImports: IndexedImports,
|
private val indexedImports: IndexedImports,
|
||||||
private val traceForImportResolve: BindingTrace,
|
private val traceForImportResolve: BindingTrace,
|
||||||
private val debugName: String
|
private val debugName: String,
|
||||||
|
private val inRootPackage: Boolean
|
||||||
) : JetScope {
|
) : JetScope {
|
||||||
|
|
||||||
private val importedScopesProvider = resolveSession.getStorageManager().createMemoizedFunction {
|
private val importedScopesProvider = resolveSession.getStorageManager().createMemoizedFunction {
|
||||||
(directive: JetImportDirective) -> ImportDirectiveResolveCache(directive)
|
(directive: JetImportDirective) -> ImportDirectiveResolveCache(directive)
|
||||||
}
|
}
|
||||||
private val inRootPackage = containingDeclaration.getFqName().isRoot()
|
|
||||||
private val rootScope = JetModuleUtil.getImportsResolutionScope(resolveSession.getModuleDescriptor(), inRootPackage)
|
private val rootScope = JetModuleUtil.getImportsResolutionScope(resolveSession.getModuleDescriptor(), inRootPackage)
|
||||||
|
|
||||||
private var directiveUnderResolve: JetImportDirective? = null
|
private var directiveUnderResolve: JetImportDirective? = null
|
||||||
|
|||||||
Reference in New Issue
Block a user