@@ -15,6 +15,7 @@ namespace StyleCop.Analyzers.LayoutRules
1515 using Microsoft . CodeAnalysis . Diagnostics ;
1616 using Microsoft . CodeAnalysis . Text ;
1717 using StyleCop . Analyzers . Helpers ;
18+ using StyleCop . Analyzers . Lightup ;
1819 using StyleCop . Analyzers . Settings . ObjectModel ;
1920
2021 /// <summary>
@@ -87,6 +88,7 @@ internal class SA1516ElementsMustBeSeparatedByBlankLine : DiagnosticAnalyzer
8788 private static readonly Action < SyntaxNodeAnalysisContext > TypeDeclarationAction = HandleTypeDeclaration ;
8889 private static readonly Action < SyntaxNodeAnalysisContext , StyleCopSettings > CompilationUnitAction = HandleCompilationUnit ;
8990 private static readonly Action < SyntaxNodeAnalysisContext , StyleCopSettings > NamespaceDeclarationAction = HandleNamespaceDeclaration ;
91+ private static readonly Action < SyntaxNodeAnalysisContext , StyleCopSettings > FileScopedNamespaceDeclarationAction = HandleFileScopedNamespaceDeclaration ;
9092 private static readonly Action < SyntaxNodeAnalysisContext > BasePropertyDeclarationAction = HandleBasePropertyDeclaration ;
9193
9294 private static readonly ImmutableDictionary < string , string > DiagnosticProperties = ImmutableDictionary < string , string > . Empty . Add ( CodeFixActionKey , InsertBlankLineValue ) ;
@@ -129,6 +131,7 @@ public override void Initialize(AnalysisContext context)
129131 context . RegisterSyntaxNodeAction ( TypeDeclarationAction , SyntaxKinds . TypeDeclaration ) ;
130132 context . RegisterSyntaxNodeAction ( CompilationUnitAction , SyntaxKind . CompilationUnit ) ;
131133 context . RegisterSyntaxNodeAction ( NamespaceDeclarationAction , SyntaxKind . NamespaceDeclaration ) ;
134+ context . RegisterSyntaxNodeAction ( FileScopedNamespaceDeclarationAction , SyntaxKindEx . FileScopedNamespaceDeclaration ) ;
132135 context . RegisterSyntaxNodeAction ( BasePropertyDeclarationAction , SyntaxKinds . BasePropertyDeclaration ) ;
133136 } ) ;
134137 }
@@ -212,6 +215,20 @@ private static void HandleCompilationUnit(SyntaxNodeAnalysisContext context, Sty
212215 }
213216 }
214217
218+ private static void HandleFileScopedNamespaceDeclaration ( SyntaxNodeAnalysisContext context , StyleCopSettings settings )
219+ {
220+ var namespaceDeclaration = ( BaseNamespaceDeclarationSyntaxWrapper ) context . Node ;
221+
222+ var members = namespaceDeclaration . Members ;
223+
224+ HandleMemberList ( context , members ) ;
225+
226+ if ( members . Count > 0 )
227+ {
228+ ReportIfThereIsNoBlankLine ( context , namespaceDeclaration . Name , members [ 0 ] ) ;
229+ }
230+ }
231+
215232 private static void HandleNamespaceDeclaration ( SyntaxNodeAnalysisContext context , StyleCopSettings settings )
216233 {
217234 var namespaceDeclaration = ( NamespaceDeclarationSyntax ) context . Node ;
0 commit comments