diff --git a/ChangeLog.md b/ChangeLog.md index a6cbc447fd..d36f667f65 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fix refactoring 'Change accessibility' ([RR0186](https://josefpihrt.github.io/docs/roslynator/refactorings/RR0186)) ([PR](https://github.com/dotnet/roslynator/pull/1599)) +- Fix analyzer [RCS1264](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1264) ([PR](https://github.com/dotnet/roslynator/pull/1604)) ### Changed diff --git a/src/Analyzers/CSharp/Analysis/UseVarOrExplicitTypeAnalyzer.cs b/src/Analyzers/CSharp/Analysis/UseVarOrExplicitTypeAnalyzer.cs index 39dac4c8a9..8f457167ce 100644 --- a/src/Analyzers/CSharp/Analysis/UseVarOrExplicitTypeAnalyzer.cs +++ b/src/Analyzers/CSharp/Analysis/UseVarOrExplicitTypeAnalyzer.cs @@ -48,7 +48,7 @@ private static void AnalyzeVariableDeclaration(SyntaxNodeAnalysisContext context } else if (style == TypeStyle.Explicit) { - if (CSharpTypeAnalysis.IsImplicitThatCanBeExplicit(variableDeclaration, context.SemanticModel, TypeAppearance.Obvious, context.CancellationToken)) + if (CSharpTypeAnalysis.IsImplicitThatCanBeExplicit(variableDeclaration, context.SemanticModel, context.CancellationToken)) ReportImplicitToExplicit(context, variableDeclaration.Type); } else if (style == TypeStyle.ImplicitWhenTypeIsObvious) diff --git a/src/Tests/Analyzers.Tests/RCS1264UseVarOrExplicitTypeTests2.cs b/src/Tests/Analyzers.Tests/RCS1264UseVarOrExplicitTypeTests2.cs index fbd34abda8..3c10ddb2b7 100644 --- a/src/Tests/Analyzers.Tests/RCS1264UseVarOrExplicitTypeTests2.cs +++ b/src/Tests/Analyzers.Tests/RCS1264UseVarOrExplicitTypeTests2.cs @@ -162,6 +162,36 @@ void M() ", options: Options.AddConfigOption(ConfigOptionKeys.UseVar, ConfigOptionValues.UseVar_Never)); } + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.UseVarOrExplicitType)] + public async Task Test_NotObviousExpression() + { + await VerifyDiagnosticAndFixAsync(@" +using System.Threading.Tasks; +using System.Collections.Generic; + +class C +{ + void M() + { + [|var|] x1 = string.Empty; + [|var|] x2 = Task.FromResult(string.Empty); + } +} +", @" +using System.Threading.Tasks; +using System.Collections.Generic; + +class C +{ + void M() + { + string x1 = string.Empty; + Task x2 = Task.FromResult(string.Empty); + } +} +", options: Options.AddConfigOption(ConfigOptionKeys.UseVar, ConfigOptionValues.UseVar_Never)); + } + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.UseVarOrExplicitType)] public async Task TestNoDiagnostic_ForEach_DeclarationExpression() {