From 5a00cc1b8c3348b6974ccd8acbfedba98ecd172a Mon Sep 17 00:00:00 2001 From: Georgii Ustinov Date: Tue, 17 Oct 2023 14:09:53 +0300 Subject: [PATCH] [java] Fix language injection for java records #IDEA-321083 fixed GitOrigin-RevId: 6370f1cdbf9f21490f5ec82e8e44fe1b2d995bee --- .../intelliLang/inject/java/InjectionCache.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/InjectionCache.java b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/InjectionCache.java index 328459a83656..2653e153d7e9 100644 --- a/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/InjectionCache.java +++ b/plugins/IntelliLang/java-support/org/intellij/plugins/intelliLang/inject/java/InjectionCache.java @@ -8,10 +8,7 @@ import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.searches.AnnotatedElementsSearch; import com.intellij.psi.search.searches.AnnotatedElementsSearch.Parameters; -import com.intellij.psi.util.CachedValue; -import com.intellij.psi.util.CachedValueProvider; -import com.intellij.psi.util.CachedValuesManager; -import com.intellij.psi.util.PsiModificationTracker; +import com.intellij.psi.util.*; import com.intellij.util.PatternValuesIndex; import com.intellij.util.containers.ContainerUtil; import org.intellij.plugins.intelliLang.Configuration; @@ -58,7 +55,8 @@ public final class InjectionCache { Set result = new HashSet<>(); List annoClasses = new ArrayList<>(List.of(JavaPsiFacade.getInstance(myProject).findClasses(annotationClassName, allScope))); for (int cursor = 0; cursor < annoClasses.size(); cursor++) { - Parameters parameters = new Parameters(annoClasses.get(cursor), usageScope, true, PsiClass.class, PsiParameter.class, PsiMethod.class); + Parameters parameters = new Parameters(annoClasses.get(cursor), usageScope, true, + PsiClass.class, PsiParameter.class, PsiMethod.class, PsiRecordComponent.class); AnnotatedElementsSearch.searchElements(parameters).forEach(element -> { if (element instanceof PsiParameter) { final PsiElement scope = ((PsiParameter)element).getDeclarationScope(); @@ -72,6 +70,12 @@ public final class InjectionCache { else if (element instanceof PsiMethod) { ContainerUtil.addIfNotNull(result, ((PsiMember)element).getName()); } + else if (element instanceof PsiRecordComponent) { + final PsiClass record = PsiTreeUtil.getParentOfType(element, PsiClass.class); + if (record != null) { + ContainerUtil.addIfNotNull(result, record.getName()); + } + } return true; }); }