Skip to content

Commit 5ea507c

Browse files
committed
IsDisposed(FieldOrProperty member, MethodDeclarationSyntax disposeMethod
1 parent 78df660 commit 5ea507c

1 file changed

Lines changed: 22 additions & 16 deletions

File tree

IDisposableAnalyzers/Helpers/DisposableMember.cs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
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

Comments
 (0)