diff options
author | Rustan Leino <unknown> | 2014-07-01 15:35:13 -0700 |
---|---|---|
committer | Rustan Leino <unknown> | 2014-07-01 15:35:13 -0700 |
commit | 3f3f4a4d42cb0926acd6606b537b8a1a743e138e (patch) | |
tree | fd4ec01b85a2f5978948de9df0b833dff0d9e271 /Source/DafnyExtension/TokenTagger.cs | |
parent | d8ed73e962c5e7120497cbbdd25e30ac84df49d1 (diff) |
Dispose DafnyTokenTagger
Diffstat (limited to 'Source/DafnyExtension/TokenTagger.cs')
-rw-r--r-- | Source/DafnyExtension/TokenTagger.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/Source/DafnyExtension/TokenTagger.cs b/Source/DafnyExtension/TokenTagger.cs index 8a01c22f..5068354a 100644 --- a/Source/DafnyExtension/TokenTagger.cs +++ b/Source/DafnyExtension/TokenTagger.cs @@ -70,11 +70,12 @@ namespace DafnyLanguage }
}
- internal sealed class DafnyTokenTagger : ITagger<DafnyTokenTag>
+ internal sealed class DafnyTokenTagger : ITagger<DafnyTokenTag>, IDisposable
{
ITextBuffer _buffer;
ITextSnapshot _snapshot;
List<TokenRegion> _regions;
+ bool _disposed;
internal DafnyTokenTagger(ITextBuffer buffer) {
_buffer = buffer;
@@ -84,6 +85,19 @@ namespace DafnyLanguage _buffer.Changed += new EventHandler<TextContentChangedEventArgs>(ReparseFile);
}
+ public void Dispose() {
+ lock (this) {
+ if (!_disposed) {
+ _buffer.Changed -= ReparseFile;
+ _buffer = null;
+ _snapshot = null;
+ _regions = null;
+ _disposed = true;
+ }
+ }
+ GC.SuppressFinalize(this);
+ }
+
public event EventHandler<SnapshotSpanEventArgs> TagsChanged;
public IEnumerable<ITagSpan<DafnyTokenTag>> GetTags(NormalizedSnapshotSpanCollection spans) {
|