[java] add module dependency: remove redundant type parameters, simplify

GitOrigin-RevId: bc13b19f59550c6c8741b9e4f59b3e7e5f414436
This commit is contained in:
Anna Kozlova
2025-04-12 14:41:31 +00:00
committed by intellij-monorepo-bot
parent 4a0eba89cb
commit 41580a5b2c
2 changed files with 22 additions and 22 deletions
@@ -46,11 +46,10 @@ class AddModuleDependencyFix extends OrderEntryFix {
private final DependencyScope myScope;
private final boolean myExported;
<T extends PsiMember>
AddModuleDependencyFix(@NotNull PsiReference reference,
@NotNull Module currentModule,
@NotNull DependencyScope scope,
@NotNull List<? extends T> classes) {
@NotNull List<? extends PsiMember> members) {
super(reference);
myCurrentModule = currentModule;
LinkedHashSet<Module> modules = new LinkedHashSet<>();
@@ -59,11 +58,11 @@ class AddModuleDependencyFix extends OrderEntryFix {
PsiElement psiElement = reference.getElement();
ModuleRootManager rootManager = ModuleRootManager.getInstance(currentModule);
for (T aClass : classes) {
if (isAccessible(aClass, psiElement)) {
Module classModule = ModuleUtilCore.findModuleForFile(aClass.getContainingFile());
if (classModule != null && classModule != currentModule && !dependsWithScope(rootManager, classModule, scope)) {
modules.add(classModule);
for (PsiMember member : members) {
if (isAccessible(member, psiElement)) {
Module memberModule = ModuleUtilCore.findModuleForFile(member.getContainingFile());
if (memberModule != null && memberModule != currentModule && !dependsWithScope(rootManager, memberModule, scope)) {
modules.add(memberModule);
}
}
}
@@ -90,7 +89,7 @@ class AddModuleDependencyFix extends OrderEntryFix {
private static boolean isAccessible(PsiMember member, PsiElement refElement) {
PsiClass containingClass = member.getContainingClass();
return JavaResolveUtil.isAccessible(member, containingClass, member.getModifierList(), refElement, member instanceof PsiClass ? ((PsiClass)member) : containingClass, null);
return JavaResolveUtil.isAccessible(member, containingClass, member.getModifierList(), refElement, member instanceof PsiClass m ? m : containingClass, null);
}
@Override
@@ -26,7 +26,7 @@ import com.intellij.psi.impl.light.LightJavaModule;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.PsiShortNamesCache;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.Function;
import com.intellij.util.ObjectUtils;
import com.intellij.util.SmartList;
import com.intellij.util.ThreeState;
import com.intellij.util.containers.ContainerUtil;
@@ -37,6 +37,7 @@ import org.jetbrains.uast.*;
import java.io.File;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -92,10 +93,10 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
}, r -> r.getCanonicalText());
}
public static @NotNull <T extends PsiMember> List<@NotNull LocalQuickFix> registerFixes(@NotNull PsiReference reference,
@NotNull List<? super IntentionAction> registrar,
@NotNull Function<? super String, T[]> shortReferenceNameToClassesLookup,
@NotNull Function<PsiReference, String> calculateCanonicalText) {
public static @NotNull List<@NotNull LocalQuickFix> registerFixes(@NotNull PsiReference reference,
@NotNull List<? super IntentionAction> registrar,
@NotNull Function<? super String, ? extends PsiMember[]> shortReferenceNameToClassesLookup,
@NotNull Function<PsiReference, String> calculateCanonicalText) {
PsiElement psiElement = reference.getElement();
String shortReferenceName = reference.getRangeInElement().substring(psiElement.getText());
@@ -126,8 +127,8 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
return result;
}
T[] classes = shortReferenceNameToClassesLookup.fun(shortReferenceName);
List<T> allowedDependencies = filterAllowedDependencies(psiElement, classes);
PsiMember[] classes = shortReferenceNameToClassesLookup.apply(shortReferenceName);
List<PsiMember> allowedDependencies = filterAllowedDependencies(psiElement, classes);
if (allowedDependencies.isEmpty()) {
return result;
}
@@ -147,8 +148,8 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
Set<Library> excluded = new HashSet<>();
Set<Library> withTestScope = new HashSet<>();
ModuleFileIndex moduleFileIndex = ModuleRootManager.getInstance(currentModule).getFileIndex();
for (T aClass : allowedDependencies) {
if (!facade.getResolveHelper().isAccessible(aClass, psiElement, aClass instanceof PsiClass ? (PsiClass)aClass : null)) continue;
for (PsiMember aClass : allowedDependencies) {
if (!facade.getResolveHelper().isAccessible(aClass, psiElement, ObjectUtils.tryCast(aClass, PsiClass.class))) continue;
PsiFile psiFile = aClass.getContainingFile();
if (psiFile == null) continue;
VirtualFile virtualFile = psiFile.getVirtualFile();
@@ -161,7 +162,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
if (files.length == 0) continue;
final VirtualFile jar = files[0];
String qualifiedName = aClass instanceof PsiClass ? ((PsiClass)aClass).getQualifiedName() : null;
String qualifiedName = aClass instanceof PsiClass cls ? cls.getQualifiedName() : null;
if (qualifiedName == null) continue;
if (jar == null ||
@@ -294,7 +295,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
@NotNull Function<PsiReference, String> calculateCanonicalText,
@NotNull List<? super @NotNull LocalQuickFix> result) {
JavaPsiFacade facade = JavaPsiFacade.getInstance(currentModule.getProject());
String fullReferenceText = calculateCanonicalText.fun(reference);
String fullReferenceText = calculateCanonicalText.apply(reference);
ThreeState refToAnnotation = isReferenceToAnnotation(psiElement);
for (ExternalLibraryResolver resolver : ExternalLibraryResolver.EP_NAME.getExtensionList()) {
ExternalClassResolveResult resolveResult = resolver.resolveClass(shortReferenceName, refToAnnotation, currentModule);
@@ -320,11 +321,11 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
}
}
private static @NotNull <T extends PsiMember> List<T> filterAllowedDependencies(@NotNull PsiElement element, T @NotNull [] classes) {
private static @NotNull List<PsiMember> filterAllowedDependencies(@NotNull PsiElement element, PsiMember @NotNull [] classes) {
DependencyValidationManager dependencyValidationManager = DependencyValidationManager.getInstance(element.getProject());
PsiFile fromFile = element.getContainingFile();
List<T> result = new ArrayList<>();
for (T psiClass : classes) {
List<PsiMember> result = new ArrayList<>();
for (PsiMember psiClass : classes) {
PsiFile containingFile = psiClass.getContainingFile();
if (containingFile != null && dependencyValidationManager.getViolatorDependencyRule(fromFile, containingFile) == null) {
result.add(psiClass);