Changed priority for default imports + default imports include all built-ins explicitly for java module
#KT-4374 Fixed
This commit is contained in:
@@ -26,14 +26,13 @@ import java.util.ArrayList
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
|
||||
public class Importer(private val platformToKotlinClassMap: PlatformToKotlinClassMap) {
|
||||
public class Importer {
|
||||
private val allUnderImportScopes = ArrayList<JetScope>()
|
||||
private val explicitImports = ArrayList<Pair<DeclarationDescriptor, Name>>()
|
||||
|
||||
public fun addAllUnderImport(descriptor: DeclarationDescriptor) {
|
||||
if (descriptor is PackageViewDescriptor) {
|
||||
val scope = NoSubpackagesInPackageScope(descriptor)
|
||||
allUnderImportScopes.add(createFilteringScope(scope, descriptor, platformToKotlinClassMap))
|
||||
allUnderImportScopes.add(NoSubpackagesInPackageScope(descriptor))
|
||||
}
|
||||
else if (descriptor is ClassDescriptor && descriptor.getKind() != ClassKind.OBJECT) {
|
||||
allUnderImportScopes.add(descriptor.getStaticScope())
|
||||
@@ -45,12 +44,6 @@ public class Importer(private val platformToKotlinClassMap: PlatformToKotlinClas
|
||||
}
|
||||
}
|
||||
|
||||
private fun createFilteringScope(scope: JetScope, descriptor: PackageViewDescriptor, platformToKotlinClassMap: PlatformToKotlinClassMap): JetScope {
|
||||
val kotlinAnalogsForClassesInside = platformToKotlinClassMap.mapPlatformClassesInside(descriptor)
|
||||
if (kotlinAnalogsForClassesInside.isEmpty()) return scope
|
||||
return FilteringScope(scope) { descriptor -> kotlinAnalogsForClassesInside.all { it.getName() != descriptor.getName() } }
|
||||
}
|
||||
|
||||
public fun addAliasImport(descriptor: DeclarationDescriptor, aliasName: Name) {
|
||||
explicitImports.add(descriptor to aliasName)
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ public class ImportsResolver {
|
||||
) {
|
||||
@NotNull JetScope rootScope = JetModuleUtil.getSubpackagesOfRootScope(module);
|
||||
|
||||
Importer importer = new Importer(module.getPlatformToKotlinClassMap());
|
||||
Importer importer = new Importer();
|
||||
if (lookupMode == LookupMode.EVERYTHING) {
|
||||
fileScope.clearImports();
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ class LazyFileScope private(
|
||||
debugName: String
|
||||
) : ChainedScope(containingDeclaration,
|
||||
debugName,
|
||||
*(listOf(aliasImportsScope, defaultAliasImportsScope, currentPackageMembersScope, rootPackagesScope, allUnderImportsScope, defaultAllUnderImportsScope) + additionalScopes).copyToArray()) {
|
||||
*(listOf(aliasImportsScope, currentPackageMembersScope, rootPackagesScope, defaultAliasImportsScope, defaultAllUnderImportsScope, allUnderImportsScope) + additionalScopes).copyToArray()) {
|
||||
|
||||
public fun forceResolveAllImports() {
|
||||
aliasImportsScope.forceResolveAllContents()
|
||||
|
||||
@@ -98,7 +98,7 @@ class LazyImportScope(
|
||||
val directiveImportScope = WritableScopeImpl(JetScope.Empty, containingDeclaration, RedeclarationHandler.DO_NOTHING, "Scope for import '" + directive.getDebugText() + "' resolve in " + toString())
|
||||
directiveImportScope.changeLockLevel(WritableScope.LockLevel.BOTH)
|
||||
|
||||
val importer = Importer(resolveSession.getModuleDescriptor().platformToKotlinClassMap)
|
||||
val importer = Importer()
|
||||
directiveUnderResolve = directive
|
||||
|
||||
val descriptors: Collection<DeclarationDescriptor>
|
||||
|
||||
Reference in New Issue
Block a user