diff --git a/ChangeLog.md b/ChangeLog.md index 715694531b..bfe23a0082 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 - Fix analyzer [RCS1172](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1172) ([PR](https://github.com/dotnet/roslynator/pull/1710)) - [CLI] Fix `loc` command ([PR](https://github.com/dotnet/roslynator/pull/1711)) +- Exclude ref-field backed properties from [RCS1085](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1085) ([PR](https://github.com/dotnet/roslynator/pull/1718) by @ovska) ## [4.14.1] - 2025-10-05 diff --git a/src/Analyzers/CSharp/Analysis/UseAutoPropertyAnalyzer.cs b/src/Analyzers/CSharp/Analysis/UseAutoPropertyAnalyzer.cs index c7691ce7a0..61b8e8aa9f 100644 --- a/src/Analyzers/CSharp/Analysis/UseAutoPropertyAnalyzer.cs +++ b/src/Analyzers/CSharp/Analysis/UseAutoPropertyAnalyzer.cs @@ -108,6 +108,11 @@ private static void AnalyzePropertyDeclaration(SyntaxNodeAnalysisContext context return; } +#if ROSLYN_4_4 + if (fieldSymbol.RefKind is RefKind.Ref or RefKind.RefReadOnly) + return; +#endif + if (!CheckPreprocessorDirectives(property)) return; diff --git a/src/Tests/Analyzers.Tests/RCS1085UseAutoPropertyTests.cs b/src/Tests/Analyzers.Tests/RCS1085UseAutoPropertyTests.cs index 3b72a81dbc..7cfb284267 100644 --- a/src/Tests/Analyzers.Tests/RCS1085UseAutoPropertyTests.cs +++ b/src/Tests/Analyzers.Tests/RCS1085UseAutoPropertyTests.cs @@ -981,4 +981,30 @@ private static void Write2(ref readonly ReadOnlySequence data, IBufferWrit } }"); } + + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.UseAutoProperty)] + public async Task TestNoDiagnostic_BackingFieldRef() + { + await VerifyNoDiagnosticAsync( + @" +public ref struct Example(ref int value1, ref int value2) +{ + private ref int _value1 = ref value1; + private readonly ref int _value2 = ref value2; + + public int Value1 + { + get => _value1; + set => _value1 = value; + } + + public int Value2 + { + get => _value2; + set => _value2 = value; + } +} +" + ); + } }