下面列出了com.intellij.psi.PsiModifierList#getParent ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static boolean isModifierListSupported(@NotNull PsiModifierList modifierList) {
PsiElement modifierListParent = modifierList.getParent();
if (modifierListParent instanceof PsiClass) {
PsiClass parentClass = (PsiClass) modifierListParent;
if (PsiAnnotationSearchUtil.isAnnotatedWith(parentClass, UtilityClass.class)) {
return UtilityClassProcessor.validateOnRightType(parentClass, new ProblemNewBuilder());
}
}
if (!isElementFieldOrMethodOrInnerClass(modifierListParent)) {
return false;
}
PsiClass searchableClass = PsiTreeUtil.getParentOfType(modifierListParent, PsiClass.class, true);
return null != searchableClass && PsiAnnotationSearchUtil.isAnnotatedWith(searchableClass, UtilityClass.class) && UtilityClassProcessor.validateOnRightType(searchableClass, new ProblemNewBuilder());
}
@Override
public void transformModifiers(@NotNull PsiModifierList modifierList, @NotNull final Set<String> modifiers) {
final PsiElement parent = modifierList.getParent();
// FINAL
if (parent instanceof PsiClass) {
PsiClass psiClass = (PsiClass) parent;
if (PsiAnnotationSearchUtil.isAnnotatedWith(psiClass, UtilityClass.class)) {
modifiers.add(PsiModifier.FINAL);
}
}
// STATIC
if (isElementFieldOrMethodOrInnerClass(parent)) {
modifiers.add(PsiModifier.STATIC);
}
}
@Override
public void transformModifiers(@NotNull PsiModifierList modifierList, @NotNull final Set<String> modifiers) {
if (modifiers.contains(PsiModifier.STATIC)) {
return; // skip static fields
}
final PsiModifierListOwner parentElement = PsiTreeUtil.getParentOfType(modifierList, PsiModifierListOwner.class, false);
if (null != parentElement) {
// FINAL
if (!PsiAnnotationSearchUtil.isAnnotatedWith(parentElement, lombok.experimental.NonFinal.class)) {
modifiers.add(PsiModifier.FINAL);
}
// PRIVATE
if (modifierList.getParent() instanceof PsiField &&
// Visibility is only changed for package private fields
hasPackagePrivateModifier(modifierList) &&
// except they are annotated with @PackagePrivate
!PsiAnnotationSearchUtil.isAnnotatedWith(parentElement, lombok.experimental.PackagePrivate.class)) {
modifiers.add(PsiModifier.PRIVATE);
// IDEA _right now_ checks if other modifiers are set, and ignores PACKAGE_LOCAL but may as well clean it up
modifiers.remove(PsiModifier.PACKAGE_LOCAL);
}
}
}
@Override
public boolean isSupported(@NotNull PsiModifierList modifierList) {
final PsiElement parent = modifierList.getParent();
return (parent instanceof PsiLocalVariable && ValProcessor.isVal((PsiLocalVariable) parent));
}
@Override
public boolean isSupported(@NotNull PsiModifierList modifierList) {
final PsiElement modifierListParent = modifierList.getParent();
if (!(modifierListParent instanceof PsiField || modifierListParent instanceof PsiClass)) {
return false;
}
PsiClass searchableClass = PsiTreeUtil.getParentOfType(modifierList, PsiClass.class, true);
return null != searchableClass && PsiAnnotationSearchUtil.isAnnotatedWith(searchableClass, lombok.Value.class);
}