From f58f454022a44aa974f8de3c6ad2dd17e49247ca Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Fri, 2 Aug 2024 19:21:04 +0200 Subject: [PATCH] [java-compiler] IDEA-354499 After building the project, find usages is broken for Record - workaround, actual problems in jps-javac-extension, because it doesn't support RECORD as type GitOrigin-RevId: 8cc695f9ba2672cff732496678f16cd3d96b83ed --- .../backwardRefs/CompilerReferenceServiceBase.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceBase.java b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceBase.java index c4ccde5129aa..028ba4f055e0 100644 --- a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceBase.java +++ b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/CompilerReferenceServiceBase.java @@ -24,6 +24,7 @@ import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.ModificationTracker; +import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.ThrowableComputable; import com.intellij.openapi.util.io.FileAttributes; @@ -32,6 +33,7 @@ import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.registry.RegistryManager; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiNamedElement; @@ -359,7 +361,13 @@ public abstract class CompilerReferenceServiceBase element.getContainingFile()); + Pair result = ReadAction.compute( + () -> new Pair<>(element.getContainingFile(), + element instanceof PsiClass psiClass && psiClass.isRecord())); + if (result.second) { + return false; //a workaround until jps-javac-extension will not be fixed + } + PsiFile file = result.getFirst(); return file != null && !InjectedLanguageManager.getInstance(project).isInjectedFragment(file); }