mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 06:05:01 +07:00
[javadoc] Add completion for fragment references
#IDEA-376337 GitOrigin-RevId: 887853966d3bea20f27f3d9f70d1c045176dc538
This commit is contained in:
committed by
intellij-monorepo-bot
parent
01693af6d4
commit
f421f79436
@@ -2,11 +2,13 @@
|
||||
package com.intellij.psi.impl.source.javadoc;
|
||||
|
||||
import com.intellij.psi.JavaElementVisitor;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElementVisitor;
|
||||
import com.intellij.psi.impl.source.Constants;
|
||||
import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.psi.javadoc.PsiDocTagValue;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class PsiDocFragmentRef extends CompositePsiElement implements PsiDocTagValue, Constants {
|
||||
public PsiDocFragmentRef() {
|
||||
@@ -22,4 +24,8 @@ public class PsiDocFragmentRef extends CompositePsiElement implements PsiDocTagV
|
||||
visitor.visitElement(this);
|
||||
}
|
||||
}
|
||||
|
||||
public @Nullable PsiClass getScope() {
|
||||
return PsiDocMethodOrFieldRef.getScope(this);
|
||||
}
|
||||
}
|
||||
|
||||
+17
-8
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.psi.impl.source.javadoc;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
@@ -151,9 +151,17 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo
|
||||
return ArrayUtilRt.toStringArray(types);
|
||||
}
|
||||
|
||||
private @Nullable PsiClass getScope(){
|
||||
if (getFirstChildNode().getElementType() == JavaDocElementType.DOC_REFERENCE_HOLDER) {
|
||||
final PsiElement firstChildPsi = SourceTreeToPsiMap.treeElementToPsi(getFirstChildNode().getFirstChildNode());
|
||||
private @Nullable PsiClass getScope() {
|
||||
return getScope(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the PsiClass targeted by the given reference element (e.g. {@code MyClass#…} or {@code MyClass##…}).
|
||||
*/
|
||||
public static @Nullable PsiClass getScope(CompositePsiElement ref) {
|
||||
final TreeElement firstChildNode = ref.getFirstChildNode();
|
||||
if (firstChildNode != null && firstChildNode.getElementType() == DOC_REFERENCE_HOLDER) {
|
||||
final PsiElement firstChildPsi = SourceTreeToPsiMap.treeElementToPsi(firstChildNode.getFirstChildNode());
|
||||
if (firstChildPsi instanceof PsiJavaCodeReferenceElement) {
|
||||
PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement)firstChildPsi;
|
||||
final PsiElement referencedElement = referenceElement.resolve();
|
||||
@@ -164,15 +172,16 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo
|
||||
final PsiKeyword keyword = (PsiKeyword)firstChildPsi;
|
||||
|
||||
if (keyword.getTokenType().equals(THIS_KEYWORD)) {
|
||||
return JavaResolveUtil.getContextClass(this);
|
||||
} else if (keyword.getTokenType().equals(SUPER_KEYWORD)) {
|
||||
final PsiClass contextClass = JavaResolveUtil.getContextClass(this);
|
||||
return JavaResolveUtil.getContextClass(ref);
|
||||
}
|
||||
else if (keyword.getTokenType().equals(SUPER_KEYWORD)) {
|
||||
final PsiClass contextClass = JavaResolveUtil.getContextClass(ref);
|
||||
if (contextClass != null) return contextClass.getSuperClass();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return JavaResolveUtil.getContextClass(this);
|
||||
return JavaResolveUtil.getContextClass(ref);
|
||||
}
|
||||
|
||||
public static PsiMethod @NotNull [] findMethods(@Nullable MethodSignature methodSignature,
|
||||
|
||||
Reference in New Issue
Block a user