Skip to content

Commit 04a7a32

Browse files
committed
BUGFIX IDISP023 don't warn on attribute.
Fix #205
1 parent 82a2229 commit 04a7a32

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

IDisposableAnalyzers.Test/IDISP023ReferenceTypeInFinalizerContextTests/Valid.Finalizer.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace IDisposableAnalyzers.Test.IDISP023ReferenceTypeInFinalizerContextTests
1+
namespace IDisposableAnalyzers.Test.IDISP023ReferenceTypeInFinalizerContextTests
22
{
33
using Gu.Roslyn.Asserts;
44
using Microsoft.CodeAnalysis.Diagnostics;
@@ -157,6 +157,34 @@ public class C
157157

158158
RoslynAssert.Valid(Analyzer, code);
159159
}
160+
161+
[Test]
162+
public static void AttributedFinalizer()
163+
{
164+
var code = @"
165+
namespace N
166+
{
167+
using System;
168+
169+
[AttributeUsage(AttributeTargets.All)]
170+
public class FooAttribute : Attribute { }
171+
172+
public sealed class C : IDisposable
173+
{
174+
[Foo]
175+
~C()
176+
{
177+
}
178+
179+
public void Dispose()
180+
{
181+
GC.SuppressFinalize(this);
182+
}
183+
}
184+
}";
185+
186+
RoslynAssert.Valid(Analyzer, code);
187+
}
160188
}
161189
}
162190
}

IDisposableAnalyzers/Helpers/Walkers/FinalizerContextWalker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public override void VisitIdentifierName(IdentifierNameSyntax node)
9292

9393
internal static FinalizerContextWalker Borrow(BaseMethodDeclarationSyntax node, SemanticModel semanticModel, CancellationToken cancellationToken)
9494
{
95-
var walker = BorrowAndVisit(node, SearchScope.Type, semanticModel, cancellationToken, () => new FinalizerContextWalker());
95+
var walker = BorrowAndVisit((SyntaxNode)node.Body ?? node.ExpressionBody, SearchScope.Type, semanticModel, cancellationToken, () => new FinalizerContextWalker());
9696

9797
foreach (var target in walker.Targets)
9898
{

0 commit comments

Comments
 (0)