diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java index bcd2424fb754..0698df0e079e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,6 +40,7 @@ import com.intellij.psi.infos.MethodCandidateInfo; import com.intellij.psi.util.*; import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.ui.ColorUtil; +import com.intellij.util.VisibilityUtil; import com.intellij.util.containers.MostlySingularMultiMap; import com.intellij.util.ui.UIUtil; import com.intellij.xml.util.XmlStringUtil; @@ -100,9 +101,9 @@ public class HighlightMethodUtil { int superAccessLevel = PsiUtil.getAccessLevel(superMethod.getModifierList()); if (accessLevel < superAccessLevel) { String description = JavaErrorMessages.message("weaker.privileges", - createClashMethodMessage(method, superMethod, true), - accessModifier, - PsiUtil.getAccessModifier(superAccessLevel)); + createClashMethodMessage(method, superMethod, true), + VisibilityUtil.toPresentableText(accessModifier), + PsiUtil.getAccessModifier(superAccessLevel)); TextRange textRange; if (includeRealPositionInfo) { if (modifierList.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java index 78a0c28c39ef..d89c92bd8b77 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.usageView.UsageInfo; import com.intellij.util.Processor; +import com.intellij.util.VisibilityUtil; import com.intellij.util.containers.ContainerUtil; import com.siyeh.ig.fixes.ChangeModifierFix; import com.siyeh.ig.psiutils.MethodUtils; @@ -185,12 +186,14 @@ class AccessCanBeTightenedInspection extends BaseJavaBatchLocalInspectionTool { log(member.getName() + " unused; ignore"); return; // do not propose private for unused method } + int max = maxLevel.get(); if (max == PsiUtil.ACCESS_LEVEL_PRIVATE && memberClass == null) { max = suggestPackageLocal(member); } - log(member.getName()+": effective level is '" + PsiUtil.getAccessModifier(max) + "'"); + String maxModifier = PsiUtil.getAccessModifier(max); + log(member.getName() + ": effective level is '" + maxModifier + "'"); if (max < currentLevel) { if (max == PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL && member instanceof PsiClass && childMembersAreUsedOutsideMyPackage.contains(member)) { @@ -205,7 +208,7 @@ class AccessCanBeTightenedInspection extends BaseJavaBatchLocalInspectionTool { } }); assert toHighlight != null : member +" ; " + ((PsiNameIdentifierOwner)member).getNameIdentifier() + "; "+ memberModifierList.getText(); - myHolder.registerProblem(toHighlight, "Access can be "+PsiUtil.getAccessModifier(max), new ChangeModifierFix(PsiUtil.getAccessModifier(max))); + myHolder.registerProblem(toHighlight, "Access can be " + VisibilityUtil.toPresentableText(maxModifier), new ChangeModifierFix(maxModifier)); } } diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index bd702c64f57a..302bfa32f82d 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -353,10 +353,11 @@ public final class PsiUtil extends PsiUtilCore { } @PsiModifier.ModifierConstant - @Nullable + @NotNull public static String getAccessModifier(@AccessLevel int accessLevel) { + assert accessLevel > 0 && accessLevel <= accessModifiers.length : accessLevel; @SuppressWarnings("UnnecessaryLocalVariable") @PsiModifier.ModifierConstant - final String modifier = accessLevel > accessModifiers.length ? null : accessModifiers[accessLevel - 1]; + final String modifier = accessModifiers[accessLevel - 1]; return modifier; } diff --git a/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java b/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java index 04aa459203ec..970c25f08725 100644 --- a/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java +++ b/java/java-psi-api/src/com/intellij/util/VisibilityUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; public class VisibilityUtil { @@ -107,7 +108,8 @@ public class VisibilityUtil { } @Nls - public static String getVisibilityStringToDisplay(PsiMember member) { + @NotNull + public static String getVisibilityStringToDisplay(@NotNull PsiMember member) { if (member.hasModifierProperty(PsiModifier.PUBLIC)) { return toPresentableText(PsiModifier.PUBLIC); } @@ -120,7 +122,8 @@ public class VisibilityUtil { return toPresentableText(PsiModifier.PACKAGE_LOCAL); } - public static String toPresentableText(@PsiModifier.ModifierConstant String modifier) { + @NotNull + public static String toPresentableText(@PsiModifier.ModifierConstant @NotNull String modifier) { return PsiBundle.visibilityPresentation(modifier); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AccessLevelClash.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AccessLevelClash.java index 7fa62b8aa01e..95f045d64325 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AccessLevelClash.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AccessLevelClash.java @@ -4,7 +4,7 @@ interface i { } public class a implements i { - void ff() {} + void ff() {} } class ai implements i { public int ff() { return 0;} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticOverride.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticOverride.java index be1914e180dc..0e946e6e8e15 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticOverride.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticOverride.java @@ -34,7 +34,7 @@ interface i2 { class weak { void f1() {} } -class a2 extends weak implements i { +class a2 extends weak implements i { } class a3 { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ChangeModifierFix.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ChangeModifierFix.java index 0e114abf03f4..d6a494b60fc8 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ChangeModifierFix.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/fixes/ChangeModifierFix.java @@ -23,6 +23,7 @@ import com.intellij.psi.PsiModifierList; import com.intellij.psi.PsiModifierListOwner; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; +import com.intellij.util.VisibilityUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.InspectionGadgetsFix; import org.jetbrains.annotations.NonNls; @@ -40,8 +41,7 @@ public class ChangeModifierFix extends InspectionGadgetsFix { @Override @NotNull public String getName() { - return InspectionGadgetsBundle.message("change.modifier.quickfix", - modifierText); + return InspectionGadgetsBundle.message("change.modifier.quickfix", VisibilityUtil.toPresentableText(modifierText)); } @NotNull diff --git a/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java index 38e229346c87..5b6e8c0f0670 100644 --- a/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ public class AccessCanBeTightenedInspectionTest extends LightInspectionTestCase "class C {\n" + " final int /*Access can be private*/fd/**/ = 0;\n" + " /*Access can be private*/public/**/ int fd2;\n" + - " /*Access can be packageLocal*/public/**/ int forSubClass;\n" + + " /*Access can be package local*/public/**/ int forSubClass;\n" + " @Override\n" + " public int hashCode() {\n" + " return fd + fd2;\n" + // use field @@ -58,7 +58,7 @@ public class AccessCanBeTightenedInspectionTest extends LightInspectionTestCase "@interface Ann{ String value(); }\n" + "@Ann(value = C.VAL\n)" + "class C {\n" + - " /*Access can be packageLocal*/public/**/ static final String VAL = \"xx\";\n" + + " /*Access can be package local*/public/**/ static final String VAL = \"xx\";\n" + "}"); }