@@ -173,6 +173,59 @@ public override void Dispose() { }
173173 RoslynAssert . Valid ( analyzer , testCode ) ;
174174 }
175175
176+ [ Test ]
177+ public void AnalyzeWhenMethodIsExplicitDisposeAsync ( )
178+ {
179+ var testCode = TestUtility . WrapClassInNamespaceAndAddUsing ( @"
180+ public sealed class TestClass : IAsyncDisposable
181+ {
182+ [Test]
183+ public void TestMethod() { }
184+
185+ ValueTask IAsyncDisposable.DisposeAsync() => default(ValueTask);
186+ }
187+ " ) ;
188+
189+ RoslynAssert . Valid ( analyzer , testCode ) ;
190+ }
191+
192+ [ Test ]
193+ public void AnalyzeWhenMethodIsDisposeAsync ( )
194+ {
195+ var testCode = TestUtility . WrapClassInNamespaceAndAddUsing ( @"
196+ public sealed class TestClass : IAsyncDisposable
197+ {
198+ [Test]
199+ public void TestMethod() { }
200+
201+ public ValueTask DisposeAsync() => default(ValueTask);
202+ }
203+ " ) ;
204+
205+ RoslynAssert . Valid ( analyzer , testCode ) ;
206+ }
207+
208+ [ Test ]
209+ public void AnalyzeWhenMethodIsDisposeAsyncOverride ( )
210+ {
211+ var testCode = TestUtility . WrapClassInNamespaceAndAddUsing ( @"
212+ public class BaseClass : IAsyncDisposable
213+ {
214+ public virtual ValueTask DisposeAsync() => default(ValueTask);
215+ }
216+
217+ public sealed class DerivedClass : BaseClass
218+ {
219+ [Test]
220+ public void TestMethod() { }
221+
222+ public override ValueTask DisposeAsync() => default(ValueTask);
223+ }
224+ " ) ;
225+
226+ RoslynAssert . Valid ( analyzer , testCode ) ;
227+ }
228+
176229 [ Test ]
177230 public void AnalyzeWhenMethodIsBaseClassOverride ( )
178231 {
0 commit comments