@@ -30,7 +30,8 @@ public override void Initialize(AnalysisContext context)
3030 context . RegisterSyntaxNodeAction ( AnalyzeBlock , SyntaxKind . Block ) ;
3131 context . RegisterSyntaxNodeAction ( AnalyzeWhileStatement , SyntaxKind . WhileStatement ) ;
3232 context . RegisterSyntaxNodeAction ( AnalyzeForStatement , SyntaxKind . ForStatement ) ;
33- context . RegisterSyntaxNodeAction ( AnalyzeForEachStatement , SyntaxKind . ForEachStatement ) ;
33+ context . RegisterSyntaxNodeAction ( AnalyzeCommonForEachStatement , SyntaxKind . ForEachStatement ) ;
34+ context . RegisterSyntaxNodeAction ( AnalyzeCommonForEachStatement , SyntaxKind . ForEachVariableStatement ) ;
3435 context . RegisterSyntaxNodeAction ( AnalyzeUsingStatement , SyntaxKind . UsingStatement ) ;
3536 context . RegisterSyntaxNodeAction ( AnalyzeFixedStatement , SyntaxKind . FixedStatement ) ;
3637 context . RegisterSyntaxNodeAction ( AnalyzeCheckedStatement , SyntaxKind . CheckedStatement ) ;
@@ -40,6 +41,7 @@ public override void Initialize(AnalysisContext context)
4041 context . RegisterSyntaxNodeAction ( AnalyzeIfStatement , SyntaxKind . IfStatement ) ;
4142 context . RegisterSyntaxNodeAction ( AnalyzeSwitchStatement , SyntaxKind . SwitchStatement ) ;
4243 context . RegisterSyntaxNodeAction ( AnalyzeTryStatement , SyntaxKind . TryStatement ) ;
44+ context . RegisterSyntaxNodeAction ( AnalyzeElseClause , SyntaxKind . ElseClause ) ;
4345 }
4446
4547 private static void AnalyzeBlock ( SyntaxNodeAnalysisContext context )
@@ -76,9 +78,9 @@ private static void AnalyzeForStatement(SyntaxNodeAnalysisContext context)
7678 }
7779 }
7880
79- private static void AnalyzeForEachStatement ( SyntaxNodeAnalysisContext context )
81+ private static void AnalyzeCommonForEachStatement ( SyntaxNodeAnalysisContext context )
8082 {
81- var forEachStatement = ( ForEachStatementSyntax ) context . Node ;
83+ var forEachStatement = ( CommonForEachStatementSyntax ) context . Node ;
8284
8385 if ( forEachStatement . IsParentKind ( SyntaxKind . Block ) )
8486 {
@@ -187,6 +189,21 @@ private static void AnalyzeTryStatement(SyntaxNodeAnalysisContext context)
187189 }
188190 }
189191
192+ private static void AnalyzeElseClause ( SyntaxNodeAnalysisContext context )
193+ {
194+ var elseClause = ( ElseClauseSyntax ) context . Node ;
195+
196+ if ( elseClause . Statement ? . Kind ( ) == SyntaxKind . Block )
197+ {
198+ IfStatementSyntax ifStatement = elseClause . GetTopmostIf ( ) ;
199+
200+ if ( ifStatement . IsParentKind ( SyntaxKind . Block ) )
201+ {
202+ AnalyzeStatement ( context , ifStatement , ( BlockSyntax ) elseClause . Statement ) ;
203+ }
204+ }
205+ }
206+
190207 private static void AnalyzeStatement ( SyntaxNodeAnalysisContext context , StatementSyntax statement , BlockSyntax block )
191208 {
192209 if ( block ? . IsMissing == false )
0 commit comments