IDEA-78720

This commit is contained in:
Alexey Kudravtsev
2011-12-13 14:21:27 +04:00
parent 2573ab7ac6
commit 7d7a5e5a1f
3 changed files with 7 additions and 8 deletions
@@ -18,7 +18,6 @@ package com.intellij.psi.impl.smartPointers;
import com.intellij.openapi.editor.RangeMarker;
import com.intellij.psi.PsiElement;
import com.intellij.psi.SmartPsiElementPointer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface SmartPointerEx<E extends PsiElement> extends SmartPsiElementPointer<E> {
@@ -27,6 +26,5 @@ public interface SmartPointerEx<E extends PsiElement> extends SmartPsiElementPoi
void unfastenBelt(int offset);
@NotNull
SmartPointerElementInfo getElementInfo();
PsiElement getCachedElement();
}
@@ -179,9 +179,11 @@ public class SmartPointerManagerImpl extends SmartPointerManager {
private static <E extends PsiElement> SmartPsiElementPointer<E> getCachedPointer(@NotNull E element) {
Reference<SmartPsiElementPointer> data = element.getUserData(CACHED_SMART_POINTER_KEY);
SmartPsiElementPointer cachedPointer = data == null ? null : data.get();
if (cachedPointer instanceof SmartPointerEx
&& ((SmartPointerEx)cachedPointer).getElementInfo().restoreElement() != element) {
return null;
if (cachedPointer instanceof SmartPointerEx) {
PsiElement cachedElement = ((SmartPointerEx)cachedPointer).getCachedElement();
if (cachedElement != null && cachedElement != element) {
return null;
}
}
return cachedPointer;
}
@@ -106,7 +106,7 @@ class SmartPsiElementPointerImpl<E extends PsiElement> implements SmartPointerEx
myElement = element == null ? null : new SoftReference<E>(element);
}
private E getCachedElement() {
public E getCachedElement() {
Reference<E> ref = myElement;
return ref == null ? null : ref.get();
}
@@ -203,7 +203,6 @@ class SmartPsiElementPointerImpl<E extends PsiElement> implements SmartPointerEx
myElementInfo.fastenBelt(offset, cachedRangeMarker);
}
@Override
@NotNull
public SmartPointerElementInfo getElementInfo() {
return myElementInfo;