@@ -133,6 +133,11 @@ internal class SA1003SymbolsMustBeSpacedCorrectly : DiagnosticAnalyzer
133133 private static readonly Action < SyntaxNodeAnalysisContext > CastExpressionAction = HandleCastExpression ;
134134 private static readonly Action < SyntaxNodeAnalysisContext > EqualsValueClauseAction = HandleEqualsValueClause ;
135135 private static readonly Action < SyntaxNodeAnalysisContext > LambdaExpressionAction = HandleLambdaExpression ;
136+ private static readonly Action < SyntaxNodeAnalysisContext > PropertyDeclarationAction = HandlePropertyDeclaration ;
137+ private static readonly Action < SyntaxNodeAnalysisContext > MethodDeclarationAction = HandleMethodDeclaration ;
138+ private static readonly Action < SyntaxNodeAnalysisContext > OperatorDeclarationAction = HandleOperatorDeclaration ;
139+ private static readonly Action < SyntaxNodeAnalysisContext > ConversionOperatorDeclarationAction = HandleConversionOperatorDeclaration ;
140+ private static readonly Action < SyntaxNodeAnalysisContext > IndexerDeclarationAction = HandleIndexerDeclaration ;
136141
137142 /// <summary>
138143 /// Gets the descriptor for prefix unary expression that may not be followed by a comment.
@@ -210,6 +215,11 @@ private static void HandleCompilationStart(CompilationStartAnalysisContext conte
210215 context . RegisterSyntaxNodeActionHonorExclusions ( CastExpressionAction , SyntaxKind . CastExpression ) ;
211216 context . RegisterSyntaxNodeActionHonorExclusions ( EqualsValueClauseAction , SyntaxKind . EqualsValueClause ) ;
212217 context . RegisterSyntaxNodeActionHonorExclusions ( LambdaExpressionAction , LambdaExpressionKinds ) ;
218+ context . RegisterSyntaxNodeActionHonorExclusions ( PropertyDeclarationAction , SyntaxKind . PropertyDeclaration ) ;
219+ context . RegisterSyntaxNodeActionHonorExclusions ( IndexerDeclarationAction , SyntaxKind . IndexerDeclaration ) ;
220+ context . RegisterSyntaxNodeActionHonorExclusions ( MethodDeclarationAction , SyntaxKind . MethodDeclaration ) ;
221+ context . RegisterSyntaxNodeActionHonorExclusions ( OperatorDeclarationAction , SyntaxKind . OperatorDeclaration ) ;
222+ context . RegisterSyntaxNodeActionHonorExclusions ( ConversionOperatorDeclarationAction , SyntaxKind . ConversionOperatorDeclaration ) ;
213223 }
214224
215225 private static void HandleConstructorDeclaration ( SyntaxNodeAnalysisContext context )
@@ -347,6 +357,44 @@ private static void HandleLambdaExpression(SyntaxNodeAnalysisContext context)
347357 CheckToken ( context , lambdaExpression . ArrowToken , true , true , true ) ;
348358 }
349359
360+ private static void HandlePropertyDeclaration ( SyntaxNodeAnalysisContext context )
361+ {
362+ var propertyDeclaration = ( PropertyDeclarationSyntax ) context . Node ;
363+ HandleArrowExpressionClause ( context , propertyDeclaration . ExpressionBody ) ;
364+ }
365+
366+ private static void HandleIndexerDeclaration ( SyntaxNodeAnalysisContext context )
367+ {
368+ var indexerDeclaration = ( IndexerDeclarationSyntax ) context . Node ;
369+ HandleArrowExpressionClause ( context , indexerDeclaration . ExpressionBody ) ;
370+ }
371+
372+ private static void HandleMethodDeclaration ( SyntaxNodeAnalysisContext context )
373+ {
374+ var methodDeclaration = ( MethodDeclarationSyntax ) context . Node ;
375+ HandleArrowExpressionClause ( context , methodDeclaration . ExpressionBody ) ;
376+ }
377+
378+ private static void HandleOperatorDeclaration ( SyntaxNodeAnalysisContext context )
379+ {
380+ var operatorDeclaration = ( OperatorDeclarationSyntax ) context . Node ;
381+ HandleArrowExpressionClause ( context , operatorDeclaration . ExpressionBody ) ;
382+ }
383+
384+ private static void HandleConversionOperatorDeclaration ( SyntaxNodeAnalysisContext context )
385+ {
386+ var conversionOperatorDeclaration = ( ConversionOperatorDeclarationSyntax ) context . Node ;
387+ HandleArrowExpressionClause ( context , conversionOperatorDeclaration . ExpressionBody ) ;
388+ }
389+
390+ private static void HandleArrowExpressionClause ( SyntaxNodeAnalysisContext context , ArrowExpressionClauseSyntax arrowExpressionClause )
391+ {
392+ if ( arrowExpressionClause != null )
393+ {
394+ CheckToken ( context , arrowExpressionClause . ArrowToken , true , true , true ) ;
395+ }
396+ }
397+
350398 private static void CheckToken ( SyntaxNodeAnalysisContext context , SyntaxToken token , bool withLeadingWhitespace , bool allowAtEndOfLine , bool withTrailingWhitespace , string tokenText = null )
351399 {
352400 tokenText = tokenText ?? token . Text ;
0 commit comments