Skip to content

Commit 0e56afb

Browse files
authored
Fix analyzer RCS1043 (#1684)
1 parent 7092b7f commit 0e56afb

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1818
- Fix analyzer [RCS1246](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1246) ([PR](https://github.com/dotnet/roslynator/pull/1676))
1919
- Fix analyzer [RCS1248](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1248) ([PR](https://github.com/dotnet/roslynator/pull/1677))
2020
- Fix analyzer [RCS1203](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1203) ([PR](https://github.com/dotnet/roslynator/pull/1683))
21+
- Fix analyzer [RCS1043](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1043) ([PR](https://github.com/dotnet/roslynator/pull/1684))
2122
- Fix refactoring [Check expression for null](https://josefpihrt.github.io/docs/roslynator/refactorings/RR0024) ([PR](https://github.com/dotnet/roslynator/pull/1682))
2223

2324
## [4.14.0] - 2025-07-26

src/Analyzers/CSharp/Analysis/RemovePartialModifierFromTypeWithSinglePartAnalyzer.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ private static void AnalyzeTypeDeclaration(SyntaxNodeAnalysisContext context)
5959
if (_metadataNames.Any(c => symbol.InheritsFrom(c)))
6060
return;
6161

62+
foreach (ISymbol member in symbol.GetMembers())
63+
{
64+
if (member.HasAttribute(MetadataNames.System_Text_RegularExpressions_GeneratedRegexAttribute))
65+
return;
66+
}
67+
6268
foreach (MemberDeclarationSyntax member in typeDeclaration.Members)
6369
{
6470
if (member is MethodDeclarationSyntax methodDeclaration

src/Core/MetadataNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ internal static class MetadataNames
6363
public static readonly MetadataName System_Runtime_Serialization_StreamingContext = MetadataName.Parse("System.Runtime.Serialization.StreamingContext");
6464
public static readonly MetadataName System_Span_T = MetadataName.Parse("System.Span`1");
6565
public static readonly MetadataName System_StringComparison = MetadataName.Parse("System.StringComparison");
66+
public static readonly MetadataName System_Text_RegularExpressions_GeneratedRegexAttribute = MetadataName.Parse("System.Text.RegularExpressions.GeneratedRegexAttribute");
6667
public static readonly MetadataName System_Text_RegularExpressions_Regex = MetadataName.Parse("System.Text.RegularExpressions.Regex");
6768
public static readonly MetadataName System_Text_RegularExpressions_RegexOptions = MetadataName.Parse("System.Text.RegularExpressions.RegexOptions");
6869
public static readonly MetadataName System_Text_StringBuilder = MetadataName.Parse("System.Text.StringBuilder");

src/Tests/Analyzers.Tests/RCS1043RemovePartialModifierFromTypeWithSinglePartTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,18 @@ class FrameworkElement
245245
}
246246
");
247247
}
248+
249+
[Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.RemovePartialModifierFromTypeWithSinglePart)]
250+
public async Task TestNoDiagnostic_GeneratedRegexAttribute()
251+
{
252+
await VerifyNoDiagnosticAsync("""
253+
using System.Text.RegularExpressions;
254+
255+
partial class C
256+
{
257+
[GeneratedRegex("^[a-z]{2}$", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
258+
private static partial Regex Pattern();
259+
}
260+
""", options: Options.AddAllowedCompilerDiagnosticId("CS8795"));
261+
}
248262
}

0 commit comments

Comments
 (0)