From 29038e5e868c5f686c63649462b44cb6496ab2cf Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 4 Mar 2015 18:10:13 +0100 Subject: [PATCH] release smart pointer storage when disposing the last smart pointer in file explicitly --- .../psi/impl/smartPointers/SmartPointerManagerImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 2a8f8d0eb960..8e46b571bdc3 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 @@ -237,14 +237,20 @@ public class SmartPointerManagerImpl extends SmartPointerManager { } PsiFile containingFile = pointer.getContainingFile(); if (containingFile == null) return false; - Set pointers = getPointers(containingFile.getViewProvider().getVirtualFile()); + + VirtualFile vFile = containingFile.getViewProvider().getVirtualFile(); + Set pointers = getPointers(vFile); if (pointers == null) return false; + SmartPointerElementInfo info = ((SmartPsiElementPointerImpl)pointer).getElementInfo(); info.cleanup(); for (Iterator iterator = pointers.iterator(); iterator.hasNext(); ) { if (pointer == iterator.next().get()) { iterator.remove(); + if (pointers.isEmpty()) { + vFile.putUserData(POINTERS_KEY, null); + } return true; } }