From 424c8820500e281b9eca07322183877601de7562 Mon Sep 17 00:00:00 2001 From: wuestholz Date: Mon, 27 May 2013 14:44:45 -0700 Subject: DafnyExtension: Fixed an issue (error list wasn't cleared after closing buffers). --- Source/DafnyExtension/ResolverTagger.cs | 36 +++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) (limited to 'Source/DafnyExtension/ResolverTagger.cs') diff --git a/Source/DafnyExtension/ResolverTagger.cs b/Source/DafnyExtension/ResolverTagger.cs index 81efe28a..4f8fa694 100644 --- a/Source/DafnyExtension/ResolverTagger.cs +++ b/Source/DafnyExtension/ResolverTagger.cs @@ -90,16 +90,35 @@ namespace DafnyLanguage BufferIdleEventUtil.AddBufferIdleEventListener(_buffer, ResolveBuffer); } - public void Dispose() { - if (_errorProvider != null) { - try { - _errorProvider.Tasks.Clear(); - } catch (InvalidOperationException) { - // this may occur if the SVsServiceProvider somehow has been uninstalled before our Dispose method is called + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + private void Dispose(bool disposing) + { + if (!m_disposed) + { + if (disposing) + { + if (_errorProvider != null) + { + try + { + _errorProvider.Tasks.Clear(); + } + catch (InvalidOperationException) + { + // this may occur if the SVsServiceProvider somehow has been uninstalled before our Dispose method is called + } + _errorProvider.Dispose(); + } + BufferIdleEventUtil.RemoveBufferIdleEventListener(_buffer, ResolveBuffer); } - _errorProvider.Dispose(); + + m_disposed = true; } - BufferIdleEventUtil.RemoveBufferIdleEventListener(_buffer, ResolveBuffer); } public IEnumerable AllErrors() { @@ -155,6 +174,7 @@ namespace DafnyLanguage } public event EventHandler TagsChanged; + private bool m_disposed; /// /// Calls the Dafny parser/resolver/type checker on the contents of the buffer, updates the Error List accordingly. -- cgit v1.2.3