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


Java PsiImplUtil.findApplicableTarget方法代码示例

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


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

示例1: isAnnotated

import com.intellij.psi.impl.PsiImplUtil; //导入方法依赖的package包/类
private static boolean isAnnotated(ASTNode element) {
  PsiJavaCodeReferenceElement ref = (PsiJavaCodeReferenceElement)element.getPsi();

  PsiElement qualifier = ref.getQualifier();
  if (qualifier instanceof PsiJavaCodeReferenceElement) {
    if (((PsiJavaCodeReferenceElement)qualifier).resolve() instanceof PsiPackage) {
      return false;
    }
    if (PsiTreeUtil.getChildOfType(qualifier, PsiAnnotation.class) != null) {
      return true;
    }
  }

  PsiModifierList modifierList = PsiImplUtil.findNeighbourModifierList(ref);
  if (modifierList != null) {
    for (PsiAnnotation annotation : modifierList.getAnnotations()) {
      if (PsiImplUtil.findApplicableTarget(annotation, PsiAnnotation.TargetType.TYPE_USE) != null) {
        return true;
      }
    }
  }

  return false;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:25,代码来源:JavaReferenceAdjuster.java

示例2: isAnnotationApplicableTo

import com.intellij.psi.impl.PsiImplUtil; //导入方法依赖的package包/类
public static boolean isAnnotationApplicableTo(GrAnnotation annotation, @NotNull TargetType... elementTypeFields) {
  return elementTypeFields.length == 0 || PsiImplUtil.findApplicableTarget(annotation, elementTypeFields) != null;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:4,代码来源:GrAnnotationImpl.java

示例3: weigh

import com.intellij.psi.impl.PsiImplUtil; //导入方法依赖的package包/类
@Override
public Comparable weigh(@NotNull LookupElement element, @NotNull CompletionLocation location) {
  final PsiElement position = location.getCompletionParameters().getPosition();
  if (!(position.getContainingFile() instanceof GroovyFileBase)) return null;

  Object o = element.getObject();
  if (o instanceof ResolveResult) {
    o = ((ResolveResult)o).getElement();
  }

  final PsiElement parent = position.getParent();
  final PsiElement qualifier = parent instanceof GrReferenceElement ? ((GrReferenceElement)parent).getQualifier() : null;
  if (qualifier == null) {
    if (o instanceof NamedArgumentDescriptor) {
      switch (((NamedArgumentDescriptor)o).getPriority()) {
        case ALWAYS_ON_TOP:
          return NotQualifiedKind.onTop;
        case AS_LOCAL_VARIABLE:
          return NotQualifiedKind.local;
        default:
          return NotQualifiedKind.unknown;
      }
    }
    if (o instanceof PsiVariable && !(o instanceof PsiField)) {
      return NotQualifiedKind.local;
    }

    PsiTypeLookupItem item = element.as(PsiTypeLookupItem.CLASS_CONDITION_KEY);
    if (item != null && item.getBracketsCount() > 0) {
      return NotQualifiedKind.arrayType;
    }

    if (isPriorityKeyword(o)) return NotQualifiedKind.local;
    if (isLightElement(o)) return NotQualifiedKind.unknown;
    if (o instanceof PsiClass) {
      if (((PsiClass)o).isAnnotationType() && GrMainCompletionProvider.AFTER_AT.accepts(position)) {
        final GrAnnotation annotation = PsiTreeUtil.getParentOfType(position, GrAnnotation.class);
        if (annotation != null) {
          PsiElement annoParent = annotation.getParent();
          PsiElement ownerToUse = annoParent instanceof PsiModifierList ? annoParent.getParent() : annoParent;
          PsiAnnotation.TargetType[] elementTypeFields = GrAnnotationImpl.getApplicableElementTypeFields(ownerToUse);
          if (PsiImplUtil.findApplicableTarget((PsiClass)o, elementTypeFields) != null) {
            return NotQualifiedKind.restrictedClass;
          }
        }
      }
      if (GrMainCompletionProvider.IN_CATCH_TYPE.accepts(position) &&
          InheritanceUtil.isInheritor((PsiClass)o, CommonClassNames.JAVA_LANG_THROWABLE)) {
        return NotQualifiedKind.restrictedClass;
      }
    }
    if (o instanceof PsiMember) {
      final PsiClass containingClass = ((PsiMember)o).getContainingClass();
      if (isAccessor((PsiMember)o)) return NotQualifiedKind.accessor;
      if (o instanceof PsiClass && ((PsiClass)o).getContainingClass() == null || o instanceof PsiPackage) return NotQualifiedKind.unknown;
      if (o instanceof PsiClass) return NotQualifiedKind.innerClass;
      if (PsiTreeUtil.isContextAncestor(containingClass, position, false)) return NotQualifiedKind.currentClassMember;
      return NotQualifiedKind.member;
    }
    return NotQualifiedKind.unknown;
  }
  else {
    if (o instanceof PsiEnumConstant) return QualifiedKind.enumConstant;

    if (isLightElement(o)) return QualifiedKind.unknown;
    if (o instanceof PsiMember) {
      if (isTrashMethod((PsiMember)o)) return QualifiedKind.unknown;
      if (isAccessor((PsiMember)o)) return QualifiedKind.accessor;
      if (isQualifierClassMember((PsiMember)o, qualifier)) {
        return QualifiedKind.currentClassMember;
      }
      if (o instanceof PsiClass && ((PsiClass)o).getContainingClass() == null || o instanceof PsiPackage) return QualifiedKind.unknown;
      if (o instanceof PsiClass) return QualifiedKind.innerClass;
      return QualifiedKind.member;
    }
    return QualifiedKind.unknown;
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:79,代码来源:GrKindWeigher.java


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