mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] Fix language injection for java records
#IDEA-321083 fixed GitOrigin-RevId: 6370f1cdbf9f21490f5ec82e8e44fe1b2d995bee
This commit is contained in:
committed by
intellij-monorepo-bot
parent
008de6cf45
commit
5a00cc1b8c
+9
-5
@@ -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<String> result = new HashSet<>();
|
||||
List<PsiClass> 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;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user