public void WhenQueueOfT(string code) { var testCode = @" namespace RoslynSandbox { using System; using System.Collections.Generic; using System.Collections.Concurrent; internal class Foo { private Queue<IDisposable> disposables = new Queue<IDisposable>(); internal Foo(IDisposable disposable) { this.disposables.Enqueue(disposable); } } }".AssertReplace("private Queue<IDisposable> disposables = new Queue<IDisposable>()", code); var syntaxTree = CSharpSyntaxTree.ParseText(testCode); var compilation = CSharpCompilation.Create("test", new[] { syntaxTree }, MetadataReferences.FromAttributes()); var semanticModel = compilation.GetSemanticModel(syntaxTree); var ctor = syntaxTree.FindConstructorDeclaration("internal Foo(IDisposable disposable)"); var value = syntaxTree.FindParameter("IDisposable disposable"); var symbol = semanticModel.GetDeclaredSymbol(value, CancellationToken.None); Assert.AreEqual(true, Disposable.IsAddedToFieldOrProperty(symbol, ctor, semanticModel, CancellationToken.None)); }
public void WhenNotUsed() { var testCode = @" namespace RoslynSandbox { using System; internal class Foo { internal Foo(IDisposable disposable) { } } }"; var syntaxTree = CSharpSyntaxTree.ParseText(testCode); var compilation = CSharpCompilation.Create("test", new[] { syntaxTree }, MetadataReferences.FromAttributes()); var semanticModel = compilation.GetSemanticModel(syntaxTree); var ctor = syntaxTree.FindConstructorDeclaration("internal Foo(IDisposable disposable)"); var value = syntaxTree.FindParameter("IDisposable disposable"); var symbol = semanticModel.GetDeclaredSymbol(value, CancellationToken.None); Assert.AreEqual(false, Disposable.IsAddedToFieldOrProperty(symbol, ctor, semanticModel, CancellationToken.None)); }