Skip to content

Commit d936420

Browse files
Issue #3386: Updated SA1008 to correctly handle a cast inside a range expression
1 parent aacf8a5 commit d936420

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/SpacingRules/SA1008CSharp8UnitTests.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@ namespace TestNamespace
3636
using System;
3737
public class TestClass
3838
{
39-
public string TestMethod()
39+
public void TestMethod()
4040
{
4141
string str = ""test"";
4242
int finalLen = 4;
43-
return str[.. (finalLen - 1)];
43+
var test1 = str[.. (finalLen - 1)];
44+
var test2 = .. (int)finalLen;
4445
}
4546
}
4647
}
@@ -52,18 +53,20 @@ namespace TestNamespace
5253
using System;
5354
public class TestClass
5455
{
55-
public string TestMethod()
56+
public void TestMethod()
5657
{
5758
string str = ""test"";
5859
int finalLen = 4;
59-
return str[..(finalLen - 1)];
60+
var test1 = str[..(finalLen - 1)];
61+
var test2 = ..(int)finalLen;
6062
}
6163
}
6264
}
6365
";
6466
var expectedResults = new DiagnosticResult[]
6567
{
66-
Diagnostic(DescriptorNotPreceded).WithLocation(28, 27),
68+
Diagnostic(DescriptorNotPreceded).WithLocation(28, 32),
69+
Diagnostic(DescriptorNotPreceded).WithLocation(29, 28),
6770
};
6871

6972
await VerifyCSharpFixAsync(

StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1008OpeningParenthesisMustBeSpacedCorrectly.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,9 @@ private static void HandleOpenParenToken(SyntaxTreeAnalysisContext context, Synt
231231
startOfIndexer = prevToken.IsKind(SyntaxKind.OpenBracketToken);
232232
var consecutiveCast = prevToken.IsKind(SyntaxKind.CloseParenToken) && prevToken.Parent.IsKind(SyntaxKind.CastExpression);
233233
var partOfInterpolation = prevToken.IsKind(SyntaxKind.OpenBraceToken) && prevToken.Parent.IsKind(SyntaxKind.Interpolation);
234+
var partOfRange = prevToken.IsKind(SyntaxKindEx.DotDotToken);
234235

235-
haveLeadingSpace = !partOfUnaryExpression && !startOfIndexer && !consecutiveCast && !partOfInterpolation;
236+
haveLeadingSpace = !partOfUnaryExpression && !startOfIndexer && !consecutiveCast && !partOfInterpolation && !partOfRange;
236237
break;
237238

238239
case SyntaxKind.ParameterList:

0 commit comments

Comments
 (0)