mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 21:55:01 +07:00
show error for enums constants referenced from instance field initializer (IDEA-136196)
This commit is contained in:
@@ -823,8 +823,9 @@ public final class PsiUtil extends PsiUtilCore {
|
||||
|
||||
@Nullable
|
||||
public static PsiMember findEnclosingConstructorOrInitializer(PsiElement expression) {
|
||||
PsiMember parent = PsiTreeUtil.getParentOfType(expression, PsiClassInitializer.class, PsiEnumConstantInitializer.class, PsiMethod.class);
|
||||
PsiMember parent = PsiTreeUtil.getParentOfType(expression, PsiClassInitializer.class, PsiEnumConstantInitializer.class, PsiMethod.class, PsiField.class);
|
||||
if (parent instanceof PsiMethod && !((PsiMethod)parent).isConstructor()) return null;
|
||||
if (parent instanceof PsiField && parent.hasModifierProperty(PsiModifier.STATIC)) return null;
|
||||
return parent;
|
||||
}
|
||||
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
enum MyEnumTest {
|
||||
FOO;
|
||||
MyEnumTest Foo = <error descr="It is illegal to access static member 'FOO' from enum constructor or instance initializer">FOO</error>;
|
||||
|
||||
{
|
||||
MyEnumTest foo = <error descr="It is illegal to access static member 'FOO' from enum constructor or instance initializer">FOO</error>;
|
||||
}
|
||||
static MyEnumTest Bar = FOO;
|
||||
|
||||
MyEnumTest() {
|
||||
System.out.println(<error descr="It is illegal to access static member 'Bar' from enum constructor or instance initializer">Bar</error>);
|
||||
}
|
||||
}
|
||||
+1
@@ -69,6 +69,7 @@ public class LightAdvHighlightingJdk6Test extends LightDaemonAnalyzerTestCase {
|
||||
public void testEnumInitializers() { doTest(false, false); }
|
||||
public void testEnumSynthetics() { doTest(false, false); }
|
||||
public void testEnumWithoutConstants() { doTest(false, false); }
|
||||
public void testEnumInstanceFieldInitializer() { doTest(false, false); }
|
||||
public void testIDEA79251() { doTest(false, false); }
|
||||
public void testIDEA65473() { doTest(false, false); }
|
||||
public void testIDEA61415() { doTest(false, false); }
|
||||
|
||||
Reference in New Issue
Block a user