From ec52eadda46c5a12f4236562f0e10e3486a0afb0 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Tue, 12 Mar 2019 14:46:04 +0100 Subject: [PATCH] SSR: avoid IOE (EA-139295) --- .../impl/matcher/JavaMatchingVisitor.java | 2 +- .../intellij/structuralsearch/StructuralSearchTest.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchingVisitor.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchingVisitor.java index 79a09cf643b1..c29c3c8e73f8 100644 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchingVisitor.java +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchingVisitor.java @@ -656,7 +656,7 @@ public class JavaMatchingVisitor extends JavaElementVisitor { if (typeElement.isInferredType()) { // replace inferred type with explicit type if possible final PsiType type = typeElement.getType(); - if (type == PsiType.NULL) { + if (type == PsiType.NULL || type instanceof PsiLambdaParameterType) { return typeElement; } final String canonicalText = type.getCanonicalText(); diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java index 98048f1a8a61..c79861f20844 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java @@ -2356,6 +2356,15 @@ public class StructuralSearchTest extends StructuralSearchTestCase { " };\n" + "}"; assertEquals("match statement body correctly", 1, findMatchesCount(source2, pattern7)); + + String source3 = "class LambdaParameter {\n" + + "\n" + + " void x() {\n" + + " Runnable r = (var a) -> a = \"\";\n" + + " }\n" + + "}"; + String pattern8 = "String '_x;"; + assertEquals("avoid IncorrectOperationException", 0, findMatchesCount(source3, pattern8)); } public void testFindDefaultMethods() {