当前位置: 首页>>代码示例>>Java>>正文


Java ILazyParseableElementType.parseContents方法代码示例

本文整理汇总了Java中com.intellij.psi.tree.ILazyParseableElementType.parseContents方法的典型用法代码示例。如果您正苦于以下问题:Java ILazyParseableElementType.parseContents方法的具体用法?Java ILazyParseableElementType.parseContents怎么用?Java ILazyParseableElementType.parseContents使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.intellij.psi.tree.ILazyParseableElementType的用法示例。


在下文中一共展示了ILazyParseableElementType.parseContents方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: ensureParsed

import com.intellij.psi.tree.ILazyParseableElementType; //导入方法依赖的package包/类
private void ensureParsed() {
  if (!ourParsingAllowed) {
    LOG.error("Parsing not allowed!!!");
  }
  CharSequence text = myText();
  if (text == null) return;

  if (TreeUtil.getFileElement(this) == null) {
    LOG.error("Chameleons must not be parsed till they're in file tree: " + this);
  }

  ApplicationManager.getApplication().assertReadAccessAllowed();

  ILazyParseableElementType type = (ILazyParseableElementType)getElementType();
  ASTNode parsedNode = type.parseContents(this);

  if (parsedNode == null && text.length() > 0) {
    CharSequence diagText = ApplicationManager.getApplication().isInternal() ? text : "";
    LOG.error("No parse for a non-empty string: " + diagText + "; type=" + LogUtil.objectAndClass(type));
  }

  synchronized (lock) {
    if (myText == null) return;
    if (rawFirstChild() != null) {
      LOG.error("Reentrant parsing?");
    }

    myText = null;

    if (parsedNode == null) return;
    super.rawAddChildrenWithoutNotifications((TreeElement)parsedNode);
  }

  // create PSI all at once, to reduce contention of PsiLock in CompositeElement.getPsi()
  // create PSI outside the 'lock' since this method grabs PSI_LOCK and deadlock is possible when someone else locks in the other order.
  createAllChildrenPsiIfNecessary();
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:38,代码来源:LazyParseableElement.java

示例2: ensureParsed

import com.intellij.psi.tree.ILazyParseableElementType; //导入方法依赖的package包/类
private void ensureParsed() {
  if (!ourParsingAllowed) {
    LOG.error("Parsing not allowed!!!");
  }
  CharSequence text = myText();
  if (text == null) return;

  if (TreeUtil.getFileElement(this) == null) {
    LOG.error("Chameleons must not be parsed till they're in file tree: " + this);
  }

  ApplicationManager.getApplication().assertReadAccessAllowed();

  DebugUtil.startPsiModification("lazy-parsing");
  try {
    ILazyParseableElementType type = (ILazyParseableElementType)getElementType();
    ASTNode parsedNode = type.parseContents(this);

    if (parsedNode == null && text.length() > 0) {
      CharSequence diagText = ApplicationManager.getApplication().isInternal() ? text : "";
      LOG.error("No parse for a non-empty string: " + diagText + "; type=" + LogUtil.objectAndClass(type));
    }

    synchronized (lock) {
      if (myText == null) return;
      if (rawFirstChild() != null) {
        LOG.error("Reentrant parsing?");
      }

      myText = null;

      if (parsedNode == null) return;
      super.rawAddChildrenWithoutNotifications((TreeElement)parsedNode);
    }
  }
  finally {
    DebugUtil.finishPsiModification();
  }

  if (!Boolean.TRUE.equals(ourSuppressEagerPsiCreation.get())) {
    // create PSI all at once, to reduce contention of PsiLock in CompositeElement.getPsi()
    // create PSI outside the 'lock' since this method grabs PSI_LOCK and deadlock is possible when someone else locks in the other order.
    createAllChildrenPsiIfNecessary();
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:46,代码来源:LazyParseableElement.java


注:本文中的com.intellij.psi.tree.ILazyParseableElementType.parseContents方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。