Cleanup (replaces a tuple with a data class; formatting)

This commit is contained in:
Roman Shevchenko
2017-07-04 11:16:38 +02:00
parent 2b408b2770
commit ab1017799a
3 changed files with 39 additions and 27 deletions
@@ -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);
}
@@ -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