diff --git a/ChangeLog.md b/ChangeLog.md index befff9c2ac..a7812328d1 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Do not remove parameterless empty constructor in a struct with field initializers ([RCS1074](https://github.com/JosefPihrt/Roslynator/blob/main/docs/analyzers/RCS1074.md)) ([#1021](https://github.com/josefpihrt/roslynator/pull/1021)). - Do not suggest to use generic event handler ([RCS1159](https://github.com/JosefPihrt/Roslynator/blob/main/docs/analyzers/RCS1159.md)) ([#1022](https://github.com/josefpihrt/roslynator/pull/1022)). - Fix ([RCS1077](https://github.com/JosefPihrt/Roslynator/blob/main/docs/analyzers/RCS1077.md)) ([#1023](https://github.com/josefpihrt/roslynator/pull/1023)). +- Fix ([RCS1097](https://github.com/JosefPihrt/Roslynator/blob/main/docs/analyzers/RCS1097.md)) ([#1037](https://github.com/JosefPihrt/Roslynator/pull/1037)). ## [4.2.0] - 2022-11-27 diff --git a/src/Analyzers/CSharp/Analysis/RemoveRedundantToStringCallAnalysis.cs b/src/Analyzers/CSharp/Analysis/RemoveRedundantToStringCallAnalysis.cs index 4d631c849a..4ca091a00d 100644 --- a/src/Analyzers/CSharp/Analysis/RemoveRedundantToStringCallAnalysis.cs +++ b/src/Analyzers/CSharp/Analysis/RemoveRedundantToStringCallAnalysis.cs @@ -58,6 +58,7 @@ private static bool IsFixable( INamedTypeSymbol containingType = methodSymbol.ContainingType; if (containingType?.IsReferenceType == true + && containingType.SpecialType != SpecialType.System_ValueType && containingType.SpecialType != SpecialType.System_Enum) { if (containingType.SpecialType == SpecialType.System_String) diff --git a/src/Tests/Analyzers.Tests/RCS1097RemoveRedundantToStringCallTests.cs b/src/Tests/Analyzers.Tests/RCS1097RemoveRedundantToStringCallTests.cs index 3980d35a08..97cdfd9196 100644 --- a/src/Tests/Analyzers.Tests/RCS1097RemoveRedundantToStringCallTests.cs +++ b/src/Tests/Analyzers.Tests/RCS1097RemoveRedundantToStringCallTests.cs @@ -105,7 +105,7 @@ void M() } [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.RemoveRedundantToStringCall)] - public async Task TestNoDiagnostic_ValueType() + public async Task TestNoDiagnostic_Int() { await VerifyNoDiagnosticAsync(@" class C @@ -116,6 +116,22 @@ void M() string s = $""'{i.ToString()}'""; } } +"); + } + + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.RemoveRedundantToStringCall)] + public async Task TestNoDiagnostic_Struct() + { + await VerifyNoDiagnosticAsync(@" +struct S{} +class C +{ + void M() + { + S s = new S(); + string str = $""'{s.ToString()}'""; + } +} "); } }