mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-385810 javadoc: highlight wrong ref regardless of module presence
GitOrigin-RevId: 1d15f0047cf42bfadb4fc5756facc6f0013d2e84
This commit is contained in:
committed by
intellij-monorepo-bot
parent
673d615897
commit
2c72a7b551
+13
-12
@@ -44,6 +44,7 @@ import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiJavaCodeReferenceElement;
|
||||
import com.intellij.psi.PsiJavaFile;
|
||||
import com.intellij.psi.PsiJavaModule;
|
||||
import com.intellij.psi.PsiJavaModuleReferenceElement;
|
||||
import com.intellij.psi.PsiMember;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
@@ -55,6 +56,7 @@ import com.intellij.psi.PsiTypeElement;
|
||||
import com.intellij.psi.ResolveResult;
|
||||
import com.intellij.psi.SmartPointerManager;
|
||||
import com.intellij.psi.SmartPsiElementPointer;
|
||||
import com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.PsiFileReference;
|
||||
import com.intellij.psi.impl.source.tree.JavaDocElementType;
|
||||
import com.intellij.psi.javadoc.JavadocManager;
|
||||
@@ -292,12 +294,6 @@ public final class JavaDocReferenceInspection extends LocalInspectionTool {
|
||||
linkElement, reference.getRangeInElement(), message, ProblemHighlightType.LIKE_UNKNOWN_SYMBOL, isOnTheFly, fixes.toArray(LocalQuickFix.EMPTY_ARRAY)));
|
||||
}
|
||||
|
||||
private boolean visitDocRefHolder(PsiDocReferenceHolder refHolder, PsiElement context, ProblemsHolder holder, boolean isOnTheFly) {
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void visitRefInDocTag(PsiDocTag tag, JavadocManager manager, PsiElement context, ProblemsHolder holder, boolean isOnTheFly) {
|
||||
PsiDocTagValue value = tag.getValueElement();
|
||||
if (value == null) return;
|
||||
@@ -318,16 +314,21 @@ public final class JavaDocReferenceInspection extends LocalInspectionTool {
|
||||
if (checkFragmentReference(context, holder, isOnTheFly, fragmentRef)) return;
|
||||
}
|
||||
|
||||
PsiReference reference = value.getReference();
|
||||
PsiElement valueElement = value;
|
||||
PsiReference reference = valueElement.getReference();
|
||||
if (reference == null && valueElement.getLastChild() instanceof PsiDocMethodOrFieldRef) {
|
||||
valueElement = valueElement.getLastChild();
|
||||
reference = valueElement.getReference();
|
||||
}
|
||||
|
||||
if (reference == null) return;
|
||||
int textOffset = value.getTextOffset();
|
||||
if (textOffset == value.getTextRange().getEndOffset()) return;
|
||||
PsiDocTagValue valueElement = tag.getValueElement();
|
||||
if (valueElement == null) return;
|
||||
int textOffset = valueElement.getTextOffset();
|
||||
if (textOffset == valueElement.getTextRange().getEndOffset()) return;
|
||||
|
||||
PsiElement element = reference.resolve();
|
||||
String paramName =
|
||||
value.getContainingFile().getViewProvider().getContents().subSequence(textOffset, value.getTextRange().getEndOffset()).toString();
|
||||
valueElement.getContainingFile().getViewProvider().getContents().subSequence(textOffset, valueElement.getTextRange().getEndOffset())
|
||||
.toString();
|
||||
String message = element == null && reference instanceof PsiPolyVariantReference ?
|
||||
getResolveErrorMessage(((PsiPolyVariantReference)reference).multiResolve(false), context, paramName) :
|
||||
getResolveErrorMessage(element, context, paramName);
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
/// [java.base/java.lang.String]
|
||||
/// {@link java.base/java.lang.String}
|
||||
class Test {}
|
||||
+1
@@ -81,6 +81,7 @@ public class JavadocDeclarationHighlightingTest extends LightDaemonAnalyzerTestC
|
||||
public void testLink1() { doTest(); }
|
||||
public void testLink2() { doTest(); }
|
||||
public void testLink3() { doTest(); }
|
||||
public void testLink4() { doTest(); }
|
||||
public void testLinkFromInnerClassToSelfMethod() { doTest(); }
|
||||
public void testValueBadReference() { doTest(); }
|
||||
public void testValueGoodReference() { doTest(); }
|
||||
|
||||
Reference in New Issue
Block a user