Skip to content

Commit df4031f

Browse files
committed
More tests.
1 parent 7d10807 commit df4031f

6 files changed

Lines changed: 30 additions & 5 deletions

File tree

IDisposableAnalyzers.Test/Helpers/DisposableWalkerTests.DisposedByReturnValue.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
namespace IDisposableAnalyzers.Test.Helpers
22
{
33
using System.Threading;
4-
using Gu.Roslyn.AnalyzerExtensions;
54
using Gu.Roslyn.Asserts;
65
using Microsoft.CodeAnalysis.CSharp;
76
using NUnit.Framework;

IDisposableAnalyzers.Test/Helpers/DisposableWalkerTests.Disposes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ internal C(string fileName)
8787
var syntaxTree = CSharpSyntaxTree.ParseText(code);
8888
var compilation = CSharpCompilation.Create("test", new[] { syntaxTree }, MetadataReferences.FromAttributes());
8989
var semanticModel = compilation.GetSemanticModel(syntaxTree);
90-
var value = syntaxTree.FindVariableDeclaration("disposable = File.OpenRead(fileName)");
90+
var value = syntaxTree.FindVariableDeclaration("disposable");
9191
Assert.AreEqual(true, semanticModel.TryGetSymbol(value, CancellationToken.None, out ILocalSymbol symbol));
9292
Assert.AreEqual(true, DisposableWalker.Disposes(symbol, semanticModel, CancellationToken.None));
9393
}

IDisposableAnalyzers.Test/Helpers/DisposableWalkerTests.Ignores.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,33 @@ internal object M(string fileName)
652652
var value = syntaxTree.FindExpression("File.OpenRead(fileName)");
653653
Assert.AreEqual(false, DisposableWalker.Ignores(value, semanticModel, CancellationToken.None));
654654
}
655+
656+
[TestCase("File.OpenRead(fileName)")]
657+
[TestCase("Task.FromResult(File.OpenRead(fileName)).Result")]
658+
[TestCase("Task.FromResult(File.OpenRead(fileName)).GetAwaiter().GetResult()")]
659+
public static void WhenUsingDeclaration(string expression)
660+
{
661+
var code = @"
662+
namespace N
663+
{
664+
using System;
665+
using System.IO;
666+
using System.Threading.Tasks;
667+
668+
class C
669+
{
670+
C(string fileName)
671+
{
672+
using var disposable = File.OpenRead(fileName);
673+
}
674+
}
675+
}".AssertReplace("File.OpenRead(fileName)", expression);
676+
var syntaxTree = CSharpSyntaxTree.ParseText(code);
677+
var compilation = CSharpCompilation.Create("test", new[] { syntaxTree }, MetadataReferences.FromAttributes());
678+
var semanticModel = compilation.GetSemanticModel(syntaxTree);
679+
var value = syntaxTree.FindExpression("File.OpenRead(fileName)");
680+
Assert.AreEqual(false, DisposableWalker.Ignores(value, semanticModel, CancellationToken.None));
681+
}
655682
}
656683
}
657684
}

IDisposableAnalyzers.Test/IDISP004DoNotIgnoreCreatedTests/Valid.Using.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ public async Task M()
7979

8080
[TestCase("await Task.FromResult(new Disposable())")]
8181
[TestCase("await Task.FromResult(new Disposable()).ConfigureAwait(false)")]
82+
[TestCase("Task.FromResult(new Disposable()).GetAwaiter().GetResult()")]
8283
[TestCase("await Task.Run(() => new Disposable())")]
8384
[TestCase("await Task.Run(() => new Disposable()).ConfigureAwait(false)")]
8485
[TestCase("Task.Run(() => new Disposable()).Result")]

IDisposableAnalyzers/Analyzers/CreationAnalyzer.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111
[DiagnosticAnalyzer(LanguageNames.CSharp)]
1212
internal class CreationAnalyzer : DiagnosticAnalyzer
1313
{
14-
/// <inheritdoc/>
1514
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(
1615
Descriptors.IDISP004DoNotIgnoreCreated,
1716
Descriptors.IDISP014UseSingleInstanceOfHttpClient);
1817

19-
/// <inheritdoc/>
2018
public override void Initialize(AnalysisContext context)
2119
{
2220
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);

IDisposableAnalyzers/Helpers/Walkers/DisposableWalker.DisposedByReturnValue.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ leaveOpenArgument.Expression is LiteralExpressionSyntax literal &&
119119
}
120120

121121
break;
122-
case { Symbol: { ContainingSymbol: IMethodSymbol method } parameter, Source: { Parent: ArgumentListSyntax { Parent: InvocationExpressionSyntax invocation } } }:
122+
case { Symbol: { ContainingSymbol: IMethodSymbol method } , Source: { Parent: ArgumentListSyntax { Parent: InvocationExpressionSyntax invocation } } }:
123123
if (method == KnownSymbol.Task.FromResult)
124124
{
125125
creation = invocation;

0 commit comments

Comments
 (0)