From 02d221d5eebc9a7b0f3f8b2b19b33d232e2e9212 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Sat, 9 Aug 2014 17:05:35 +0200 Subject: [PATCH] EA-59253 (NPE: JavaCompilingVisitor.visitComment) --- .../impl/matcher/compiler/JavaCompilingVisitor.java | 10 +++++----- .../structuralsearch/StructuralSearchTest.java | 9 +++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java index 271f1c468b0b..18c252d28111 100644 --- a/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java +++ b/java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/compiler/JavaCompilingVisitor.java @@ -1,20 +1,17 @@ package com.intellij.structuralsearch.impl.matcher.compiler; +import com.intellij.dupLocator.iterators.NodeIterator; import com.intellij.psi.*; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.javadoc.PsiDocTag; import com.intellij.psi.search.*; import com.intellij.psi.search.searches.ClassInheritorsSearch; -import com.intellij.structuralsearch.MatchOptions; -import com.intellij.structuralsearch.MatchVariableConstraint; -import com.intellij.structuralsearch.SSRBundle; -import com.intellij.structuralsearch.UnsupportedPatternException; +import com.intellij.structuralsearch.*; import com.intellij.structuralsearch.impl.matcher.CompiledPattern; import com.intellij.structuralsearch.impl.matcher.JavaCompiledPattern; import com.intellij.structuralsearch.impl.matcher.filters.*; import com.intellij.structuralsearch.impl.matcher.handlers.*; import com.intellij.structuralsearch.impl.matcher.iterators.DocValuesIterator; -import com.intellij.dupLocator.iterators.NodeIterator; import com.intellij.structuralsearch.impl.matcher.predicates.RegExpPredicate; import com.intellij.structuralsearch.impl.matcher.strategies.*; import org.jetbrains.annotations.NonNls; @@ -84,6 +81,9 @@ public class JavaCompilingVisitor extends JavaRecursiveElementWalkingVisitor { ); SubstitutionHandler handler = (SubstitutionHandler)myCompilingVisitor.getContext().getPattern().getHandler(str); + if (handler == null) { + throw new MalformedPatternException(); + } if (handler.getPredicate() != null) { ((RegExpPredicate)handler.getPredicate()).setMultiline(true); diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java index da479a70f93c..f6f3d58ba384 100644 --- a/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java +++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java @@ -2943,4 +2943,13 @@ public class StructuralSearchTest extends StructuralSearchTestCase { String pattern3 = "'_a::'_b"; assertEquals("should find all method references", 3, findMatchesCount(source, pattern3)); } + + public void testNoUnexpectedException() { + String source = "{}"; + + String pattern1 = "/*$A$a*/"; + try { + findMatchesCount(source, pattern1); + } catch (MalformedPatternException ignore) {} + } }