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 d8918467ea65..386490d24ab1 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 @@ -467,7 +467,7 @@ public final class PsiUtil extends PsiUtilCore { if (args.length < parms.length - 1) return ApplicabilityLevel.NOT_APPLICABLE; final PsiClass containingClass = method.getContainingClass(); - final boolean isRaw = containingClass != null && isRawSubstitutor(containingClass, substitutorForMethod); + final boolean isRaw = containingClass != null && isRawSubstitutor(method, substitutorForMethod) && isRawSubstitutor(containingClass, substitutorForMethod); if (!areFirstArgumentsApplicable(args, parms, languageLevel, substitutorForMethod, isRaw)) return ApplicabilityLevel.NOT_APPLICABLE; if (args.length == parms.length) { if (parms.length == 0) return ApplicabilityLevel.FIXED_ARITY; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA107957.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA107957.java new file mode 100644 index 000000000000..1228be1a48b7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA107957.java @@ -0,0 +1,37 @@ +class Test1 { + + private static final Foo test = new Foo().method(Boolean.TRUE); + + public static void main(String[] args) { + System.out.println(test); + } + + public static class Foo { + public Foo method(boolean arg) { + return null; + } + + public > Foo method(T arg) { + return null; + } + } +} + +class Test2 { + + private static final Foo test = Foo.method(Boolean.TRUE); + + public static void main(String[] args) { + System.out.println(test); + } + + public static class Foo { + public static Foo method(boolean arg) { + return null; + } + + public static > Foo method(T arg) { + return null; + } + } +} 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 16e3d2c2eb23..68afa706ebbd 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -236,6 +236,7 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIDEA20244() throws Exception { doTest5(false);} public void testIDEA22005() throws Exception { doTest5(false);} public void testIDEA57259() throws Exception { doTest5(false);} + public void testIDEA107957() throws Exception { doTest6(false);} public void testIDEA106964() throws Exception { doTest5(false);} public void testInheritedWithDifferentArgsInTypeParams() throws Exception { doTest5(false);} public void testIllegalForwardReferenceInTypeParameterDefinition() throws Exception { doTest5(false);}