类com.intellij.psi.impl.light.LightElement源码实例Demo

下面列出了怎么用com.intellij.psi.impl.light.LightElement的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: consulo   文件: RefManagerImpl.java
@Nullable
public RefElement getReference(PsiElement elem, final boolean ignoreScope) {
  if (ReadAction.compute(() -> elem == null || !elem.isValid() || elem instanceof LightElement || !(elem instanceof PsiDirectory) && !belongsToScope(elem, ignoreScope))) {
    return null;
  }

  return getFromRefTableOrCache(elem, () -> ReadAction.compute(() -> {
    final RefManagerExtension extension = getExtension(elem.getLanguage());
    if (extension != null) {
      final RefElement refElement = extension.createRefElement(elem);
      if (refElement != null) return (RefElementImpl)refElement;
    }
    if (elem instanceof PsiFile) {
      return new RefFileImpl((PsiFile)elem, this);
    }
    if (elem instanceof PsiDirectory) {
      return new RefDirectoryImpl((PsiDirectory)elem, this);
    }
    return null;
  }), element -> ReadAction.run(() -> {
    element.initialize();
    for (RefManagerExtension each : myExtensions.values()) {
      each.onEntityInitialized(element, elem);
    }
    fireNodeInitialized(element);
  }));
}
 
源代码2 项目: consulo   文件: RenameProcessor.java
public static MultiMap<PsiElement, UsageInfo> classifyUsages(Collection<? extends PsiElement> elements, UsageInfo[] usages) {
  final MultiMap<PsiElement, UsageInfo> result = new MultiMap<>();
  for (UsageInfo usage : usages) {
    LOG.assertTrue(usage instanceof MoveRenameUsageInfo);
    if (usage.getReference() instanceof LightElement) {
      continue; //filter out implicit references (e.g. from derived class to super class' default constructor)
    }
    MoveRenameUsageInfo usageInfo = (MoveRenameUsageInfo)usage;
    if (usage instanceof RelatedUsageInfo) {
      final PsiElement relatedElement = ((RelatedUsageInfo)usage).getRelatedElement();
      if (elements.contains(relatedElement)) {
        result.putValue(relatedElement, usage);
      }
    } else {
      PsiElement referenced = usageInfo.getReferencedElement();
      if (elements.contains(referenced)) {
        result.putValue(referenced, usage);
      } else if (referenced != null) {
        PsiElement indirect = referenced.getNavigationElement();
        if (elements.contains(indirect)) {
          result.putValue(indirect, usage);
        }
      }

    }
  }
  return result;
}
 
 类所在包
 类方法
 同包方法