Can't omit default object name in imports and types

There should be only one way to denote a type (A.Default.B can't be denoted as A.B)
This commit is contained in:
Pavel V. Talanov
2015-02-16 17:45:23 +03:00
parent 640d2de5b9
commit cceb5738c8
17 changed files with 27 additions and 35 deletions
@@ -37,11 +37,6 @@ public class Importer {
else if (descriptor is ClassDescriptor && QualifiedExpressionResolver.canAllUnderImportFromClass(descriptor)) {
allUnderImportScopes.add(descriptor.getStaticScope())
allUnderImportScopes.add(descriptor.getUnsubstitutedInnerClassesScope())
val classObjectDescriptor = descriptor.getDefaultObjectDescriptor()
if (classObjectDescriptor != null) {
allUnderImportScopes.add(classObjectDescriptor.getUnsubstitutedInnerClassesScope())
}
}
}
@@ -21,6 +21,7 @@ import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.psi.util.PsiTreeUtil;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.Mutable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -108,7 +109,8 @@ public class QualifiedExpressionResolver {
JetSimpleNameExpression referenceExpression = JetPsiUtil.getLastReference(importedReference);
if (importDirective.isAllUnder()) {
if (!canAllUnderImportFrom(descriptors) && referenceExpression != null) {
trace.report(CANNOT_IMPORT_ON_DEMAND_FROM_SINGLETON.on(referenceExpression, (ClassDescriptor) descriptors.iterator().next()));
ClassDescriptor toReportOn = KotlinPackage.filterIsInstance(descriptors, ClassDescriptor.class).iterator().next();
trace.report(CANNOT_IMPORT_ON_DEMAND_FROM_SINGLETON.on(referenceExpression, toReportOn));
}
if (referenceExpression == null || !canImportMembersFrom(descriptors, referenceExpression, trace, lookupMode)) {
@@ -298,11 +300,6 @@ public class QualifiedExpressionResolver {
results.add(lookupSimpleNameReference(selector, scope, lookupMode, false));
results.add(lookupSimpleNameReference(selector, descriptor.getStaticScope(), lookupMode, true));
ClassDescriptor classObject = descriptor.getDefaultObjectDescriptor();
if (classObject != null) {
addResultsForClass(results, selector, lookupMode, classObject);
}
}