Skip to content

Commit 16b00dc

Browse files
authored
Merge pull request #3495 from bjornhellander/feature/tupleor
Updated SA1008 to handle tuples in logical patterns
2 parents e017492 + 7490969 commit 16b00dc

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/SpacingRules/SA1008CSharp9UnitTests.cs

+18
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,23 @@ void Method(int b)
6464
FixedCode = fixedCode,
6565
}.RunAsync(CancellationToken.None).ConfigureAwait(false);
6666
}
67+
68+
[Fact]
69+
[WorkItem(3476, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3476")]
70+
public async Task TestLogicalTuplePatternAsync()
71+
{
72+
const string testCode = @"
73+
class C
74+
{
75+
void Method((int, int) c)
76+
{
77+
_ = c is (1, 1) or (2, 2);
78+
_ = c is (1, 1) and (1, 1);
79+
_ = c is not (2, 2);
80+
}
81+
}";
82+
83+
await VerifyCSharpDiagnosticAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false);
84+
}
6785
}
6886
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/SyntaxKindEx.cs

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ internal static class SyntaxKindEx
1111
{
1212
public const SyntaxKind DotDotToken = (SyntaxKind)8222;
1313
public const SyntaxKind QuestionQuestionEqualsToken = (SyntaxKind)8284;
14+
public const SyntaxKind OrKeyword = (SyntaxKind)8438;
15+
public const SyntaxKind AndKeyword = (SyntaxKind)8439;
16+
public const SyntaxKind NotKeyword = (SyntaxKind)8440;
1417
public const SyntaxKind ManagedKeyword = (SyntaxKind)8445;
1518
public const SyntaxKind UnmanagedKeyword = (SyntaxKind)8446;
1619
public const SyntaxKind NullableKeyword = (SyntaxKind)8486;

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

+3
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ private static void HandleOpenParenToken(SyntaxTreeAnalysisContext context, Synt
188188

189189
case SyntaxKindEx.PositionalPatternClause:
190190
haveLeadingSpace = prevToken.IsKind(SyntaxKind.IsKeyword)
191+
|| prevToken.IsKind(SyntaxKindEx.OrKeyword)
192+
|| prevToken.IsKind(SyntaxKindEx.AndKeyword)
193+
|| prevToken.IsKind(SyntaxKindEx.NotKeyword)
191194
|| prevToken.IsKind(SyntaxKind.CommaToken);
192195
break;
193196

0 commit comments

Comments
 (0)