mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Cleanup (replaces a tuple with a data class; formatting)
This commit is contained in:
@@ -16,19 +16,34 @@
|
||||
package com.intellij.codeInsight;
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.psi.JavaModuleSystem;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@ApiStatus.Experimental
|
||||
public interface JavaModuleSystemEx extends JavaModuleSystem {
|
||||
@Nullable Pair<String, List<IntentionAction>> checkAccess(@NotNull PsiPackage target, @NotNull PsiElement place);
|
||||
@Nullable Pair<String, List<IntentionAction>> checkAccess(@NotNull PsiClass target, @NotNull PsiElement place);
|
||||
final class ErrorWithFixes {
|
||||
public final @NotNull @Nls String message;
|
||||
public final @NotNull List<IntentionAction> fixes;
|
||||
|
||||
public ErrorWithFixes(@NotNull @Nls String message) {
|
||||
this(message, Collections.emptyList());
|
||||
}
|
||||
|
||||
public ErrorWithFixes(@NotNull @Nls String message, @NotNull List<IntentionAction> fixes) {
|
||||
this.message = message;
|
||||
this.fixes = fixes;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable ErrorWithFixes checkAccess(@NotNull PsiPackage target, @NotNull PsiElement place);
|
||||
@Nullable ErrorWithFixes checkAccess(@NotNull PsiClass target, @NotNull PsiElement place);
|
||||
}
|
||||
+12
-11
@@ -18,6 +18,7 @@ package com.intellij.codeInsight.daemon.impl.analysis;
|
||||
import com.intellij.codeInsight.ContainerProvider;
|
||||
import com.intellij.codeInsight.ExceptionUtil;
|
||||
import com.intellij.codeInsight.JavaModuleSystemEx;
|
||||
import com.intellij.codeInsight.JavaModuleSystemEx.ErrorWithFixes;
|
||||
import com.intellij.codeInsight.daemon.JavaErrorMessages;
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
|
||||
import com.intellij.codeInsight.daemon.impl.HighlightInfoType;
|
||||
@@ -1747,40 +1748,40 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
}
|
||||
else {
|
||||
String containerName = getContainerName(refElement, result.getSubstitutor());
|
||||
Pair<String, List<IntentionAction>> problem = checkModuleAccess(resolved, reference, symbolName, containerName);
|
||||
if (problem != null) return problem;
|
||||
ErrorWithFixes problem = checkModuleAccess(resolved, reference, symbolName, containerName);
|
||||
if (problem != null) return pair(problem.message, problem.fixes);
|
||||
return pair(JavaErrorMessages.message("visibility.access.problem", symbolName, containerName), null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Pair<String, List<IntentionAction>> checkModuleAccess(PsiElement target, PsiElement place, String symbolName, String containerName) {
|
||||
private static ErrorWithFixes checkModuleAccess(PsiElement target, PsiElement place, String symbolName, String containerName) {
|
||||
ErrorWithFixes error = null;
|
||||
for (JavaModuleSystem moduleSystem : JavaModuleSystem.EP_NAME.getExtensions()) {
|
||||
Pair<String, List<IntentionAction>> problem = null;
|
||||
if (moduleSystem instanceof JavaModuleSystemEx) {
|
||||
problem = checkAccess((JavaModuleSystemEx)moduleSystem, target, place);
|
||||
error = checkAccess((JavaModuleSystemEx)moduleSystem, target, place);
|
||||
}
|
||||
else if (!isAccessible(moduleSystem, target, place)) {
|
||||
String message = JavaErrorMessages.message("visibility.module.access.problem", symbolName, containerName, moduleSystem.getName());
|
||||
problem = pair(message, Collections.emptyList());
|
||||
error = new ErrorWithFixes(message);
|
||||
}
|
||||
if (problem != null) {
|
||||
return problem;
|
||||
if (error != null) {
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Pair<String, List<IntentionAction>> checkAccess(JavaModuleSystemEx system, PsiElement target, PsiElement place) {
|
||||
if (target instanceof PsiPackage) return system.checkAccess(((PsiPackage)target), place);
|
||||
private static ErrorWithFixes checkAccess(JavaModuleSystemEx system, PsiElement target, PsiElement place) {
|
||||
if (target instanceof PsiClass) return system.checkAccess(((PsiClass)target), place);
|
||||
if (target instanceof PsiPackage) return system.checkAccess(((PsiPackage)target), place);
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean isAccessible(JavaModuleSystem system, PsiElement target, PsiElement place) {
|
||||
if (target instanceof PsiPackage) return system.isAccessible(((PsiPackage)target), place);
|
||||
if (target instanceof PsiClass) return system.isAccessible(((PsiClass)target), place);
|
||||
if (target instanceof PsiPackage) return system.isAccessible(((PsiPackage)target), place);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,12 +16,11 @@
|
||||
package com.intellij.psi.impl
|
||||
|
||||
import com.intellij.codeInsight.JavaModuleSystemEx
|
||||
import com.intellij.codeInsight.JavaModuleSystemEx.ErrorWithFixes
|
||||
import com.intellij.codeInsight.daemon.JavaErrorMessages
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.JavaModuleGraphUtil
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.AddRequiredModuleFix
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import com.intellij.openapi.roots.ProjectFileIndex
|
||||
import com.intellij.openapi.util.Pair
|
||||
import com.intellij.openapi.vfs.jrt.JrtFileSystem
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.light.LightJavaModule
|
||||
@@ -36,7 +35,7 @@ class JavaPlatformModuleSystem : JavaModuleSystemEx {
|
||||
override fun checkAccess(target: PsiPackage, place: PsiElement) = checkAccess(target, place, false)
|
||||
override fun checkAccess(target: PsiClass, place: PsiElement) = checkAccess(target, place, false)
|
||||
|
||||
private fun checkAccess(target: PsiClass, place: PsiElement, quick: Boolean): Pair<String, List<IntentionAction>>? {
|
||||
private fun checkAccess(target: PsiClass, place: PsiElement, quick: Boolean): ErrorWithFixes? {
|
||||
val useFile = place.containingFile?.originalFile
|
||||
if (useFile != null && PsiUtil.isLanguageLevel9OrHigher(useFile)) {
|
||||
val targetFile = target.containingFile
|
||||
@@ -48,7 +47,7 @@ class JavaPlatformModuleSystem : JavaModuleSystemEx {
|
||||
return null
|
||||
}
|
||||
|
||||
private fun checkAccess(target: PsiPackage, place: PsiElement, quick: Boolean): Pair<String, List<IntentionAction>>? {
|
||||
private fun checkAccess(target: PsiPackage, place: PsiElement, quick: Boolean): ErrorWithFixes? {
|
||||
val useFile = place.containingFile?.originalFile
|
||||
if (useFile != null && PsiUtil.isLanguageLevel9OrHigher(useFile)) {
|
||||
val useVFile = useFile.virtualFile
|
||||
@@ -68,12 +67,9 @@ class JavaPlatformModuleSystem : JavaModuleSystemEx {
|
||||
return null
|
||||
}
|
||||
|
||||
private val ERR = Pair("-", emptyList<IntentionAction>())
|
||||
private val ERR = ErrorWithFixes("-")
|
||||
|
||||
private fun checkAccess(target: PsiFileSystemItem,
|
||||
place: PsiFileSystemItem,
|
||||
packageName: String,
|
||||
quick: Boolean): Pair<String, List<IntentionAction>>? {
|
||||
private fun checkAccess(target: PsiFileSystemItem, place: PsiFileSystemItem, packageName: String, quick: Boolean): ErrorWithFixes? {
|
||||
val targetModule = JavaModuleGraphUtil.findDescriptorByElement(target)
|
||||
val useModule = JavaModuleGraphUtil.findDescriptorByElement(place)
|
||||
|
||||
@@ -86,20 +82,20 @@ class JavaPlatformModuleSystem : JavaModuleSystemEx {
|
||||
}
|
||||
if (!(targetModule is LightJavaModule || JavaModuleGraphUtil.exports(targetModule, packageName, useModule))) {
|
||||
return if (quick) ERR
|
||||
else if (useModule == null) Pair(JavaErrorMessages.message("module.access.from.unnamed", packageName, targetModule.name), emptyList())
|
||||
else Pair(JavaErrorMessages.message("module.access.from.named", packageName, targetModule.name, useModule.name), emptyList())
|
||||
else if (useModule == null) ErrorWithFixes(JavaErrorMessages.message("module.access.from.unnamed", packageName, targetModule.name))
|
||||
else ErrorWithFixes(JavaErrorMessages.message("module.access.from.named", packageName, targetModule.name, useModule.name))
|
||||
}
|
||||
if (useModule == null) {
|
||||
return null
|
||||
}
|
||||
if (!(useModule.name == PsiJavaModule.JAVA_BASE || JavaModuleGraphUtil.reads(useModule, targetModule))) {
|
||||
return if (quick) ERR else Pair(
|
||||
return if (quick) ERR else ErrorWithFixes(
|
||||
JavaErrorMessages.message("module.access.does.not.read", packageName, targetModule.name, useModule.name),
|
||||
listOf(AddRequiredModuleFix(useModule, targetModule.name)))
|
||||
}
|
||||
}
|
||||
else if (useModule != null) {
|
||||
return if (quick) ERR else Pair(JavaErrorMessages.message("module.access.to.unnamed", packageName, useModule.name), emptyList())
|
||||
return if (quick) ERR else ErrorWithFixes(JavaErrorMessages.message("module.access.to.unnamed", packageName, useModule.name))
|
||||
}
|
||||
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user