[java-lombok] IDEA-352726 Augment class in dumb mode in Lombok

- refactor tests

GitOrigin-RevId: ef64d0bdabff09da0bed2e48d3ddc5e134cc288a
This commit is contained in:
Mikhail Pyltsin
2024-05-14 11:55:11 +02:00
committed by intellij-monorepo-bot
parent 2ca5b2bcd4
commit 4fb5a8d60e

View File

@@ -11,6 +11,7 @@ import com.intellij.testFramework.DumbModeTestUtils;
import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtil;
import de.plushnikov.intellij.plugin.util.PsiElementUtil; import de.plushnikov.intellij.plugin.util.PsiElementUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*; import java.util.*;
import java.util.function.Predicate; import java.util.function.Predicate;
@@ -190,16 +191,15 @@ public abstract class AbstractLombokParsingTestCase extends AbstractLombokLightC
} }
private void compareAnnotations(PsiModifierList beforeModifierList, PsiModifierList afterModifierList) { private void compareAnnotations(PsiModifierList beforeModifierList, PsiModifierList afterModifierList) {
DumbService dumbService = DumbService.getInstance(beforeModifierList.getProject());
if (shouldCompareAnnotations()) { if (shouldCompareAnnotations()) {
Collection<String> beforeAnnotations = Arrays.stream(beforeModifierList.getAnnotations()) Collection<String> beforeAnnotations = Arrays.stream(beforeModifierList.getAnnotations())
.map(an-> dumbService.computeWithAlternativeResolveEnabled(()->an.getQualifiedName())) .map(an-> getAnnotationQualifiedName(an))
.filter(Pattern.compile("lombok.*").asPredicate().negate().or(LombokClassNames.NON_NULL::equals)) .filter(Pattern.compile("lombok.*").asPredicate().negate().or(LombokClassNames.NON_NULL::equals))
.filter(Pattern.compile(annotationToComparePattern()).asPredicate()) .filter(Pattern.compile(annotationToComparePattern()).asPredicate())
.filter(Predicate.not(annotationsToIgnoreList()::contains)) .filter(Predicate.not(annotationsToIgnoreList()::contains))
.toList(); .toList();
Collection<String> afterAnnotations = Arrays.stream(afterModifierList.getAnnotations()) Collection<String> afterAnnotations = Arrays.stream(afterModifierList.getAnnotations())
.map(an-> dumbService.computeWithAlternativeResolveEnabled(()->an.getQualifiedName())) .map(an-> getAnnotationQualifiedName(an))
.filter(Pattern.compile(annotationToComparePattern()).asPredicate()) .filter(Pattern.compile(annotationToComparePattern()).asPredicate())
.filter(Predicate.not(annotationsToIgnoreList()::contains)) .filter(Predicate.not(annotationsToIgnoreList()::contains))
.toList(); .toList();
@@ -211,10 +211,8 @@ public abstract class AbstractLombokParsingTestCase extends AbstractLombokLightC
// compare annotations parameter list // compare annotations parameter list
for (PsiAnnotation beforeAnnotation : beforeModifierList.getAnnotations()) { for (PsiAnnotation beforeAnnotation : beforeModifierList.getAnnotations()) {
String qualifiedName = String qualifiedName = getAnnotationQualifiedName(beforeAnnotation);
dumbService.computeWithAlternativeResolveEnabled(() -> beforeAnnotation.getQualifiedName()); PsiAnnotation afterAnnotation = findAnnotation(afterModifierList, qualifiedName);
PsiAnnotation afterAnnotation =
dumbService.computeWithAlternativeResolveEnabled(() -> afterModifierList.findAnnotation(qualifiedName));
if (null != afterAnnotation) { if (null != afterAnnotation) {
Map<String, String> beforeParameter = Stream.of(beforeAnnotation.getParameterList().getAttributes()) Map<String, String> beforeParameter = Stream.of(beforeAnnotation.getParameterList().getAttributes())
.collect(Collectors.toMap(PsiNameValuePair::getAttributeName, p -> p.getValue().getText())); .collect(Collectors.toMap(PsiNameValuePair::getAttributeName, p -> p.getValue().getText()));
@@ -226,6 +224,16 @@ public abstract class AbstractLombokParsingTestCase extends AbstractLombokLightC
} }
} }
private static @Nullable PsiAnnotation findAnnotation(PsiModifierList modifierList, String qualifiedName) {
return DumbService.getInstance(modifierList.getProject())
.computeWithAlternativeResolveEnabled(() -> modifierList.findAnnotation(qualifiedName));
}
private static @Nullable String getAnnotationQualifiedName(PsiAnnotation annotation) {
return DumbService.getInstance(annotation.getProject())
.computeWithAlternativeResolveEnabled(() -> annotation.getQualifiedName());
}
private void compareMethods(PsiClass beforeClass, PsiClass afterClass) { private void compareMethods(PsiClass beforeClass, PsiClass afterClass) {
PsiMethod[] beforeMethods = beforeClass.getMethods(); PsiMethod[] beforeMethods = beforeClass.getMethods();
PsiMethod[] afterMethods = afterClass.getMethods(); PsiMethod[] afterMethods = afterClass.getMethods();