mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
[java, quickfix] Refactor module access checking method and improve module naming. IJ-CR-125003
GitOrigin-RevId: 078deb60a0fbf497020fe73bd99e170171a30381
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3d77d84399
commit
1b565a13b9
@@ -34,11 +34,11 @@ public interface JavaModuleSystemEx extends JavaModuleSystem {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
default ErrorWithFixes getProblem(@NotNull PsiClass target, @NotNull PsiElement place) {
|
||||
default ErrorWithFixes checkAccess(@NotNull PsiClass target, @NotNull PsiElement place) {
|
||||
String packageName = PsiUtil.getPackageName(target);
|
||||
return packageName != null ? getProblem(packageName, target.getContainingFile(), place) : null;
|
||||
return packageName != null ? checkAccess(packageName, target.getContainingFile(), place) : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
ErrorWithFixes getProblem(@NotNull String targetPackageName, @Nullable PsiFile targetFile, @NotNull PsiElement place);
|
||||
ErrorWithFixes checkAccess(@NotNull String targetPackageName, @Nullable PsiFile targetFile, @NotNull PsiElement place);
|
||||
}
|
||||
@@ -2204,14 +2204,14 @@ public final class HighlightUtil {
|
||||
}
|
||||
|
||||
String containerName = getContainerName(refElement, result.getSubstitutor());
|
||||
ErrorWithFixes problem = getModuleProblem(resolved, ref, symbolName, containerName);
|
||||
ErrorWithFixes problem = checkModuleAccess(resolved, ref, symbolName, containerName);
|
||||
if (problem != null) return Pair.pair(problem.message, problem.fixes);
|
||||
return Pair.pair(JavaErrorBundle.message("visibility.access.problem", symbolName, containerName), null);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Nls
|
||||
static ErrorWithFixes getModuleProblem(@NotNull PsiElement resolved, @NotNull PsiElement ref, @NotNull JavaResolveResult result) {
|
||||
static ErrorWithFixes checkModuleAccess(@NotNull PsiElement resolved, @NotNull PsiElement ref, @NotNull JavaResolveResult result) {
|
||||
PsiElement refElement = resolved;
|
||||
PsiClass packageLocalClass = HighlightFixUtil.getPackageLocalClassInTheMiddle(ref);
|
||||
if (packageLocalClass != null) {
|
||||
@@ -2222,23 +2222,23 @@ public final class HighlightUtil {
|
||||
String containerName = (resolved instanceof PsiModifierListOwner modifierListOwner)
|
||||
? getContainerName(modifierListOwner, result.getSubstitutor())
|
||||
: null;
|
||||
return getModuleProblem(resolved, ref, symbolName, containerName);
|
||||
return checkModuleAccess(resolved, ref, symbolName, containerName);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Nls
|
||||
private static ErrorWithFixes getModuleProblem(@NotNull PsiElement target,
|
||||
@NotNull PsiElement place,
|
||||
@Nullable String symbolName,
|
||||
@Nullable String containerName) {
|
||||
private static ErrorWithFixes checkModuleAccess(@NotNull PsiElement target,
|
||||
@NotNull PsiElement place,
|
||||
@Nullable String symbolName,
|
||||
@Nullable String containerName) {
|
||||
for (JavaModuleSystem moduleSystem : JavaModuleSystem.EP_NAME.getExtensionList()) {
|
||||
if (moduleSystem instanceof JavaModuleSystemEx system) {
|
||||
if (target instanceof PsiClass targetClass) {
|
||||
final ErrorWithFixes problem = system.getProblem(targetClass, place);
|
||||
final ErrorWithFixes problem = system.checkAccess(targetClass, place);
|
||||
if (problem != null) return problem;
|
||||
}
|
||||
if (target instanceof PsiPackage targetPackage) {
|
||||
final ErrorWithFixes problem = system.getProblem(targetPackage.getQualifiedName(), null, place);
|
||||
final ErrorWithFixes problem = system.checkAccess(targetPackage.getQualifiedName(), null, place);
|
||||
if (problem != null) return problem;
|
||||
}
|
||||
}
|
||||
@@ -3499,7 +3499,7 @@ public final class HighlightUtil {
|
||||
PsiTreeUtil.getParentOfType(ref, PsiPackageStatement.class, true) != null ||
|
||||
resolved instanceof PsiPackage && ref.getParent() instanceof PsiJavaCodeReferenceElement;
|
||||
|
||||
final ErrorWithFixes moduleProblem = getModuleProblem(resolved, ref, result);
|
||||
final ErrorWithFixes moduleProblem = checkModuleAccess(resolved, ref, result);
|
||||
if (!skipValidityChecks && !(result.isValidResult() && moduleProblem == null)) {
|
||||
if (moduleProblem != null) {
|
||||
HighlightInfo.Builder info = HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(findPackagePrefix(ref))
|
||||
|
||||
@@ -223,7 +223,7 @@ public final class LambdaHighlightingUtil {
|
||||
return info;
|
||||
}
|
||||
|
||||
final ErrorWithFixes moduleProblem = HighlightUtil.getModuleProblem(psiClass, expression, resolveResult);
|
||||
final ErrorWithFixes moduleProblem = HighlightUtil.checkModuleAccess(psiClass, expression, resolveResult);
|
||||
if (moduleProblem != null) {
|
||||
HighlightInfo.Builder info =
|
||||
HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression).descriptionAndTooltip(moduleProblem.message);
|
||||
|
||||
@@ -19,11 +19,12 @@ import com.intellij.openapi.roots.impl.libraries.LibraryEx;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.ui.popup.JBPopup;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.util.NlsContexts;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.openapi.util.text.HtmlChunk;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiJavaModule;
|
||||
import com.intellij.psi.PsiNameHelper;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.ui.SimpleListCellRenderer;
|
||||
import com.intellij.util.concurrency.AppExecutorUtil;
|
||||
@@ -140,9 +141,13 @@ class AddLibraryDependencyFix extends OrderEntryFix {
|
||||
return new IntentionPreviewInfo.Html(HtmlChunk.text(message));
|
||||
}
|
||||
|
||||
@NlsContexts.Label
|
||||
@NlsSafe
|
||||
private String getLibraryName(@NotNull Library library) {
|
||||
final PsiJavaModule javaModule = ReadAction.compute(() -> JavaModuleGraphUtil.findDescriptorByLibrary(library, myCurrentModule.getProject()));
|
||||
return javaModule != null ? javaModule.getName() : library.getPresentableName();
|
||||
final PsiJavaModule javaModule = JavaModuleGraphUtil.findDescriptorByLibrary(library, myCurrentModule.getProject());
|
||||
if (javaModule != null && PsiNameHelper.isValidModuleName(javaModule.getName(), javaModule)) {
|
||||
return javaModule.getName();
|
||||
} else {
|
||||
return library.getPresentableName();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@ import com.intellij.codeInsight.daemon.impl.analysis.JavaModuleGraphUtil;
|
||||
import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo;
|
||||
import com.intellij.ide.nls.NlsMessages;
|
||||
import com.intellij.java.JavaBundle;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
@@ -186,7 +185,11 @@ class AddModuleDependencyFix extends OrderEntryFix {
|
||||
|
||||
@NotNull
|
||||
private String getModuleName(@NotNull Module module) {
|
||||
final PsiJavaModule javaModule = ReadAction.compute(() -> JavaModuleGraphUtil.findDescriptorByModule(module, myScope == TEST));
|
||||
return javaModule != null ? javaModule.getName() : module.getName();
|
||||
final PsiJavaModule javaModule = JavaModuleGraphUtil.findDescriptorByModule(module, myScope == TEST);
|
||||
if (javaModule != null && PsiNameHelper.isValidModuleName(javaModule.getName(), javaModule)) {
|
||||
return javaModule.getName();
|
||||
} else {
|
||||
return module.getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,7 @@ internal class JavaPlatformModuleSystem : JavaModuleSystemEx {
|
||||
return getProblem(targetPackageName, targetFile, place, true, this::isExported) == null
|
||||
}
|
||||
|
||||
override fun getProblem(targetPackageName: String, targetFile: PsiFile?, place: PsiElement): ErrorWithFixes? {
|
||||
override fun checkAccess(targetPackageName: String, targetFile: PsiFile?, place: PsiElement): ErrorWithFixes? {
|
||||
return getProblem(targetPackageName, targetFile, place, false) { use, _, target, _, _ -> JavaModuleGraphUtil.reads(use, target) }
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.intellij.codeInsight.daemon.quickFix.ActionHint;
|
||||
import com.intellij.codeInsight.daemon.quickFix.LightQuickFixTestCase;
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.application.ex.PathManagerEx;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
@@ -168,8 +167,12 @@ public class OrderEntryTest extends DaemonAnalyzerTestCase {
|
||||
|
||||
@NotNull
|
||||
private static String getModuleName(@NotNull Module module) {
|
||||
final PsiJavaModule javaModule = ReadAction.compute(() -> JavaModuleGraphUtil.findDescriptorByModule(module, false));
|
||||
return javaModule != null ? javaModule.getName() : module.getName();
|
||||
final PsiJavaModule javaModule = JavaModuleGraphUtil.findDescriptorByModule(module, false);
|
||||
if (javaModule != null && PsiNameHelper.isValidModuleName(javaModule.getName(), javaModule)) {
|
||||
return javaModule.getName();
|
||||
} else {
|
||||
return module.getName();
|
||||
}
|
||||
}
|
||||
|
||||
public void testAddJunit() {
|
||||
|
||||
Reference in New Issue
Block a user