File tree Expand file tree Collapse file tree 4 files changed +62
-1
lines changed
IDisposableAnalyzers.NetCoreTests/IDISP003DisposeBeforeReassigningTests Expand file tree Collapse file tree 4 files changed +62
-1
lines changed Original file line number Diff line number Diff line change @@ -36,6 +36,29 @@ public async ValueTask DisposeAsync()
3636 await _timer.DisposeAsync();
3737 }
3838 }
39+ }" ;
40+ RoslynAssert . Valid ( Analyzer , code ) ;
41+ }
42+
43+ [ Test ]
44+ public static void NullableAnnotated ( )
45+ {
46+ var code = @"
47+ namespace N
48+ {
49+ using System;
50+ using System.IO;
51+
52+ class C
53+ {
54+ private IDisposable? _disposable;
55+
56+ void M()
57+ {
58+ _disposable!.Dispose();
59+ _disposable = File.OpenRead(string.Empty);
60+ }
61+ }
3962}" ;
4063 RoslynAssert . Valid ( Analyzer , code ) ;
4164 }
Original file line number Diff line number Diff line change 4747
4848 <ItemGroup >
4949 <PackageReference Include =" Gu.Analyzers" Version =" 1.6.7-dev" PrivateAssets =" all" />
50- <PackageReference Include =" Gu.Roslyn.Extensions" Version =" 0.12.6 -dev" />
50+ <PackageReference Include =" Gu.Roslyn.Extensions" Version =" 0.12.7 -dev" />
5151 <PackageReference Include =" Microsoft.CodeAnalysis.CSharp.Workspaces" Version =" 3.3.1" />
5252 <PackageReference Include =" Microsoft.CodeAnalysis.FxCopAnalyzers" Version =" 2.9.8" PrivateAssets =" all" />
5353 <PackageReference Include =" StyleCop.Analyzers" Version =" 1.2.0-beta.164" PrivateAssets =" all" />
Original file line number Diff line number Diff line change 1+ namespace ValidCode . NetCore
2+ {
3+ using System ;
4+
5+ sealed class Annotated : IDisposable
6+ {
7+ private IDisposable ? _foo ;
8+ private bool _disposed ;
9+
10+ public void Dispose ( )
11+ {
12+ if ( this . _disposed )
13+ {
14+ return ;
15+ }
16+
17+ this . _disposed = true ;
18+ _foo ? . Dispose ( ) ;
19+ }
20+
21+ void Reassign ( )
22+ {
23+ _foo ! . Dispose ( ) ;
24+ _foo = new Disposable ( ) ;
25+ }
26+ }
27+ }
Original file line number Diff line number Diff line change 1+ namespace ValidCode . NetCore
2+ {
3+ using System ;
4+
5+ public sealed class Disposable : IDisposable
6+ {
7+ public void Dispose ( )
8+ {
9+ }
10+ }
11+ }
You can’t perform that action at this time.
0 commit comments