@@ -10,6 +10,7 @@ namespace StyleCop.Analyzers.OrderingRules
1010 using Microsoft . CodeAnalysis . CSharp . Syntax ;
1111 using Microsoft . CodeAnalysis . Diagnostics ;
1212 using StyleCop . Analyzers . Helpers ;
13+ using StyleCop . Analyzers . Lightup ;
1314 using StyleCop . Analyzers . Settings . ObjectModel ;
1415
1516 /// <summary>
@@ -40,6 +41,7 @@ internal class SA1208SystemUsingDirectivesMustBePlacedBeforeOtherUsingDirectives
4041
4142 private static readonly Action < SyntaxNodeAnalysisContext , StyleCopSettings > CompilationUnitAction = HandleCompilationUnit ;
4243 private static readonly Action < SyntaxNodeAnalysisContext , StyleCopSettings > NamespaceDeclarationAction = HandleNamespaceDeclaration ;
44+ private static readonly Action < SyntaxNodeAnalysisContext , StyleCopSettings > FileScopedNamespaceDeclarationAction = HandleFileScopedNamespaceDeclaration ;
4345
4446 /// <inheritdoc/>
4547 public override ImmutableArray < DiagnosticDescriptor > SupportedDiagnostics { get ; } =
@@ -53,6 +55,7 @@ public override void Initialize(AnalysisContext context)
5355
5456 context . RegisterSyntaxNodeAction ( CompilationUnitAction , SyntaxKind . CompilationUnit ) ;
5557 context . RegisterSyntaxNodeAction ( NamespaceDeclarationAction , SyntaxKind . NamespaceDeclaration ) ;
58+ context . RegisterSyntaxNodeAction ( FileScopedNamespaceDeclarationAction , SyntaxKindEx . FileScopedNamespaceDeclaration ) ;
5659 }
5760
5861 private static void HandleCompilationUnit ( SyntaxNodeAnalysisContext context , StyleCopSettings settings )
@@ -77,9 +80,19 @@ private static void HandleNamespaceDeclaration(SyntaxNodeAnalysisContext context
7780 }
7881
7982 var namespaceDeclaration = ( NamespaceDeclarationSyntax ) context . Node ;
80-
8183 var usings = namespaceDeclaration . Usings ;
84+ ProcessUsingsAndReportDiagnostic ( usings , context ) ;
85+ }
86+
87+ private static void HandleFileScopedNamespaceDeclaration ( SyntaxNodeAnalysisContext context , StyleCopSettings settings )
88+ {
89+ if ( ! settings . OrderingRules . SystemUsingDirectivesFirst )
90+ {
91+ return ;
92+ }
8293
94+ var namespaceDeclaration = ( FileScopedNamespaceDeclarationSyntaxWrapper ) context . Node ;
95+ var usings = namespaceDeclaration . Usings ;
8396 ProcessUsingsAndReportDiagnostic ( usings , context ) ;
8497 }
8598
0 commit comments