public static void DisposedInExplicitImplementation()
        {
            var syntaxTree    = CSharpSyntaxTree.ParseText(@"
namespace N
{
    using System;
    using System.IO;

    sealed class C : IDisposable
    {
        private readonly IDisposable stream = File.OpenRead(string.Empty);

        void IDisposable.Dispose()
        {
            this.stream.Dispose();
        }
    }
}");
            var compilation   = CSharpCompilation.Create("test", new[] { syntaxTree }, MetadataReferences.FromAttributes());
            var semanticModel = compilation.GetSemanticModel(syntaxTree);
            var declaration   = syntaxTree.FindFieldDeclaration("stream");
            var symbol        = semanticModel.GetDeclaredSymbolSafe(declaration, CancellationToken.None);
            var field         = new FieldOrPropertyAndDeclaration(symbol, declaration);

            Assert.AreEqual(Result.Yes, DisposableMember.IsDisposed(field, semanticModel, CancellationToken.None));
        }
예제 #2
0
 internal static bool IsAssignedInInitializeAndDisposedInCleanup(FieldOrPropertyAndDeclaration fieldOrProperty, SemanticModel semanticModel, CancellationToken cancellationToken)
 {
     return(IsAssignedInInitializeAndDisposedInCleanup(fieldOrProperty.FieldOrProperty, (TypeDeclarationSyntax)fieldOrProperty.Declaration.Parent, semanticModel, cancellationToken));
 }
 internal static Result IsDisposed(FieldOrPropertyAndDeclaration member, SemanticModel semanticModel, CancellationToken cancellationToken)
 {
     return(IsDisposed(member.FieldOrProperty, member.FieldOrProperty.ContainingType, semanticModel, cancellationToken));
 }