Java 类com.intellij.psi.PsiErrorElement 实例源码

项目:intellij-ce-playground    文件:PsiErrorElementUtil.java   
private static boolean hasErrorElements(@NotNull final PsiElement element) {
  if (element instanceof PsiErrorElement) {
    HighlightErrorFilter[] errorFilters = Extensions.getExtensions(HighlightErrorFilter.EP_NAME, element.getProject());
    for (HighlightErrorFilter errorFilter : errorFilters) {
      if (!errorFilter.shouldHighlightErrorElement((PsiErrorElement)element)) {
        return false;
      }
    }
    return true;
  }
  for (PsiElement child : element.getChildren()) {
    if (hasErrorElements(child)) {
      return true;
    }
  }
  return false;
}
项目:intellij-ce-playground    文件:CodeSamplesCorrectnessTest.java   
public String createReport() {
  StringBuilder builder = new StringBuilder("\n\n\n");

  builder.append("Language: ")
    .append(myLang.getDisplayName())
    .append(". Setting: ")
    .append(mySettingsType)
    .append(". Errors found: ")
    .append(myErrors.size())
    .append('\n');

  for (PsiErrorElement error : myErrors) {
    builder.append("   ")
      .append(error.getErrorDescription())
      .append(". Previous sibling: ")
      .append(error.getPrevSibling())
      .append('\n');
  }

  builder.append("\nCode sample:\n")
    .append(myCode)
    .append('\n');

  return builder.toString();
}
项目:intellij-ce-playground    文件:PsiBuilderImpl.java   
@Override
public boolean hashCodesEqual(@NotNull final ASTNode n1, @NotNull final LighterASTNode n2) {
  if (n1 instanceof LeafElement && n2 instanceof Token) {
    boolean isForeign1 = n1 instanceof ForeignLeafPsiElement;
    boolean isForeign2 = n2.getTokenType() instanceof ForeignLeafType;
    if (isForeign1 != isForeign2) return false;

    if (isForeign1) {
      return n1.getText().equals(((ForeignLeafType)n2.getTokenType()).getValue());
    }

    return ((LeafElement)n1).textMatches(((Token)n2).getText());
  }

  if (n1 instanceof PsiErrorElement && n2.getTokenType() == TokenType.ERROR_ELEMENT) {
    final PsiErrorElement e1 = (PsiErrorElement)n1;
    if (!Comparing.equal(e1.getErrorDescription(), getErrorMessage(n2))) return false;
  }

  return ((TreeElement)n1).hc() == ((Node)n2).hc();
}
项目:intellij-ce-playground    文件:NodeSpecificHasherBase.java   
@Override
public int getNodeHash(PsiElement node) {
  if (node == null) {
    return 0;
  }
  if (node instanceof PsiWhiteSpace || node instanceof PsiErrorElement) {
    return 0;
  }
  else if (node instanceof LeafElement) {
    if (isToSkipAsLiteral(node)) {
      return 0;
    }
    return node.getText().hashCode();

  }
  return node.getClass().getName().hashCode();
}
项目:intellij-ce-playground    文件:DuplocatorUtil.java   
public static boolean isIgnoredNode(PsiElement element) {
  // ex. "var i = 0" in AS: empty JSAttributeList should be skipped
  /*if (element.getText().length() == 0) {
    return true;
  }*/

  if (element instanceof PsiWhiteSpace || element instanceof PsiErrorElement || element instanceof PsiComment) {
    return true;
  }

  if (!(element instanceof LeafElement)) {
    return false;
  }

  if (CharArrayUtil.containsOnlyWhiteSpaces(element.getText())) {
    return true;
  }

  EquivalenceDescriptorProvider descriptorProvider = EquivalenceDescriptorProvider.getInstance(element);
  if (descriptorProvider == null) {
    return false;
  }

  final IElementType elementType = ((LeafElement)element).getElementType();
  return descriptorProvider.getIgnoredTokens().contains(elementType);
}
项目:intellij-ce-playground    文件:PyListSelectionHandler.java   
@Override
public List<TextRange> select(PsiElement e, CharSequence editorText, int cursorOffset, Editor editor) {
  TextRange stringRange = e.getTextRange();
  PsiElement firstChild = e.getFirstChild().getNextSibling();
  if (firstChild instanceof PsiErrorElement) {
    return Collections.emptyList();
  }
  int startShift = 1;
  if (firstChild instanceof PsiWhiteSpace)
    startShift += firstChild.getTextLength();
  PsiElement lastChild = e.getLastChild().getPrevSibling();
  int endShift = 1;
  if (lastChild instanceof PsiWhiteSpace && lastChild != firstChild)
    endShift += lastChild.getTextLength();

  final TextRange offsetRange = new TextRange(stringRange.getStartOffset() + startShift, stringRange.getEndOffset() - endShift);
  if (offsetRange.contains(cursorOffset) && offsetRange.getLength() > 1) {
    return Collections.singletonList(offsetRange);
  }
  return Collections.emptyList();
}
项目:intellij-ce-playground    文件:RemoveExtraClosingTagIntentionAction.java   
private static void doFix(@NotNull final PsiElement element) throws IncorrectOperationException {
  final XmlToken endNameToken = (XmlToken)element;
  final PsiElement tagElement = endNameToken.getParent();
  if (!(tagElement instanceof XmlTag) && !(tagElement instanceof PsiErrorElement)) return;

  if (tagElement instanceof PsiErrorElement) {
    tagElement.delete();
  }
  else {
    final ASTNode astNode = tagElement.getNode();
    if (astNode != null) {
      final ASTNode endTagStart = XmlChildRole.CLOSING_TAG_START_FINDER.findChild(astNode);
      if (endTagStart != null) {
        final Document document = PsiDocumentManager.getInstance(element.getProject()).getDocument(tagElement.getContainingFile());
        if (document != null) {
          document.deleteString(endTagStart.getStartOffset(), tagElement.getLastChild().getTextRange().getEndOffset());
        }
      }
    }
  }
}
项目:intellij-ce-playground    文件:XmlWrongClosingTagNameInspection.java   
@Nullable
static XmlToken findEndTagName(@Nullable final PsiErrorElement element) {
  if (element == null) return null;

  final ASTNode astNode = element.getNode();
  if (astNode == null) return null;

  ASTNode current = astNode.getLastChildNode();
  ASTNode prev = current;

  while (current != null) {
    final IElementType elementType = prev.getElementType();

    if ((elementType == XmlTokenType.XML_NAME || elementType == XmlTokenType.XML_TAG_NAME) &&
        current.getElementType() == XmlTokenType.XML_END_TAG_START) {
      return (XmlToken)prev.getPsi();
    }

    prev = current;
    current = current.getTreePrev();
  }

  return null;
}
项目:intellij-ce-playground    文件:HtmlClosingTagErrorFilter.java   
@Override
public boolean shouldHighlightErrorElement(@NotNull final PsiErrorElement element) {
  final PsiFile psiFile = element.getContainingFile();
  if (psiFile == null || psiFile.getViewProvider().getBaseLanguage() != HTMLLanguage.INSTANCE
                          && HTMLLanguage.INSTANCE != element.getLanguage()) return true;

  final PsiElement[] children = element.getChildren();
  if (children.length > 0) {
    if (children[0] instanceof XmlToken && XmlTokenType.XML_END_TAG_START == ((XmlToken)children[0]).getTokenType()) {
      if (XmlErrorMessages.message("xml.parsing.closing.tag.matches.nothing").equals(element.getErrorDescription())) {
        return false;
      }
    }
  }

  return true;
}
项目:intellij-ce-playground    文件:HtmlTextContextType.java   
public static boolean isInContext(@NotNull PsiElement element) {
  if (PsiTreeUtil.getParentOfType(element, XmlComment.class) != null) {
    return false;
  }
  if (PsiTreeUtil.getParentOfType(element, XmlText.class) != null) {
    return true;
  }
  if (element.getNode().getElementType() == XmlTokenType.XML_START_TAG_START) {
    return true;
  }
  PsiElement parent = element.getParent();
  if (parent instanceof PsiErrorElement) {
    parent = parent.getParent();
  }
  return parent instanceof XmlDocument;
}
项目:react-templates-plugin    文件:RTErrorFilter.java   
@Override
    public boolean shouldHighlightErrorElement(@NotNull PsiErrorElement error) {
        final Project project = error.getProject();
        final Language language = error.getLanguage();
//        if ("CSS".equals(language.getID()) && PsiTreeUtil.getParentOfType(error, XmlAttribute.class) != null &&
//                AngularIndexUtil.hasAngularJS(project)) {
//            final PsiFile file = error.getContainingFile();
//
//            PsiErrorElement nextError = error;
//            while (nextError != null) {
//                if (hasAngularInjectionAt(project, file, nextError.getTextOffset())) return false;
//                nextError = PsiTreeUtil.getNextSiblingOfType(nextError, PsiErrorElement.class);
//            }
//        }
        if (HTMLLanguage.INSTANCE.is(language) && error.getErrorDescription().endsWith("not closed")) {
            System.out.println(error.getErrorDescription());
            final PsiElement parent = error.getParent();
            final XmlElementDescriptor descriptor = parent instanceof XmlTag ? ((XmlTag) parent).getDescriptor() : null;
            return !(descriptor instanceof RTRequireTagDescriptor);
        }
        return true;
    }
项目:react-templates-plugin    文件:RTErrorFilter.java   
@Override
    public boolean shouldHighlightErrorElement(@NotNull PsiErrorElement error) {
        final Project project = error.getProject();
        final Language language = error.getLanguage();
//        if ("CSS".equals(language.getID()) && PsiTreeUtil.getParentOfType(error, XmlAttribute.class) != null &&
//                AngularIndexUtil.hasAngularJS(project)) {
//            final PsiFile file = error.getContainingFile();
//
//            PsiErrorElement nextError = error;
//            while (nextError != null) {
//                if (hasAngularInjectionAt(project, file, nextError.getTextOffset())) return false;
//                nextError = PsiTreeUtil.getNextSiblingOfType(nextError, PsiErrorElement.class);
//            }
//        }
        if (HTMLLanguage.INSTANCE.is(language) && error.getErrorDescription().endsWith("not closed")) {
            System.out.println(error.getErrorDescription());
            final PsiElement parent = error.getParent();
            final XmlElementDescriptor descriptor = parent instanceof XmlTag ? ((XmlTag) parent).getDescriptor() : null;
            return !(descriptor instanceof RTRequireTagDescriptor);
        }
        return true;
    }
项目:glsl4idea    文件:GLSLDeclarationList.java   
@NotNull
public GLSLDeclaration[] getDeclarations() {
    // convert the list of children to a list of GLSLStatement objects while performing sanity check.
    PsiElement[] children = getChildren();
    List<GLSLDeclaration> result = new ArrayList<GLSLDeclaration>(children.length);
    for (PsiElement child : children) {
        if (child instanceof GLSLDeclaration) {
            result.add((GLSLDeclaration) child);
        } else if (!(child instanceof PsiErrorElement)) {
            final ASTNode node = child.getNode();
            if (node != null) {
                final IElementType type = node.getElementType();
                if (!GLSLTokenTypes.COMMENTS.contains(type)) {
                    Logger.getLogger("GLSLDeclarationList").warning("Parameter declaration list contains non-comment, non-expression element. ("+type+")");
                }
            }
        }
    }
    return result.toArray(new GLSLDeclaration[result.size()]);
}
项目:tools-idea    文件:PsiBuilderImpl.java   
@Override
public boolean hashCodesEqual(final ASTNode n1, final LighterASTNode n2) {
  if (n1 instanceof LeafElement && n2 instanceof Token) {
    boolean isForeign1 = n1 instanceof ForeignLeafPsiElement;
    boolean isForeign2 = n2.getTokenType() instanceof ForeignLeafType;
    if (isForeign1 != isForeign2) return false;

    if (isForeign1) {
      return n1.getText().equals(((ForeignLeafType)n2.getTokenType()).getValue());
    }

    return ((LeafElement)n1).textMatches(((Token)n2).getText());
  }

  if (n1 instanceof PsiErrorElement && n2.getTokenType() == TokenType.ERROR_ELEMENT) {
    final PsiErrorElement e1 = (PsiErrorElement)n1;
    if (!Comparing.equal(e1.getErrorDescription(), getErrorMessage(n2))) return false;
  }

  return ((TreeElement)n1).hc() == ((Node)n2).hc();
}
项目:tools-idea    文件:RemoveExtraClosingTagIntentionAction.java   
private static void doFix(@NotNull final PsiElement element) throws IncorrectOperationException {
  final XmlToken endNameToken = (XmlToken)element;
  final PsiElement tagElement = endNameToken.getParent();
  if (!(tagElement instanceof XmlTag) && !(tagElement instanceof PsiErrorElement)) return;

  if (tagElement instanceof PsiErrorElement) {
    tagElement.delete();
  }
  else {
    final ASTNode astNode = tagElement.getNode();
    if (astNode != null) {
      final ASTNode endTagStart = XmlChildRole.CLOSING_TAG_START_FINDER.findChild(astNode);
      if (endTagStart != null) {
        final Document document = PsiDocumentManager.getInstance(element.getProject()).getDocument(tagElement.getContainingFile());
        if (document != null) {
          document.deleteString(endTagStart.getStartOffset(), tagElement.getLastChild().getTextRange().getEndOffset());
        }
      }
    }
  }
}
项目:tools-idea    文件:XmlWrongClosingTagNameInspection.java   
@Nullable
static XmlToken findEndTagName(@Nullable final PsiErrorElement element) {
  if (element == null) return null;

  final ASTNode astNode = element.getNode();
  if (astNode == null) return null;

  ASTNode current = astNode.getLastChildNode();
  ASTNode prev = current;

  while (current != null) {
    final IElementType elementType = prev.getElementType();

    if ((elementType == XmlElementType.XML_NAME || elementType == XmlElementType.XML_TAG_NAME) &&
        current.getElementType() == XmlElementType.XML_END_TAG_START) {
      return (XmlToken)prev.getPsi();
    }

    prev = current;
    current = current.getTreePrev();
  }

  return null;
}
项目:tools-idea    文件:HtmlClosingTagErrorFilter.java   
public boolean shouldHighlightErrorElement(@NotNull final PsiErrorElement element) {
  final PsiFile psiFile = element.getContainingFile();
  if (psiFile == null || (psiFile.getViewProvider().getBaseLanguage() != HTMLLanguage.INSTANCE
                          && HTMLLanguage.INSTANCE != element.getLanguage())) return true;

  final PsiElement[] children = element.getChildren();
  if (children.length > 0) {
    if (children[0] instanceof XmlToken && XmlTokenType.XML_END_TAG_START == ((XmlToken)children[0]).getTokenType()) {
      if (XmlErrorMessages.message("xml.parsing.closing.tag.matches.nothing").equals(element.getErrorDescription())) {
        return false;
      }
    }
  }

  return true;
}
项目:tools-idea    文件:HtmlTextContextType.java   
public static boolean isInContext(@NotNull PsiElement element) {
  if (PsiTreeUtil.getParentOfType(element, XmlComment.class) != null) {
    return false;
  }
  if (PsiTreeUtil.getParentOfType(element, XmlText.class) != null) {
    return true;
  }
  if (element.getNode().getElementType() == XmlTokenType.XML_START_TAG_START) {
    return true;
  }
  PsiElement parent = element.getParent();
  if (parent instanceof PsiErrorElement) {
    parent = parent.getParent();
  }
  return parent instanceof XmlDocument;
}
项目:intellij-latte    文件:ErrorFilter.java   
public boolean shouldHighlightErrorElement(@NotNull PsiErrorElement element) {
    PsiFile templateLanguageFile = PsiUtilCore.getTemplateLanguageFile(element.getContainingFile());
    if (templateLanguageFile == null) {
        return true;
    }
    Language language = templateLanguageFile.getLanguage();
    if (language != LatteLanguage.INSTANCE) {
        return true;
    }
    if (element.getParent() instanceof XmlElement || element.getParent() instanceof CssElement) {
        return false;
    }
    if (element.getParent().getLanguage() == LatteLanguage.INSTANCE) {
        return true;
    }
    PsiElement nextSibling;
    for (nextSibling = PsiTreeUtil.nextLeaf(element); nextSibling instanceof PsiWhiteSpace; nextSibling = nextSibling.getNextSibling());

    PsiElement psiElement = nextSibling == null ? null : PsiTreeUtil.findCommonParent(nextSibling, element);
    boolean nextIsOuterLanguageElement = nextSibling instanceof OuterLanguageElement || nextSibling instanceof LatteMacroClassic;
    return !nextIsOuterLanguageElement || psiElement == null || psiElement instanceof PsiFile;
}
项目:intellij-haxe    文件:HaxePsiBuilder.java   
@NotNull
@Override
public ASTNode getTreeBuilt() {
  ASTNode built = super.getTreeBuilt();

  if (LOG.isDebugEnabled() && !ApplicationManager.getApplication().isUnitTestMode()) {
    // Walk the tree, depth first and print out all remaining error elements.
    new ASTNodeWalker().walk(built, new Lambda<ASTNode>() {
      @Override
      public boolean process(ASTNode node) {
        if (node instanceof PsiErrorElement) {
          PsiErrorElement err = (PsiErrorElement)node;
          printErrorInfo(err.getTextRange().getStartOffset(),
                         err.getText(),
                         err.getErrorDescription());
        }
        return true;
      }
    });
  }

  return built;
}
项目:emberjs-plugin    文件:EmberJSErrorFilter.java   
@Override
public boolean shouldHighlightErrorElement(@NotNull PsiErrorElement error) {
    final Project project = error.getProject();
    final Language language = error.getLanguage();
    if ("CSS".equals(language.getID()) && PsiTreeUtil.getParentOfType(error, XmlAttribute.class) != null &&
            EmberIndexUtil.hasEmberJS(project)) {
        final PsiFile file = error.getContainingFile();

        PsiErrorElement nextError = error;
        while (nextError != null) {
            nextError = PsiTreeUtil.getNextSiblingOfType(nextError, PsiErrorElement.class);
        }
    }
    if (HTMLLanguage.INSTANCE.is(language) && error.getErrorDescription().endsWith("not closed")) {
        final PsiElement parent = error.getParent();
        final XmlElementDescriptor descriptor = parent instanceof XmlTag ? ((XmlTag)parent).getDescriptor() : null;
        return !(descriptor instanceof EmberJSTagDescriptor);
    }
    return true;
}
项目:idea-php-symfony2-plugin    文件:TwigPattern.java   
/**
 * Twig tag pattern with some hack
 * because we have invalid psi elements after STATEMENT_BLOCK_START
 *
 * {% <caret> %}
 */
public static ElementPattern<PsiElement> getTagTokenParserPattern() {
    //noinspection unchecked
    return PlatformPatterns
        .psiElement()
        .afterLeafSkipping(
            PlatformPatterns.or(
                PlatformPatterns.psiElement(PsiWhiteSpace.class),
                PlatformPatterns.psiElement(TwigTokenTypes.WHITE_SPACE)
            ),
            PlatformPatterns.or(
                PlatformPatterns.psiElement(TwigTokenTypes.STATEMENT_BLOCK_START),
                PlatformPatterns.psiElement(PsiErrorElement.class)
            )
        )
        .beforeLeafSkipping(
            PlatformPatterns.or(
                PlatformPatterns.psiElement(PsiWhiteSpace.class),
                PlatformPatterns.psiElement(TwigTokenTypes.WHITE_SPACE)
            ),
            PlatformPatterns.psiElement(TwigTokenTypes.STATEMENT_BLOCK_END)
        )
        .withLanguage(TwigLanguage.INSTANCE);
}
项目:consulo    文件:DefaultHighlightVisitor.java   
@Override
public void visit(@Nonnull PsiElement element) {
  if (element instanceof PsiErrorElement) {
    if (myHighlightErrorElements) visitErrorElement((PsiErrorElement)element);
  }
  else {
    if (myRunAnnotators) runAnnotators(element);
  }

  if (myAnnotationHolder.hasAnnotations()) {
    for (Annotation annotation : myAnnotationHolder) {
      myHolder.add(HighlightInfo.fromAnnotation(annotation, null, myBatchMode));
    }
    myAnnotationHolder.clear();
  }
}
项目:consulo    文件:PsiErrorElementUtil.java   
private static boolean hasErrorElements(@Nonnull final PsiElement element) {
  if (element instanceof PsiErrorElement) {
    HighlightErrorFilter[] errorFilters = Extensions.getExtensions(HighlightErrorFilter.EP_NAME, element.getProject());
    for (HighlightErrorFilter errorFilter : errorFilters) {
      if (!errorFilter.shouldHighlightErrorElement((PsiErrorElement)element)) {
        return false;
      }
    }
    return true;
  }
  for (PsiElement child : element.getChildren()) {
    if (hasErrorElements(child)) {
      return true;
    }
  }
  return false;
}
项目:consulo    文件:PsiBuilderImpl.java   
@Override
public boolean hashCodesEqual(@Nonnull final ASTNode n1, @Nonnull final LighterASTNode n2) {
  if (n1 instanceof LeafElement && n2 instanceof Token) {
    boolean isForeign1 = n1 instanceof ForeignLeafPsiElement;
    boolean isForeign2 = n2.getTokenType() instanceof ForeignLeafType;
    if (isForeign1 != isForeign2) return false;

    if (isForeign1) {
      return n1.getText().equals(((ForeignLeafType)n2.getTokenType()).getValue());
    }

    return ((LeafElement)n1).textMatches(((Token)n2).getText());
  }

  if (n1 instanceof PsiErrorElement && n2.getTokenType() == TokenType.ERROR_ELEMENT) {
    final PsiErrorElement e1 = (PsiErrorElement)n1;
    if (!Comparing.equal(e1.getErrorDescription(), getErrorMessage(n2))) return false;
  }

  return ((TreeElement)n1).hc() == ((Node)n2).hc();
}
项目:consulo-xml    文件:RemoveExtraClosingTagIntentionAction.java   
private static void doFix(@NotNull final PsiElement element) throws IncorrectOperationException {
  final XmlToken endNameToken = (XmlToken)element;
  final PsiElement tagElement = endNameToken.getParent();
  if (!(tagElement instanceof XmlTag) && !(tagElement instanceof PsiErrorElement)) return;

  if (tagElement instanceof PsiErrorElement) {
    tagElement.delete();
  }
  else {
    final ASTNode astNode = tagElement.getNode();
    if (astNode != null) {
      final ASTNode endTagStart = XmlChildRole.CLOSING_TAG_START_FINDER.findChild(astNode);
      if (endTagStart != null) {
        final Document document = PsiDocumentManager.getInstance(element.getProject()).getDocument(tagElement.getContainingFile());
        if (document != null) {
          document.deleteString(endTagStart.getStartOffset(), tagElement.getLastChild().getTextRange().getEndOffset());
        }
      }
    }
  }
}
项目:consulo-xml    文件:XmlWrongClosingTagNameInspection.java   
@Nullable
static XmlToken findEndTagName(@Nullable final PsiErrorElement element) {
  if (element == null) return null;

  final ASTNode astNode = element.getNode();
  if (astNode == null) return null;

  ASTNode current = astNode.getLastChildNode();
  ASTNode prev = current;

  while (current != null) {
    final IElementType elementType = prev.getElementType();

    if ((elementType == XmlElementType.XML_NAME || elementType == XmlElementType.XML_TAG_NAME) &&
        current.getElementType() == XmlElementType.XML_END_TAG_START) {
      return (XmlToken)prev.getPsi();
    }

    prev = current;
    current = current.getTreePrev();
  }

  return null;
}
项目:consulo-xml    文件:XmlCharFilter.java   
public static boolean isWithinTag(Lookup lookup)
{
    if(isInXmlContext(lookup))
    {
        PsiElement psiElement = lookup.getPsiElement();
        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;
}
项目:consulo-xml    文件:HtmlClosingTagErrorFilter.java   
public boolean shouldHighlightErrorElement(@NotNull final PsiErrorElement element) {
  final PsiFile psiFile = element.getContainingFile();
  if (psiFile == null || (psiFile.getViewProvider().getBaseLanguage() != HTMLLanguage.INSTANCE
                          && HTMLLanguage.INSTANCE != element.getLanguage())) return true;

  final PsiElement[] children = element.getChildren();
  if (children.length > 0) {
    if (children[0] instanceof XmlToken && XmlTokenType.XML_END_TAG_START == ((XmlToken)children[0]).getTokenType()) {
      if (XmlErrorMessages.message("xml.parsing.closing.tag.matches.nothing").equals(element.getErrorDescription())) {
        return false;
      }
    }
  }

  return true;
}
项目:consulo-xml    文件:HtmlTextContextType.java   
public static boolean isInContext(@NotNull PsiElement element) {
  if (PsiTreeUtil.getParentOfType(element, XmlComment.class) != null) {
    return false;
  }
  if (PsiTreeUtil.getParentOfType(element, XmlText.class) != null) {
    return true;
  }
  if (element.getNode().getElementType() == XmlTokenType.XML_START_TAG_START) {
    return true;
  }
  PsiElement parent = element.getParent();
  if (parent instanceof PsiErrorElement) {
    parent = parent.getParent();
  }
  return parent instanceof XmlDocument;
}
项目:consulo-javascript    文件:JSBlock.java   
private boolean isIncomplete(ASTNode node)
{
    node.getPsi().getFirstChild(); // expand chameleon
    ASTNode lastChild = node.getLastChildNode();
    while(lastChild != null && lastChild.getPsi() instanceof PsiWhiteSpace)
    {
        lastChild = lastChild.getTreePrev();
    }
    if(lastChild == null)
    {
        return false;
    }
    if(lastChild.getPsi() instanceof PsiErrorElement)
    {
        return true;
    }
    return isIncomplete(lastChild);
}
项目:Intellij-Dust    文件:DustFormatterBlock.java   
/**
 * TODO if/when we implement alignment, update this method to do alignment properly
 *
 * This method handles indent and alignment on Enter.
 */
@NotNull
@Override
public ChildAttributes getChildAttributes(int newChildIndex) {
  /**
   * We indent if we're in a TAG_BLOCK (note that this works nicely since Enter can only be invoked
   * INSIDE a block (i.e. after the open block).
   *
   * Also indent if we are wrapped in a block created by the templated language
   */
  if (myNode.getElementType() == DustTypes.TAG_BLOCK
      || (getParent() instanceof DataLanguageBlockWrapper
      && (myNode.getElementType() != DustTypes.STATEMENTS || myNode.getTreeNext() instanceof PsiErrorElement))) {
    return new ChildAttributes(Indent.getNormalIndent(), null);
  } else {
    return new ChildAttributes(Indent.getNoneIndent(), null);
  }
}
项目:educational-plugin    文件:StudyHighlightErrorFilter.java   
@Override
public boolean shouldHighlightErrorElement(@NotNull PsiErrorElement element) {
  PsiFile file = element.getContainingFile();
  if (file == null) {
    return true;
  }
  VirtualFile virtualFile = file.getVirtualFile();
  if (virtualFile == null) {
    return true;
  }
  TaskFile taskFile = StudyUtils.getTaskFile(element.getProject(), virtualFile);
  return taskFile == null || taskFile.isHighlightErrors();
}
项目:educational-plugin    文件:CCHighlightErrorFilter.java   
@Override
public boolean shouldHighlightErrorElement(@NotNull PsiErrorElement element) {
  PsiFile file = element.getContainingFile();
  if (file == null) {
    return true;
  }
  VirtualFile virtualFile = file.getVirtualFile();
  if (virtualFile == null) {
    return true;
  }
  if (virtualFile.getPath().contains(CCUtils.GENERATED_FILES_FOLDER)) {
    return false;
  }
  return true;
}
项目:lua-for-idea    文件:LuaFormattingBlock.java   
/**
 * @param node Tree node
 * @return true if node is incomplete
 */
public boolean isIncomplete(@NotNull final ASTNode node) {
  if (node.getElementType() instanceof ILazyParseableElementType) return false;
  ASTNode lastChild = node.getLastChildNode();
  while (lastChild != null &&
      !(lastChild.getElementType() instanceof ILazyParseableElementType) &&
      (lastChild.getPsi() instanceof PsiWhiteSpace || lastChild.getPsi() instanceof PsiComment)) {
    lastChild = lastChild.getTreePrev();
  }
  return lastChild != null && (lastChild.getPsi() instanceof PsiErrorElement || isIncomplete(lastChild));
}
项目:bxfs    文件:BxReferencePatterns.java   
/**
 * Is the element have expected position in method parameters list
 * and all previous parameters is valid
 */
private static boolean isParameterDepth(Object o, int depth) {
    PsiElement[] parameters = ((ParameterList) ((PsiElement) o).getParent()).getParameters();
    /* Если параметров меньше, чем необходимо - облом */
    if (parameters.length < depth)
        return false;
    /* Все предыдущие параметры должны быть корректными */
    if (depth > 1) for (int i = 0; i < depth; i++) {
        if (parameters[i] instanceof PsiErrorElement)
            return false;
    }
    /* Проверяем, что указанный параметр имеет правильную глубину вложенности */
    return parameters[depth - 1].equals(o);
}
项目:intellij-ce-playground    文件:MissingArrayInitializerBraceFixer.java   
@Override
public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException {
  if (!(psiElement instanceof PsiArrayInitializerExpression)) return;
  PsiArrayInitializerExpression expr = (PsiArrayInitializerExpression)psiElement;
  if (!expr.getText().endsWith("}")) {
    PsiErrorElement err = ContainerUtil.findInstance(expr.getChildren(), PsiErrorElement.class);
    int endOffset = (err != null ? err : expr).getTextRange().getEndOffset();
    editor.getDocument().insertString(endOffset, "}");
  }
}
项目:intellij-ce-playground    文件:DefaultHighlightVisitor.java   
@Override
public void visit(@NotNull PsiElement element) {
  if (element instanceof PsiErrorElement) {
    if (myHighlightErrorElements) visitErrorElement((PsiErrorElement)element);
  }
  else {
    if (myRunAnnotators) runAnnotators(element);
  }
  if (myAnnotationHolder.hasAnnotations()) {
    for (Annotation annotation : myAnnotationHolder) {
      myHolder.add(HighlightInfo.fromAnnotation(annotation, null, myBatchMode));
    }
    myAnnotationHolder.clear();
  }
}
项目:intellij-ce-playground    文件:DefaultHighlightVisitor.java   
private void visitErrorElement(final PsiErrorElement element) {
  for(HighlightErrorFilter errorFilter: myErrorFilters) {
    if (!errorFilter.shouldHighlightErrorElement(element)) {
      return;
    }
  }
  HighlightInfo info = createErrorElementInfo(element);
  myHolder.add(info);
}
项目:intellij-ce-playground    文件:CodeSamplesCorrectnessTest.java   
private void processCodeSamples(@NotNull LanguageCodeStyleSettingsProvider provider, @NotNull List<CodeSampleInfo> samples) {
  for (CodeSampleInfo sample : samples) {
    Collection<PsiErrorElement> errorReports = getErrorsForText(provider, sample.codeSample);
    if (errorReports.isEmpty()) {
      continue;
    }
    CodeErrorReport report = new CodeErrorReport(sample, provider.getLanguage(), errorReports);
    myErrorReports.add(report);
  }
}