diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index bd4bd7989acd..97e4d77e9495 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -389,7 +389,7 @@ public class LambdaUtil { if (type == null) { type = getFunctionalInterfaceType(lambdaExpression, false); } - final PsiClassType.ClassResolveResult resolveResult = type instanceof PsiClassType ? ((PsiClassType)type).resolveGenerics() : null; + final PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(type); if (resolveResult != null) { final PsiMethod method = getFunctionalInterfaceMethod(type); if (method != null) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/LambdaOnVarargPlace.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/LambdaOnVarargPlace.java new file mode 100644 index 000000000000..69a2478853d6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/LambdaOnVarargPlace.java @@ -0,0 +1,14 @@ +class Test { + protected U exerciseOps(TestData data, TerminalOp terminal, IntermediateOp... ops) { + return exerciseOps(data, terminal, (u, v) -> u.equals(v)); + } + + + + class TestData {} + interface TerminalOp extends IntermediateOp { + + } + interface IntermediateOp { boolean _(L1 l, M1 m);} + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java index 3a73a10301c8..4bb0ec0c0744 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/LambdaHighlightingTest.java @@ -88,6 +88,10 @@ public class LambdaHighlightingTest extends LightDaemonAnalyzerTestCase { public void testDefaultMethod() throws Exception { doTest(); } + + public void testLambdaOnVarargPlace() throws Exception { + doTest(); + } public void testNoInferenceResult() throws Exception { doTest();