reject imports from default package (IDEA-138822; IDEA-154024)

This commit is contained in:
Anna Kozlova
2016-06-06 20:09:16 +03:00
parent 5f7200897e
commit cb071c57a6
4 changed files with 22 additions and 32 deletions

View File

@@ -2752,12 +2752,13 @@ public class HighlightUtil extends HighlightUtilBase {
highlightInfo = HighlightControlFlowUtil.checkVariableMustBeFinal((PsiVariable)resolved, ref, languageLevel);
}
else if (resolved instanceof PsiClass) {
if (Comparing.strEqual(((PsiClass)resolved).getQualifiedName(), ((PsiClass)resolved).getName())) {
final PsiElement parent = ref.getParent();
if (parent instanceof PsiImportStaticReferenceElement || parent instanceof PsiImportStatementBase) {
String description = JavaErrorMessages.message("cannot.resolve.symbol", refName.getText());
return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(refName).descriptionAndTooltip(description).create();
}
final PsiFile fileWithImportedClass = resolved.getContainingFile();
if (((PsiClass)resolved).getContainingClass() == null &&
fileWithImportedClass instanceof PsiClassOwner &&
PsiTreeUtil.getParentOfType(ref, PsiImportStatementBase.class) != null &&
StringUtil.isEmptyOrSpaces(((PsiClassOwner)fileWithImportedClass).getPackageName())) {
String description = JavaErrorMessages.message("cannot.resolve.symbol", refName.getText());
return HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(refName).descriptionAndTooltip(description).create();
}
}
return highlightInfo;

View File

@@ -1,5 +1,8 @@
import static <error descr="Cannot resolve symbol 'MyConstants'">MyConstants</error>.*;
import <error descr="Cannot resolve symbol 'MyConstants'">MyConstants</error>;
import <error descr="Cannot resolve symbol 'MyConstants'">MyConstants</error>.Inner;
import static <error descr="Cannot resolve symbol 'MyConstants'">MyConstants</error>.Inner.*;
import static <error descr="Cannot resolve symbol 'MyConstants'">MyConstants</error>.Inner.INNER_CONSTANT;
class MyClient
{
@@ -9,4 +12,8 @@ class MyClient
class MyConstants
{
public static final int CONSTANT = 1;
public static class Inner {
public static final String INNER_CONSTANT = "const";
}
}

View File

@@ -1,19 +1,10 @@
import java.util.*;
import Node.Details;
class Node<E> {
public class Details {
public E data;
}
public Details addNode(Node<E> child) {
return new Details();
}
}
import java.util.Map.Entry;
class Test {
public static void main(String[] args) {
Map<String, Details> m = null;
Map<String, Node.Details> sorted1;
Map<String, Entry> m = null;
Map<String, Map.Entry> sorted1;
sorted1 = m;
}
}

View File

@@ -1,19 +1,10 @@
import java.util.*;
import Node.Details;
class Node<E> {
public class Details {
public E data;
}
public Details addNode(Node<E> child) {
return new Details();
}
}
import java.util.Map.Entry;
class Test {
public static void main(String[] args) {
Map<String, Details> m = null;
Map<String, Node.Details> sorted1;
sorted1 = m;
Map<String, Entry> m = null;
Map<String, Map.Entry> sorted1;
sorted1 = m;
}
}
}