[lombok] IDEA-353161 Call only corresponding lombok processors

GitOrigin-RevId: 294c821568f9bf72ebc5efb57154beb5ab0aa1a7
This commit is contained in:
Michail Plushnikov
2024-05-12 19:28:27 +02:00
committed by intellij-monorepo-bot
parent be6ddc2aec
commit 7b0adc910b

View File

@@ -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;
}
} }
} }
} }