From 7cb3c66d874d4e5c179b9aa24ce322746929f1c2 Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 29 Mar 2013 17:59:06 +0100 Subject: [PATCH] type parameter referenced from static context error (IDEA-104160) (cherry picked from commit ac98afef2ab67f2b548e6723e63b3b9752bf82f5) --- .../daemon/impl/analysis/HighlightVisitorImpl.java | 8 ++++++++ .../genericsHighlighting/IDEA104160.java | 13 +++++++++++++ .../daemon/GenericsHighlightingTest.java | 1 + 3 files changed, 22 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA104160.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index dbb0a7186013..3b6ef960f407 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -964,6 +964,14 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh if (PsiTreeUtil.isAncestor(aClass, place, false) && aClass.hasTypeParameters()) { myHolder.add(HighlightClassUtil.checkCreateInnerClassFromStaticContext(ref, place, (PsiClass)resolved)); } + } else if (resolved instanceof PsiTypeParameter) { + final PsiTypeParameterListOwner owner = ((PsiTypeParameter)resolved).getOwner(); + if (owner instanceof PsiClass) { + final PsiClass outerClass = (PsiClass)owner; + if (!HighlightClassUtil.hasEnclosingInstanceInScope(outerClass, ref, true, false)) { + myHolder.add(HighlightClassUtil.reportIllegalEnclosingUsage(ref, aClass, (PsiClass)owner, ref)); + } + } } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA104160.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA104160.java new file mode 100644 index 000000000000..92e5b57c39e4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA104160.java @@ -0,0 +1,13 @@ +import java.util.*; +class Test { + public static void foo(T t) {} + public void bar(T t) {} + + static class A extends ArrayList<T> { + static void boo(T t){} + } + + class B extends ArrayList { + void foo(T r){} + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java index 1ea7b7d331cb..f2a6e3af1fa7 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -220,6 +220,7 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { } public void testIDEA104100() {doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);} + public void testIDEA104160() {doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);} public void testJavaUtilCollections_NoVerify() throws Exception { PsiClass collectionsClass = getJavaFacade().findClass("java.util.Collections", GlobalSearchScope.moduleWithLibrariesScope(getModule()));