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.LombokPsiElementUsage;
|
||||
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.Nullable;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
if (element instanceof PsiField psiField) {
|
||||
if (isUsedByLombokAnnotations(psiField, psiField, elementUsages) ||
|
||||
isUsedByLombokAnnotations(psiField, psiField.getContainingClass(), elementUsages)) {
|
||||
if (isUsedByLombokAnnotations(psiField, psiField, AbstractFieldProcessor.class::isInstance, elementUsages) ||
|
||||
isUsedByLombokAnnotations(psiField, psiField.getContainingClass(), AbstractClassProcessor.class::isInstance, elementUsages)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -45,10 +48,12 @@ public final class LombokImplicitUsageProvider implements ImplicitUsageProvider
|
||||
|
||||
private static boolean isUsedByLombokAnnotations(@NotNull PsiField psiField,
|
||||
@Nullable PsiModifierListOwner modifierListOwner,
|
||||
Predicate<Processor> kindOfProcessor,
|
||||
EnumSet<LombokPsiElementUsage> elementUsages) {
|
||||
if (null != modifierListOwner) {
|
||||
for (PsiAnnotation psiAnnotation : modifierListOwner.getAnnotations()) {
|
||||
for (Processor processor : LombokProcessorManager.getProcessors(psiAnnotation)) {
|
||||
if(kindOfProcessor.test(processor)) {
|
||||
final LombokPsiElementUsage psiElementUsage = processor.checkFieldUsage(psiField, psiAnnotation);
|
||||
if (elementUsages.contains(psiElementUsage)) {
|
||||
return true;
|
||||
@@ -56,6 +61,7 @@ public final class LombokImplicitUsageProvider implements ImplicitUsageProvider
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user