diff --git a/src/Microsoft.CodeQuality.Analyzers/Core/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs b/src/Microsoft.CodeQuality.Analyzers/Core/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs index bc790d7d45..3af8c874ef 100644 --- a/src/Microsoft.CodeQuality.Analyzers/Core/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs +++ b/src/Microsoft.CodeQuality.Analyzers/Core/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatement.cs @@ -80,8 +80,8 @@ private void AnalyzeAssignment(OperationAnalysisContext context) { assignmentOperation = (ISimpleAssignmentOperation)assignmentOperation.Value; - var operationValue = assignmentOperation.Target as T; - if (equalityComparer(instance, operationValue)) + if (assignmentOperation.Target is T operationValue && + equalityComparer(instance, operationValue)) { return true; } diff --git a/src/Microsoft.CodeQuality.Analyzers/UnitTests/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatementTests.cs b/src/Microsoft.CodeQuality.Analyzers/UnitTests/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatementTests.cs index b340637b9e..dcaddb2a49 100644 --- a/src/Microsoft.CodeQuality.Analyzers/UnitTests/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatementTests.cs +++ b/src/Microsoft.CodeQuality.Analyzers/UnitTests/QualityGuidelines/AssigningSymbolAndItsMemberInSameStatementTests.cs @@ -329,6 +329,22 @@ public unsafe void Method(Test a, Test *b) b->PtrField = a.PtrField; } } +"); + } + + [Fact] + [WorkItem(2889, "https://github.com/dotnet/roslyn-analyzers/issues/2889")] + public void CSharpAssignmentLocalReferenceOperation() + { + VerifyCSharp(@" +public static class Class1 +{ + public static void Foo() + { + var u = new System.UriBuilder(); + u.Host = u.Path = string.Empty; + } +} "); } }