From e306fc0ad8a151118cc58b79de19d7768ab5b90a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Hellander?= Date: Fri, 28 Nov 2025 07:57:08 +0100 Subject: [PATCH] Update SA1003SymbolsMustBeSpacedCorrectly to forbid space between a postfix operator and an opening parenthesis #63 --- .../SpacingRules/SA1003CSharp8UnitTests.cs | 32 +++++++++++++++++++ .../SA1003SymbolsMustBeSpacedCorrectly.cs | 1 + 2 files changed, 33 insertions(+) diff --git a/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/SpacingRules/SA1003CSharp8UnitTests.cs b/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/SpacingRules/SA1003CSharp8UnitTests.cs index 3b5bb5ab4..ddb21e84e 100644 --- a/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/SpacingRules/SA1003CSharp8UnitTests.cs +++ b/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/SpacingRules/SA1003CSharp8UnitTests.cs @@ -185,6 +185,38 @@ public void TestMethod(string? x) } } } +"; + + await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, fixedCode, CancellationToken.None).ConfigureAwait(false); + } + + [Fact] + public async Task TestNullForgivingOperatorBeforeInvocationAsync() + { + var testCode = @" +namespace TestNamespace +{ + public class TestClass + { + public void TestMethod(System.Action? x) + { + x[|!|] (); + } + } +} +"; + + var fixedCode = @" +namespace TestNamespace +{ + public class TestClass + { + public void TestMethod(System.Action? x) + { + x!(); + } + } +} "; await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, fixedCode, CancellationToken.None).ConfigureAwait(false); diff --git a/StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1003SymbolsMustBeSpacedCorrectly.cs b/StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1003SymbolsMustBeSpacedCorrectly.cs index 896a74f46..2589ee4d7 100644 --- a/StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1003SymbolsMustBeSpacedCorrectly.cs +++ b/StyleCop.Analyzers/StyleCop.Analyzers/SpacingRules/SA1003SymbolsMustBeSpacedCorrectly.cs @@ -304,6 +304,7 @@ private static void HandlePostfixUnaryExpression(SyntaxNodeAnalysisContext conte { case SyntaxKind.CloseParenToken: case SyntaxKind.OpenBracketToken: // Example: x![i] + case SyntaxKind.OpenParenToken: // Example: x!() case SyntaxKind.CloseBracketToken: case SyntaxKind.SemicolonToken: case SyntaxKind.CommaToken: