[java] [unused declaration]: process record's canonical constructors

EA-296213 (plugin) - CCE: RefJavaManagerImpl.getParameterReference

GitOrigin-RevId: 3b01695e5ff11d45fdcfdf6c1ffeb22a67b194bf
This commit is contained in:
Anna Kozlova
2021-10-18 09:37:48 +02:00
committed by intellij-monorepo-bot
parent 679ebdb31b
commit 3711123cf0
6 changed files with 32 additions and 6 deletions

View File

@@ -7,6 +7,7 @@ import com.intellij.java.analysis.JavaAnalysisBundle;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.*;
import com.intellij.psi.impl.light.LightElement;
import com.intellij.psi.impl.light.LightRecordCanonicalConstructor;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.MethodSignatureUtil;
import com.intellij.psi.util.PsiUtil;
@@ -211,10 +212,24 @@ public class RefJavaUtilImpl extends RefJavaUtil {
if (psiResolved == null) {
psiResolved = tryFindKotlinParameter(node, decl);
}
if (psiResolved instanceof LightElement) {
psiResolved = psiResolved.getNavigationElement();
RefElement refResolved;
if (psiResolved instanceof LightRecordCanonicalConstructor) {
refResolved = refFrom.getRefManager().getReference(psiResolved.getNavigationElement());
if (refResolved instanceof RefClass) {
List<RefMethod> constructors = ((RefClass)refResolved).getConstructors();
if (!constructors.isEmpty()) {
refResolved = constructors.get(0);
}
}
}
else {
if (psiResolved instanceof LightElement) {
psiResolved = psiResolved.getNavigationElement();
}
refResolved = refFrom.getRefManager().getReference(psiResolved);
}
RefElement refResolved = refFrom.getRefManager().getReference(psiResolved);
boolean writing = isAccessedForWriting(node);
boolean reading = isAccessedForReading(node);
refFrom.addReference(refResolved, psiResolved, decl, writing, reading, node);