Skip to content

Commit febce84

Browse files
authored
Fix analyzer RCS1105 (#1669)
1 parent 525f326 commit febce84

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1717
- Fix analyzer [RCS1229](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1229) ([PR](https://github.com/dotnet/roslynator/pull/1667))
1818
- Fix analyzer [RCS1250](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1250) ([PR](https://github.com/dotnet/roslynator/pull/1652) by @aihnatiuk)
1919
- Fix analyzer [RCS1260](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1260) ([PR](https://github.com/dotnet/roslynator/pull/1668))
20+
- Fix analyzer [RCS1105](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1105) ([PR](https://github.com/dotnet/roslynator/pull/1669))
2021

2122
## [4.13.1] - 2025-02-23
2223

src/Analyzers/CSharp/Analysis/UnnecessaryInterpolationAnalyzer.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ private static void AnalyzeInterpolation(SyntaxNodeAnalysisContext context)
5353
if (interpolatedString.StringStartToken.ValueText.Contains("@") != stringLiteralInfo.IsVerbatim)
5454
return;
5555

56+
#if ROSLYN_4_2
57+
if (interpolatedString.StringStartToken.IsKind(SyntaxKind.InterpolatedSingleLineRawStringStartToken, SyntaxKind.InterpolatedMultiLineRawStringStartToken)
58+
&& stringLiteralInfo.ContainsEscapeSequence)
59+
{
60+
return;
61+
}
62+
#endif
63+
5664
DiagnosticHelpers.ReportDiagnostic(context, DiagnosticRules.UnnecessaryInterpolation, interpolation);
5765
}
5866
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System.Threading.Tasks;
2+
using Microsoft.CodeAnalysis;
3+
using Roslynator.CSharp.CodeFixes;
4+
using Roslynator.Testing.CSharp;
5+
using Xunit;
6+
7+
namespace Roslynator.CSharp.Analysis.Tests;
8+
9+
public class RCS1105UnnecessaryInterpolationTests : AbstractCSharpDiagnosticVerifier<UnnecessaryInterpolationAnalyzer, InterpolationCodeFixProvider>
10+
{
11+
public override DiagnosticDescriptor Descriptor { get; } = DiagnosticRules.UnnecessaryInterpolation;
12+
13+
[Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.UseVarOrExplicitType)]
14+
public async Task TestNoDiagnostic_RawStringLiteral()
15+
{
16+
await VerifyNoDiagnosticAsync(""""
17+
class C
18+
{
19+
void M()
20+
{
21+
var s = $"""a {"\n"} b""";
22+
}
23+
}
24+
"""");
25+
}
26+
}

0 commit comments

Comments
 (0)