wrong level for class in wrong file

This commit is contained in:
Alexey Kudravtsev
2014-02-14 13:32:14 +04:00
parent ac43ca6975
commit 2349f398de
2 changed files with 6 additions and 13 deletions
@@ -228,21 +228,13 @@ public class HighlightClassUtil {
}
@Nullable
static HighlightInfo checkPublicClassInRightFile(PsiKeyword keyword, PsiModifierList psiModifierList) {
static HighlightInfo checkPublicClassInRightFile(PsiClass aClass) {
// most test case classes are located in wrong files
if (ApplicationManager.getApplication().isUnitTestMode()) return null;
if (new PsiMatcherImpl(keyword)
.dot(PsiMatchers.hasText(PsiModifier.PUBLIC))
.parent(PsiMatchers.hasClass(PsiModifierList.class))
.parent(PsiMatchers.hasClass(PsiClass.class))
.parent(PsiMatchers.hasClass(PsiJavaFile.class))
.getElement() == null) {
return null;
}
PsiClass aClass = (PsiClass)keyword.getParent().getParent();
PsiJavaFile file = (PsiJavaFile)aClass.getContainingFile();
PsiFile containingFile = aClass.getContainingFile();
if (!aClass.hasModifierProperty(PsiModifier.PUBLIC) || !(containingFile instanceof PsiJavaFile)) return null;
PsiJavaFile file = (PsiJavaFile)containingFile;
VirtualFile virtualFile = file.getVirtualFile();
HighlightInfo errorResult = null;
if (virtualFile != null && !aClass.getName().equals(virtualFile.getNameWithoutExtension())) {
@@ -251,6 +243,7 @@ public class HighlightClassUtil {
errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).
range(aClass, range.getStartOffset(), range.getEndOffset()).
descriptionAndTooltip(message).create();
PsiModifierList psiModifierList = aClass.getModifierList();
QuickFixAction.registerQuickFixAction(errorResult,
QUICK_FIX_FACTORY.createModifierListFix(psiModifierList, PsiModifier.PUBLIC, false, false));
PsiClass[] classes = file.getClasses();
@@ -394,6 +394,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkEnumMustNotBeLocal(aClass));
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkImplicitThisReferenceBeforeSuper(aClass, myJavaSdkVersion));
if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkClassAndPackageConflict(aClass));
if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkPublicClassInRightFile(aClass));
}
@Override
@@ -713,7 +714,6 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
PsiModifierList psiModifierList = (PsiModifierList)parent;
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkNotAllowedModifier(keyword, psiModifierList));
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkIllegalModifierCombination(keyword, psiModifierList));
if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkPublicClassInRightFile(keyword, psiModifierList));
if (PsiModifier.ABSTRACT.equals(text) && psiModifierList.getParent() instanceof PsiMethod) {
if (!myHolder.hasErrorResults()) {
myHolder.add(HighlightMethodUtil.checkAbstractMethodInConcreteClass((PsiMethod)psiModifierList.getParent(), keyword));