From 54ec3c8a18684cb4a09a2e8c6e2c3677eb348ede Mon Sep 17 00:00:00 2001 From: ovska Date: Thu, 4 Dec 2025 10:25:24 +0200 Subject: [PATCH] Fix RCS1085 with ref backing field Fixes #1717 --- .../Analysis/UseAutoPropertyAnalyzer.cs | 5 ++++ .../RCS1085UseAutoPropertyTests.cs | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+) 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; + } +} +" + ); + } }