summaryrefslogtreecommitdiff
path: root/Source/DafnyExtension/ResolverTagger.cs
diff options
context:
space:
mode:
authorGravatar wuestholz <unknown>2013-05-27 14:44:45 -0700
committerGravatar wuestholz <unknown>2013-05-27 14:44:45 -0700
commit424c8820500e281b9eca07322183877601de7562 (patch)
treec3f1d52e3e8d67ed9bcf6b3d85af7001d257bd25 /Source/DafnyExtension/ResolverTagger.cs
parentef3ccef52b432a7d5c8c7db2add8102bd281b58c (diff)
DafnyExtension: Fixed an issue (error list wasn't cleared after closing buffers).
Diffstat (limited to 'Source/DafnyExtension/ResolverTagger.cs')
-rw-r--r--Source/DafnyExtension/ResolverTagger.cs36
1 files changed, 28 insertions, 8 deletions
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<DafnyError> AllErrors() {
@@ -155,6 +174,7 @@ namespace DafnyLanguage
}
public event EventHandler<SnapshotSpanEventArgs> TagsChanged;
+ private bool m_disposed;
/// <summary>
/// Calls the Dafny parser/resolver/type checker on the contents of the buffer, updates the Error List accordingly.