KT-3133 Editor suggest to specify the package when it already has specified

Do not suggest imports in imports and in qualified names
 #KT-3133 Fixed
This commit is contained in:
Nikolay Krasko
2012-12-06 13:52:14 +04:00
parent 1092164684
commit c224b6441d
26 changed files with 206 additions and 12 deletions
@@ -46,6 +46,7 @@ import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.Visibilities;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiUtil;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
@@ -96,8 +97,11 @@ public class ImportClassAndFunFix extends JetHintAction<JetSimpleNameExpression>
ResolveSession resolveSession = WholeProjectAnalyzerFacade.getLazyResolveSessionForFile((JetFile) element.getContainingFile());
List<FqName> result = Lists.newArrayList();
result.addAll(getClassNames(referenceName, (JetFile) file, resolveSession));
result.addAll(getJetTopLevelFunctions(referenceName, element, resolveSession, file.getProject()));
if (!isSuppressedTopLevelImportInPosition(element)) {
result.addAll(getClassNames(referenceName, (JetFile) file, resolveSession));
result.addAll(getJetTopLevelFunctions(referenceName, element, resolveSession, file.getProject()));
}
result.addAll(getJetExtensionFunctions(referenceName, element, resolveSession, file.getProject()));
return Collections2.filter(result, new Predicate<FqName>() {
@@ -109,6 +113,10 @@ public class ImportClassAndFunFix extends JetHintAction<JetSimpleNameExpression>
});
}
private static boolean isSuppressedTopLevelImportInPosition(@NotNull JetSimpleNameExpression element) {
return element.isImportDirectiveExpression() || !JetPsiUtil.isFirstPartInQualified(element);
}
private static Collection<FqName> getJetTopLevelFunctions(
@NotNull String referenceName,
@NotNull JetSimpleNameExpression expression,