From e1ac2b1977cd06f003a6c91b64cd2a1ef3bb46a6 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 13 Nov 2012 18:13:20 +0100 Subject: [PATCH] IDEA-91626 --- .../src/com/intellij/psi/util/PsiUtil.java | 4 ++- .../genericsHighlighting/IDEA91626.java | 25 +++++++++++++++++++ .../daemon/GenericsHighlightingTest.java | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA91626.java diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index 6346218387d8..6be5ffa96760 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -480,7 +480,9 @@ public final class PsiUtil extends PsiUtilCore { PsiType lastParmType = getParameterType(lastParameter, languageLevel, substitutorForMethod); if (!(lastParmType instanceof PsiArrayType)) return ApplicabilityLevel.NOT_APPLICABLE; lastParmType = ((PsiArrayType)lastParmType).getComponentType(); - + if (lastParmType instanceof PsiCapturedWildcardType) { + lastParmType = ((PsiCapturedWildcardType)lastParmType).getWildcard(); + } for (int i = parms.length - 1; i < args.length; i++) { PsiType argType = args[i]; if (argType == null || !TypeConversionUtil.isAssignable(lastParmType, argType)) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA91626.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA91626.java new file mode 100644 index 000000000000..ff29729bc977 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA91626.java @@ -0,0 +1,25 @@ +class Test { + interface A { + void _(T... t); + } + + static void foo(final A bar) { + bar._(""); + } + static void foo1(final A bar) { + bar._(""); + } + + static void foo2(final A bar) { + bar._(""); + } + + + public static void main(String[] args) { + foo(new A() { + public void _(final Integer... t) { + + } + }); + } +} 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 0e483262b032..0fcc62cfc14e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -192,6 +192,7 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testTypeArgumentsGivenOnAnonymousClassCreation() throws Exception { doTest(false); } public void _testIDEA94011() throws Exception { doTest(false); } public void testDifferentTypeParamsInOverloadedMethods() throws Exception { doTest(true); } + public void testIDEA91626() throws Exception { doTest(true); } public void testJavaUtilCollections_NoVerify() throws Exception { PsiClass collectionsClass = getJavaFacade().findClass("java.util.Collections", GlobalSearchScope.moduleWithLibrariesScope(getModule()));