@@ -140,6 +140,7 @@ internal class SA1003SymbolsMustBeSpacedCorrectly : DiagnosticAnalyzer
140140 private static readonly Action < SyntaxNodeAnalysisContext > LambdaExpressionAction = HandleLambdaExpression ;
141141 private static readonly Action < SyntaxNodeAnalysisContext > ArrowExpressionClauseAction = HandleArrowExpressionClause ;
142142 private static readonly Action < SyntaxNodeAnalysisContext > RangeExpressionAction = HandleRangeExpression ;
143+ private static readonly Action < SyntaxNodeAnalysisContext > RelationalPatternAction = HandleRelationalPattern ;
143144 private static readonly Action < SyntaxNodeAnalysisContext > SwitchExpressionArmAction = HandleSwitchExpressionArm ;
144145
145146 /// <summary>
@@ -218,6 +219,7 @@ public override void Initialize(AnalysisContext context)
218219 context . RegisterSyntaxNodeAction ( LambdaExpressionAction , SyntaxKinds . LambdaExpression ) ;
219220 context . RegisterSyntaxNodeAction ( ArrowExpressionClauseAction , SyntaxKind . ArrowExpressionClause ) ;
220221 context . RegisterSyntaxNodeAction ( RangeExpressionAction , SyntaxKindEx . RangeExpression ) ;
222+ context . RegisterSyntaxNodeAction ( RelationalPatternAction , SyntaxKindEx . RelationalPattern ) ;
221223 context . RegisterSyntaxNodeAction ( SwitchExpressionArmAction , SyntaxKindEx . SwitchExpressionArm ) ;
222224 }
223225
@@ -256,11 +258,6 @@ private static void HandleBinaryExpression(SyntaxNodeAnalysisContext context)
256258
257259 private static void HandleRangeExpression ( SyntaxNodeAnalysisContext context )
258260 {
259- if ( ! RangeExpressionSyntaxWrapper . IsInstance ( context . Node ) )
260- {
261- return ;
262- }
263-
264261 var rangeExpression = ( RangeExpressionSyntaxWrapper ) context . Node ;
265262 var hasLeftOperand = rangeExpression . LeftOperand != null ;
266263 var hasRightOperand = rangeExpression . RightOperand != null ;
@@ -346,6 +343,22 @@ private static void HandlePrefixUnaryExpression(SyntaxNodeAnalysisContext contex
346343 }
347344 }
348345
346+ private static void HandleRelationalPattern ( SyntaxNodeAnalysisContext context )
347+ {
348+ var relationalPattern = ( RelationalPatternSyntaxWrapper ) context . Node ;
349+ var operatorToken = relationalPattern . OperatorToken ;
350+ var precedingToken = operatorToken . GetPreviousToken ( ) ;
351+
352+ if ( precedingToken . IsKind ( SyntaxKind . OpenParenToken ) )
353+ {
354+ // Spacing next to the opening parenthesis is handled by SA1008; only enforce trailing whitespace here.
355+ CheckTokenTrailingWhitespace ( context , operatorToken , allowAtEndOfLine : false , withTrailingWhitespace : true ) ;
356+ return ;
357+ }
358+
359+ CheckToken ( context , operatorToken , withLeadingWhitespace : true , allowAtEndOfLine : false , withTrailingWhitespace : true ) ;
360+ }
361+
349362 private static void HandlePostfixUnaryExpression ( SyntaxNodeAnalysisContext context )
350363 {
351364 var unaryExpression = ( PostfixUnaryExpressionSyntax ) context . Node ;
0 commit comments