From e6e51584efd7e6d7e2a454902590e53a90184d47 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 2 Feb 2018 13:01:38 +0300 Subject: [PATCH] unqualified getClass() type fixed (IDEA-186043) --- .../tree/java/PsiMethodCallExpressionImpl.java | 5 ++++- .../genericsHighlighting/GetClassInAnonymous.java | 14 ++++++++++++++ .../daemon/GenericsHighlightingTest.java | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/GetClassInAnonymous.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java index bf7d9f444281..63a115280b3a 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodCallExpressionImpl.java @@ -208,7 +208,10 @@ public class PsiMethodCallExpressionImpl extends ExpressionPsiElement implements boolean is15OrHigher = languageLevel.compareTo(LanguageLevel.JDK_1_5) >= 0; final PsiType getClassReturnType = PsiTypesUtil.patchMethodGetClassReturnType(call, methodExpression, method, - type -> type != JavaElementType.CLASS, languageLevel); + type -> type != JavaElementType.CLASS && + //enum can be created inside enum only, no need to mention it here + type != JavaElementType.ANONYMOUS_CLASS + , languageLevel); if (getClassReturnType != null) { return getClassReturnType; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/GetClassInAnonymous.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/GetClassInAnonymous.java new file mode 100644 index 000000000000..31d66720026c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/GetClassInAnonymous.java @@ -0,0 +1,14 @@ +class A { + class B { + } + + B foo() { + return new B() { + void bar() { + Class aClass1 = getClass(); + } + }; + } + + +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java index 8047d70ad8b5..cdbecd1f8f5e 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java @@ -429,4 +429,5 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testClassInWrongPackage() { doTest6(false); } public void testRecursiveParamBoundsWhenSuperSubstitution() { doTest6(false); } public void testCaptureForBoundCheck() { doTest6(false); } + public void testGetClassInAnonymous() { doTest6(false); } } \ No newline at end of file