mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
stub-based smart pointers: when switching to tree and finding anchor, required element type will change (e.g. PsiClass->PsiIdentifier)
This commit is contained in:
@@ -78,7 +78,7 @@ class AnchorElementInfo extends SelfElementInfo {
|
||||
|
||||
PsiFile file = restoreFile();
|
||||
if (file == null) return null;
|
||||
PsiElement anchor = file.findElementAt(psiRange.getStartOffset());
|
||||
PsiElement anchor = findElementInside(file, psiRange.getStartOffset(), psiRange.getEndOffset(), myType, myLanguage);
|
||||
if (anchor == null) return null;
|
||||
|
||||
TextRange range = anchor.getTextRange();
|
||||
@@ -126,9 +126,11 @@ class AnchorElementInfo extends SelfElementInfo {
|
||||
Document document = getDocumentToSynchronize();
|
||||
if (element != null && document != null) {
|
||||
// switch to tree
|
||||
myStubElementTypeAndId = pack(-1, null);
|
||||
PsiElement anchor = AnchorElementInfoFactory.getAnchor(element);
|
||||
setRange((anchor == null ? element : anchor).getTextRange());
|
||||
if (anchor == null) anchor = element;
|
||||
myType = anchor.getClass();
|
||||
setRange(anchor.getTextRange());
|
||||
myStubElementTypeAndId = pack(-1, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,9 +37,9 @@ import java.util.List;
|
||||
*/
|
||||
public class SelfElementInfo extends SmartPointerElementInfo {
|
||||
private static final FileDocumentManager ourFileDocManager = FileDocumentManager.getInstance();
|
||||
private final Class myType;
|
||||
protected volatile Class myType;
|
||||
private final SmartPointerManagerImpl myManager;
|
||||
private final Language myLanguage;
|
||||
protected final Language myLanguage;
|
||||
private final MarkerCache myMarkerCache;
|
||||
private final boolean myForInjected;
|
||||
private boolean myHasRange;
|
||||
|
||||
Reference in New Issue
Block a user