mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-13 15:52:01 +07:00
[lombok] IDEA-353161 Call only corresponding lombok processors
GitOrigin-RevId: 294c821568f9bf72ebc5efb57154beb5ab0aa1a7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
be6ddc2aec
commit
7b0adc910b
@@ -8,10 +8,13 @@ import com.intellij.psi.PsiModifierListOwner;
|
|||||||
import de.plushnikov.intellij.plugin.processor.LombokProcessorManager;
|
import de.plushnikov.intellij.plugin.processor.LombokProcessorManager;
|
||||||
import de.plushnikov.intellij.plugin.processor.LombokPsiElementUsage;
|
import de.plushnikov.intellij.plugin.processor.LombokPsiElementUsage;
|
||||||
import de.plushnikov.intellij.plugin.processor.Processor;
|
import de.plushnikov.intellij.plugin.processor.Processor;
|
||||||
|
import de.plushnikov.intellij.plugin.processor.clazz.AbstractClassProcessor;
|
||||||
|
import de.plushnikov.intellij.plugin.processor.field.AbstractFieldProcessor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides implicit usages of lombok fields
|
* Provides implicit usages of lombok fields
|
||||||
@@ -35,8 +38,8 @@ public final class LombokImplicitUsageProvider implements ImplicitUsageProvider
|
|||||||
|
|
||||||
private static boolean checkUsage(@NotNull PsiElement element, EnumSet<LombokPsiElementUsage> elementUsages) {
|
private static boolean checkUsage(@NotNull PsiElement element, EnumSet<LombokPsiElementUsage> elementUsages) {
|
||||||
if (element instanceof PsiField psiField) {
|
if (element instanceof PsiField psiField) {
|
||||||
if (isUsedByLombokAnnotations(psiField, psiField, elementUsages) ||
|
if (isUsedByLombokAnnotations(psiField, psiField, AbstractFieldProcessor.class::isInstance, elementUsages) ||
|
||||||
isUsedByLombokAnnotations(psiField, psiField.getContainingClass(), elementUsages)) {
|
isUsedByLombokAnnotations(psiField, psiField.getContainingClass(), AbstractClassProcessor.class::isInstance, elementUsages)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -45,13 +48,16 @@ public final class LombokImplicitUsageProvider implements ImplicitUsageProvider
|
|||||||
|
|
||||||
private static boolean isUsedByLombokAnnotations(@NotNull PsiField psiField,
|
private static boolean isUsedByLombokAnnotations(@NotNull PsiField psiField,
|
||||||
@Nullable PsiModifierListOwner modifierListOwner,
|
@Nullable PsiModifierListOwner modifierListOwner,
|
||||||
|
Predicate<Processor> kindOfProcessor,
|
||||||
EnumSet<LombokPsiElementUsage> elementUsages) {
|
EnumSet<LombokPsiElementUsage> elementUsages) {
|
||||||
if (null != modifierListOwner) {
|
if (null != modifierListOwner) {
|
||||||
for (PsiAnnotation psiAnnotation : modifierListOwner.getAnnotations()) {
|
for (PsiAnnotation psiAnnotation : modifierListOwner.getAnnotations()) {
|
||||||
for (Processor processor : LombokProcessorManager.getProcessors(psiAnnotation)) {
|
for (Processor processor : LombokProcessorManager.getProcessors(psiAnnotation)) {
|
||||||
final LombokPsiElementUsage psiElementUsage = processor.checkFieldUsage(psiField, psiAnnotation);
|
if(kindOfProcessor.test(processor)) {
|
||||||
if (elementUsages.contains(psiElementUsage)) {
|
final LombokPsiElementUsage psiElementUsage = processor.checkFieldUsage(psiField, psiAnnotation);
|
||||||
return true;
|
if (elementUsages.contains(psiElementUsage)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user