EA-64165 - NPE: XmlCharFilter.isWithinTag + cleanup
authorpeter <peter@jetbrains.com>
Mon, 9 Feb 2015 14:46:44 +0000 (15:46 +0100)
committerpeter <peter@jetbrains.com>
Mon, 9 Feb 2015 15:26:06 +0000 (16:26 +0100)
xml/impl/src/com/intellij/codeInsight/completion/XmlCharFilter.java

index 8f708b7805f37fa9bdb3d9618d08b74f647e923f..0568e5812bce538ef4661d794b794accc16f9aa9 100644 (file)
@@ -70,15 +70,12 @@ public class XmlCharFilter extends CharFilter {
   public static boolean isWithinTag(Lookup lookup) {
     if (isInXmlContext(lookup)) {
       PsiElement psiElement = lookup.getPsiElement();
-      final PsiElement parentElement = psiElement.getParent() != null ? psiElement.getParent():null;
-      String s;
-      return parentElement != null &&
-             ( parentElement instanceof XmlTag ||
-               ( parentElement instanceof PsiErrorElement &&
-                 parentElement.getParent() instanceof XmlDocument
-               ) ||
-                 ((parentElement instanceof XmlDocument || parentElement instanceof XmlText) &&
-                  ((s = psiElement.getText()).equals("<") || s.equals("\""))));
+      final PsiElement parentElement = psiElement != null ? psiElement.getParent() : null;
+      if (parentElement instanceof XmlTag) return true;
+      if (parentElement instanceof PsiErrorElement && parentElement.getParent() instanceof XmlDocument) return true;
+
+      return (parentElement instanceof XmlDocument || parentElement instanceof XmlText) &&
+             (psiElement.textMatches("<") || psiElement.textMatches("\""));
     }
     return false;
   }