java: check enum instantiation before constructor applicability (IDEA-267280)

GitOrigin-RevId: f7f2a0ac939fd6ae08a1919335bcebd1098ff6e7
This commit is contained in:
Anna Kozlova
2021-04-20 19:26:09 +03:00
committed by intellij-monorepo-bot
parent 9aaa8d5861
commit 01a5ea5835
2 changed files with 3 additions and 1 deletions
@@ -1106,11 +1106,11 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkCreateInnerClassFromStaticContext(expression, type, aClass));
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkTypeParameterInstantiation(expression));
if (aClass != null && !myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkInstantiationOfAbstractClass(aClass, expression));
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkEnumInstantiation(expression, aClass));
try {
if (!myHolder.hasErrorResults()) HighlightMethodUtil.checkNewExpression(expression, type, myHolder, myJavaSdkVersion);
}
catch (IndexNotReadyException ignored) { }
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkEnumInstantiation(expression, aClass));
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkGenericArrayCreation(expression, type));
if (!myHolder.hasErrorResults()) registerConstructorCall(expression);
@@ -2,6 +2,7 @@ import java.util.*;
public class MyEnum {
enum Test {A,B}
enum Test1 {A; Test1() {}}
public static Test[] accepted1() {
List<Test> list = new ArrayList<Test>();
@@ -13,4 +14,5 @@ public class MyEnum {
}
Test t = <error descr="Enum types cannot be instantiated">new Test()</error>;
Test1 t1 = <error descr="Enum types cannot be instantiated">new Test1()</error>;
}