Skip to content

Commit 3817d7b

Browse files
committed
Update SA1119 for stackalloc expressions
1 parent 78eff0d commit 3817d7b

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/MaintainabilityRules/SA1119CSharp8UnitTests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,5 +152,21 @@ public unsafe string TestMethod(int n, byte* a, byte* b)
152152

153153
await VerifyCSharpDiagnosticAsync(LanguageVersion.CSharp8, testCode, DiagnosticResult.EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false);
154154
}
155+
156+
[Fact]
157+
public async Task TestStackAllocExpressionInExpressionAsync()
158+
{
159+
const string testCode = @"public class TestClass
160+
{
161+
public unsafe void TestMethod()
162+
{
163+
var ptr = stackalloc byte[1];
164+
var span = (stackalloc byte[1]);
165+
}
166+
}
167+
";
168+
169+
await VerifyCSharpDiagnosticAsync(LanguageVersion.CSharp8, testCode, DiagnosticResult.EmptyDiagnosticResults).ConfigureAwait(false);
170+
}
155171
}
156172
}

StyleCop.Analyzers/StyleCop.Analyzers.Test/Verifiers/StyleCopCodeFixVerifier`2.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ internal static Task VerifyCSharpDiagnosticAsync(string source, DiagnosticResult
4545
internal static Task VerifyCSharpDiagnosticAsync(LanguageVersion? languageVersion, string source, DiagnosticResult expected, CancellationToken cancellationToken)
4646
=> StyleCopDiagnosticVerifier<TAnalyzer>.VerifyCSharpDiagnosticAsync(languageVersion, source, expected, cancellationToken);
4747

48-
internal static Task VerifyCSharpDiagnosticAsync(LanguageVersion? languageVersion, string source, DiagnosticResult[] expected, CancellationToken cancellationToken)
48+
internal static Task VerifyCSharpDiagnosticAsync(LanguageVersion? languageVersion, string source, DiagnosticResult[] expected, CancellationToken cancellationToken = default)
4949
=> StyleCopDiagnosticVerifier<TAnalyzer>.VerifyCSharpDiagnosticAsync(languageVersion, source, settings: null, expected, cancellationToken);
5050

5151
internal static Task VerifyCSharpDiagnosticAsync(LanguageVersion? languageVersion, string source, string settings, DiagnosticResult[] expected, CancellationToken cancellationToken)

StyleCop.Analyzers/StyleCop.Analyzers/MaintainabilityRules/SA1119StatementMustNotUseUnnecessaryParenthesis.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,12 @@ private static void HandleParenthesizedExpression(SyntaxNodeAnalysisContext cont
137137
return;
138138
}
139139

140+
if (node.Expression.IsKind(SyntaxKind.StackAllocArrayCreationExpression)
141+
&& node.Parent.IsKind(SyntaxKind.EqualsValueClause))
142+
{
143+
return;
144+
}
145+
140146
ReportDiagnostic(context, node);
141147
}
142148
else

0 commit comments

Comments
 (0)