diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/handlers/StatementHandler.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/handlers/StatementHandler.java index 948676f49fc3..cb11fd74cda8 100644 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/handlers/StatementHandler.java +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/handlers/StatementHandler.java @@ -1,13 +1,10 @@ -// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.structuralsearch.impl.matcher.handlers; import com.intellij.psi.*; import com.intellij.structuralsearch.impl.matcher.MatchContext; import org.jetbrains.annotations.NotNull; -/** - * Handler for statement search - */ public class StatementHandler extends MatchingHandler { @Override @@ -16,6 +13,9 @@ public class StatementHandler extends MatchingHandler { // typed statement matches statements (including block statements) and comments return false; } + if (!(patternNode instanceof PsiExpressionStatement)) { + return false; + } final PsiExpression expression = ((PsiExpressionStatement)patternNode).getExpression(); return context.getMatcher().match(expression, matchedNode); diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java index 5a0c0d8f63ac..340723bb89b6 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java @@ -2591,6 +2591,16 @@ public class StructuralSearchTest extends StructuralSearchTestCase { "}"; assertEquals("don't throw exception during matching", 0, findMatchesCount(s, "void '_Method('_ParameterType '_Parameter*, '_LastType[] '_lastParameter);")); + + String s2 = "class X {" + + " void x() {" + + " x();" + + " }" + + "}"; + assertEquals("don't throw exception during matching", 0, + findMatchesCount(s2, "void '_x() {\n" + + " '_x;\n" + + "}")); } public void testNoUnexpectedException() {