From 10e8ce1719060e185c8e2dfd2d701744f2813f45 Mon Sep 17 00:00:00 2001 From: peter Date: Sat, 15 Aug 2015 11:12:56 +0200 Subject: [PATCH] ManualRangeMarker: really honor surviveOnExternalChange, add getMarkerCount --- .../com/intellij/psi/impl/smartPointers/MarkerCache.java | 8 +++++++- .../psi/impl/smartPointers/SmartPointerManagerImpl.java | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/MarkerCache.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/MarkerCache.java index 6adaaa4ce9b2..1e343e6374c0 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/MarkerCache.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/MarkerCache.java @@ -27,6 +27,7 @@ import com.intellij.util.containers.WeakHashMap; import com.intellij.util.containers.WeakValueHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import java.util.Collections; import java.util.List; @@ -53,7 +54,7 @@ class MarkerCache { RangeKey key = new RangeKey(range, greedyLeft, greedyRight, persistent); ManualRangeMarker marker = byRange.get(key); if (marker == null) { - marker = new ManualRangeMarker(frozen, range, greedyLeft, greedyRight, true); + marker = new ManualRangeMarker(frozen, range, greedyLeft, greedyRight, persistent); myMarkerSet.add(marker); byRange.put(key, marker); myUpdatedRanges = null; @@ -166,6 +167,11 @@ class MarkerCache { return updated == null ? null : updated.getRange(); } + @TestOnly + synchronized int getMarkerCount() { + return myMarkerSet.size(); + } + private static class RangeKey { final int start; final int end; diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java index c8e5b967a8a2..fc726e5201dd 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPointerManagerImpl.java @@ -223,6 +223,14 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } } + @TestOnly + public int getMarkerCount(@NotNull Document document) { + synchronized (lock) { + VirtualFile file = FileDocumentManager.getInstance().getFile(document); + return file == null ? 0 : getMarkerCache(file).getMarkerCount(); + } + } + @Override public boolean pointToTheSameElement(@NotNull SmartPsiElementPointer pointer1, @NotNull SmartPsiElementPointer pointer2) { return SmartPsiElementPointerImpl.pointsToTheSameElementAs(pointer1, pointer2);