inspection view: do not create empty package nodes when grouping by directory is enabled + some module-info.java contains problems

This commit is contained in:
Dmitry Batkovich
2017-11-01 05:33:16 +01:00
parent 98d50f7772
commit ec0783f0a1
4 changed files with 23 additions and 4 deletions
@@ -18,14 +18,24 @@ package com.intellij.codeInspection.reference;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.psi.PsiJavaFile;
import com.intellij.psi.util.PsiUtil;
public class RefJavaFileImpl extends RefFileImpl {
private final RefModule myRefModule;
private final boolean myModuleFile;
RefJavaFileImpl(PsiJavaFile elem, RefManager manager) {
super(elem, manager);
super(elem, manager, false);
myRefModule = manager.getRefModule(ModuleUtilCore.findModuleForPsiElement(elem));
((RefPackageImpl)getRefManager().getExtension(RefJavaManager.MANAGER).getPackage(elem.getPackageName())).add(this);
myModuleFile = PsiUtil.isModuleFile(elem);
String packageName = elem.getPackageName();
if (!packageName.isEmpty()) {
((RefPackageImpl)getRefManager().getExtension(RefJavaManager.MANAGER).getPackage(packageName)).add(this);
} else if (myRefModule != null) {
((RefModuleImpl)myRefModule).add(this);
} else {
((RefProjectImpl)manager.getRefProject()).add(this);
}
}
@Override
@@ -37,4 +47,8 @@ public class RefJavaFileImpl extends RefFileImpl {
public RefModule getModule() {
return myRefModule;
}
boolean isModuleFile() {
return myModuleFile;
}
}
@@ -346,7 +346,7 @@ public class RefJavaManagerImpl extends RefJavaManager {
@Override
@Nullable
public String getGroupName(final RefEntity entity) {
if (entity instanceof RefFile && !(entity instanceof RefJavaFileImpl)) return null;
if (entity instanceof RefFile && (!(entity instanceof RefJavaFileImpl) || ((RefJavaFileImpl)entity).isModuleFile())) return null;
return RefJavaUtil.getInstance().getPackageName(entity);
}
@@ -304,7 +304,7 @@ public class RefJavaUtilImpl extends RefJavaUtil{
@Override
@Nullable
public String getPackageName(RefEntity refEntity) {
if (refEntity instanceof RefProject) {
if (refEntity instanceof RefProject || refEntity instanceof RefJavaFileImpl && ((RefJavaFileImpl)refEntity).isModuleFile()) {
return null;
}
RefPackage refPackage = getPackage(refEntity);
@@ -28,7 +28,12 @@ import org.jetbrains.annotations.Nullable;
public class RefFileImpl extends RefElementImpl implements RefFile {
RefFileImpl(PsiFile elem, RefManager manager) {
this(elem, manager, true);
}
protected RefFileImpl(PsiFile elem, RefManager manager, boolean addParent) {
super(elem, manager);
if (!addParent) return;
final VirtualFile vFile = elem.getVirtualFile();
if (vFile == null) return;
final VirtualFile parentDirectory = vFile.getParent();