33 using System . Threading ;
44 using Gu . Roslyn . AnalyzerExtensions ;
55 using Microsoft . CodeAnalysis ;
6+ using Microsoft . CodeAnalysis . CSharp . Syntax ;
67
78 internal static class DisposableMember
89 {
@@ -45,25 +46,20 @@ internal static bool IsDisposed(FieldOrProperty member, IMethodSymbol disposeMet
4546
4647 if ( disposeMethod . TrySingleMethodDeclaration ( cancellationToken , out var disposeMethodDeclaration ) )
4748 {
48- using var walker = DisposeWalker . Borrow ( disposeMethodDeclaration , semanticModel , cancellationToken ) ;
49- if ( Disposable . IsAssignableFrom ( member . Type , semanticModel . Compilation ) )
50- {
51- foreach ( var candidate in walker . Invocations )
52- {
53- if ( DisposeCall . IsDisposing ( candidate , member . Symbol , semanticModel , cancellationToken ) )
54- {
55- return true ;
56- }
57- }
49+ return IsDisposed ( member , disposeMethodDeclaration , semanticModel , cancellationToken ) ;
50+ }
5851
59- return false ;
60- }
52+ return false ;
53+ }
6154
62- foreach ( var candidate in walker . Identifiers )
55+ internal static bool IsDisposed ( FieldOrProperty member , MethodDeclarationSyntax disposeMethod , SemanticModel semanticModel , CancellationToken cancellationToken )
56+ {
57+ using var walker = DisposeWalker . Borrow ( disposeMethod , semanticModel , cancellationToken ) ;
58+ if ( Disposable . IsAssignableFrom ( member . Type , semanticModel . Compilation ) )
59+ {
60+ foreach ( var candidate in walker . Invocations )
6361 {
64- if ( candidate . Identifier . Text == member . Name &&
65- semanticModel . TryGetSymbol ( candidate , cancellationToken , out var candidateSymbol ) &&
66- candidateSymbol . OriginalDefinition . Equals ( member . Symbol ) )
62+ if ( DisposeCall . IsDisposing ( candidate , member . Symbol , semanticModel , cancellationToken ) )
6763 {
6864 return true ;
6965 }
@@ -72,6 +68,16 @@ internal static bool IsDisposed(FieldOrProperty member, IMethodSymbol disposeMet
7268 return false ;
7369 }
7470
71+ foreach ( var candidate in walker . Identifiers )
72+ {
73+ if ( candidate . Identifier . Text == member . Name &&
74+ semanticModel . TryGetSymbol ( candidate , cancellationToken , out var candidateSymbol ) &&
75+ candidateSymbol . OriginalDefinition . Equals ( member . Symbol ) )
76+ {
77+ return true ;
78+ }
79+ }
80+
7581 return false ;
7682 }
7783 }
0 commit comments