This commit is contained in:
Valentin Kipyatkov
2016-01-13 18:47:52 +03:00
parent 89843685c2
commit 866f3f189f
@@ -30,7 +30,8 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.resolve.scopes.ImportingScope import org.jetbrains.kotlin.resolve.scopes.ImportingScope
import org.jetbrains.kotlin.resolve.scopes.LexicalScope import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.resolve.scopes.receivers.* import org.jetbrains.kotlin.resolve.scopes.receivers.*
import org.jetbrains.kotlin.resolve.scopes.utils.* import org.jetbrains.kotlin.resolve.scopes.utils.findClassifier
import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator
import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext
@@ -142,14 +143,11 @@ class QualifiedExpressionResolver(val symbolUsageValidator: SymbolUsageValidator
if (packageFragmentForVisibilityCheck is DeclarationDescriptorWithSource && packageFragmentForVisibilityCheck.source == SourceElement.NO_SOURCE) { if (packageFragmentForVisibilityCheck is DeclarationDescriptorWithSource && packageFragmentForVisibilityCheck.source == SourceElement.NO_SOURCE) {
PackageFragmentWithCustomSource(packageFragmentForVisibilityCheck, KotlinSourceElement(importDirective.getContainingKtFile())) PackageFragmentWithCustomSource(packageFragmentForVisibilityCheck, KotlinSourceElement(importDirective.getContainingKtFile()))
} }
else { else {
packageFragmentForVisibilityCheck packageFragmentForVisibilityCheck
} }
if (!importDirective.isAllUnder) { if (importDirective.isAllUnder) {
return processSingleImport(moduleDescriptor, trace, importDirective, path, lastPart, packageFragmentForCheck)
}
val packageOrClassDescriptor = resolveToPackageOrClass(path, moduleDescriptor, trace, packageFragmentForCheck, val packageOrClassDescriptor = resolveToPackageOrClass(path, moduleDescriptor, trace, packageFragmentForCheck,
scopeForFirstPart = null, position = QualifierPosition.IMPORT) ?: return null scopeForFirstPart = null, position = QualifierPosition.IMPORT) ?: return null
if (packageOrClassDescriptor is ClassDescriptor && packageOrClassDescriptor.kind.isSingleton) { if (packageOrClassDescriptor is ClassDescriptor && packageOrClassDescriptor.kind.isSingleton) {
@@ -157,10 +155,18 @@ class QualifiedExpressionResolver(val symbolUsageValidator: SymbolUsageValidator
} }
return AllUnderImportScope(packageOrClassDescriptor) return AllUnderImportScope(packageOrClassDescriptor)
} }
else {
return processSingleImport(moduleDescriptor, trace, importDirective, path, lastPart, packageFragmentForCheck)
}
}
private fun processSingleImport( private fun processSingleImport(
moduleDescriptor: ModuleDescriptor, trace: BindingTrace, importDirective: KtImportDirective, moduleDescriptor: ModuleDescriptor,
path: List<QualifierPart>, lastPart: QualifierPart, packageFragmentForVisibilityCheck: PackageFragmentDescriptor? trace: BindingTrace,
importDirective: KtImportDirective,
path: List<QualifierPart>,
lastPart: QualifierPart,
packageFragmentForVisibilityCheck: PackageFragmentDescriptor?
): SingleImportScope? { ): SingleImportScope? {
val aliasName = KtPsiUtil.getAliasName(importDirective) val aliasName = KtPsiUtil.getAliasName(importDirective)
if (aliasName == null) { if (aliasName == null) {