mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
forbid private classes in java 9 interfaces (IDEA-167121)
This commit is contained in:
+7
-6
@@ -158,6 +158,7 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
|
||||
Set<String> incompatibles = incompatibleModifiersHash.get(modifier);
|
||||
if (incompatibles == null) return null;
|
||||
final PsiElement parent = modifierList.getParent();
|
||||
final boolean level8OrHigher = PsiUtil.isLanguageLevel8OrHigher(modifierList);
|
||||
final boolean level9OrHigher = PsiUtil.isLanguageLevel9OrHigher(modifierList);
|
||||
for (@PsiModifier.ModifierConstant String incompatible : incompatibles) {
|
||||
@@ -166,12 +167,12 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (level9OrHigher && modifier.equals(PsiModifier.PRIVATE) && incompatible.equals(PsiModifier.PUBLIC)) {
|
||||
continue;
|
||||
}
|
||||
if (modifier.equals(PsiModifier.STATIC) && incompatible.equals(PsiModifier.FINAL)) {
|
||||
final PsiElement parent = modifierList.getParent();
|
||||
if (parent instanceof PsiMethod) {
|
||||
if (parent instanceof PsiMethod) {
|
||||
if (level9OrHigher && modifier.equals(PsiModifier.PRIVATE) && incompatible.equals(PsiModifier.PUBLIC)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (modifier.equals(PsiModifier.STATIC) && incompatible.equals(PsiModifier.FINAL)) {
|
||||
final PsiClass containingClass = ((PsiMethod)parent).getContainingClass();
|
||||
if (containingClass == null || !containingClass.isInterface()) {
|
||||
continue;
|
||||
|
||||
+8
@@ -12,4 +12,12 @@ interface C {
|
||||
|
||||
interface D {
|
||||
private static void m() {}
|
||||
}
|
||||
|
||||
interface E {
|
||||
<error descr="Illegal combination of modifiers: 'private' and 'public'">private</error> class E1 {}
|
||||
}
|
||||
|
||||
interface F {
|
||||
<error descr="Modifier 'private' not allowed here">private</error> int m = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user