2017-05-13 2 views
0

In einem IntelliJ Plugin würde Ich mag den Wert 10 ein PsiElementSOME_CONST aus einem Quellcode liek dies erhalten:Hot, um die Definition eines Bezeichners eines PsiElement zu bekommen?

package mypackage; 
public class Example { 
    public void someMethod() { 
    otherMethod(SOME_CONST); 
    } 
... 
    private static final int SOME_CONST = 10; 
} 

Ich habe die PsiElement elem von SOME_CONST. Ich denke, ich muss die Referenzen irgendwie finden. Aber ich finde nur leere Listen. Zum Beispiel:

public void actionPerformed(AnActionEvent e) { 
    ... 
    final int offset = editor.getCaretModel().getOffset(); 
    final PsiElement elem = psiFile.findElementAt(offset); 
    final PsiReference[] references = elem.getReferences(); 

references hat Nulllänge. Auch bedeutet dies nichts finden:

final Query<PsiReference> refs = ReferencesSearch.search(elem); 
    final PsiReference ref = refs.findFirst(); 

Wie komme ich an die 10?

Antwort

1

Der Bezeichner selbst hat keine Verweise, Sie müssen also mit PsiElement.getParent() in den Baum gehen, bis Sie ein Element finden, das Verweise enthält.

ReferencesSearch.search(elem) findet Referenzen zeigt bis das angegebene Element, das das Gegenteil von dem ist, was Sie brauchen.

Verwandte Themen