Skip to content

Commit dac0dd8

Browse files
committed
Update SA1216 for file-scoped namespaces
1 parent 947b470 commit dac0dd8

File tree

2 files changed

+53
-4
lines changed

2 files changed

+53
-4
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp10/OrderingRules/SA1216CSharp10UnitTests.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,57 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp10.OrderingRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
68
using StyleCop.Analyzers.Test.CSharp9.OrderingRules;
9+
using Xunit;
10+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
11+
StyleCop.Analyzers.OrderingRules.SA1216UsingStaticDirectivesMustBePlacedAtTheCorrectLocation,
12+
StyleCop.Analyzers.OrderingRules.UsingCodeFixProvider>;
713

814
public class SA1216CSharp10UnitTests : SA1216CSharp9UnitTests
915
{
16+
[Fact]
17+
public async Task TestUsingDirectivesOrderingInFileScopedNamespaceAsync()
18+
{
19+
await new CSharpTest
20+
{
21+
TestSources =
22+
{
23+
@"namespace Foo;
24+
25+
{|#0:using static System.Math;|}
26+
using Execute = System.Action;
27+
using System;
28+
",
29+
@"namespace Bar;
30+
31+
using Execute = System.Action;
32+
{|#1:using static System.Array;|}
33+
using static System.Math;
34+
using System;
35+
",
36+
},
37+
ExpectedDiagnostics =
38+
{
39+
Diagnostic().WithLocation(0),
40+
Diagnostic().WithLocation(1),
41+
},
42+
FixedSources =
43+
{
44+
@"namespace Foo;
45+
using System;
46+
using static System.Math;
47+
using Execute = System.Action;
48+
",
49+
@"namespace Bar;
50+
using System;
51+
using static System.Array;
52+
using static System.Math;
53+
using Execute = System.Action;
54+
",
55+
},
56+
}.RunAsync(CancellationToken.None).ConfigureAwait(false);
57+
}
1058
}
1159
}

StyleCop.Analyzers/StyleCop.Analyzers/OrderingRules/SA1216UsingStaticDirectivesMustBePlacedAtTheCorrectLocation.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

1415
/// <summary>
1516
/// A static using directive is positioned at the wrong location.
@@ -37,7 +38,7 @@ internal class SA1216UsingStaticDirectivesMustBePlacedAtTheCorrectLocation : Dia
3738
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.OrderingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
3839

3940
private static readonly Action<SyntaxNodeAnalysisContext> CompilationUnitAction = HandleCompilationUnit;
40-
private static readonly Action<SyntaxNodeAnalysisContext> NamespaceDeclarationAction = HandleNamespaceDeclaration;
41+
private static readonly Action<SyntaxNodeAnalysisContext> BaseNamespaceDeclarationAction = HandleBaseNamespaceDeclaration;
4142

4243
/// <inheritdoc/>
4344
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -50,7 +51,7 @@ public override void Initialize(AnalysisContext context)
5051
context.EnableConcurrentExecution();
5152

5253
context.RegisterSyntaxNodeAction(CompilationUnitAction, SyntaxKind.CompilationUnit);
53-
context.RegisterSyntaxNodeAction(NamespaceDeclarationAction, SyntaxKind.NamespaceDeclaration);
54+
context.RegisterSyntaxNodeAction(BaseNamespaceDeclarationAction, SyntaxKinds.BaseNamespaceDeclaration);
5455
}
5556

5657
private static void HandleCompilationUnit(SyntaxNodeAnalysisContext context)
@@ -59,9 +60,9 @@ private static void HandleCompilationUnit(SyntaxNodeAnalysisContext context)
5960
CheckUsingDeclarations(context, compilationUnit.Usings);
6061
}
6162

62-
private static void HandleNamespaceDeclaration(SyntaxNodeAnalysisContext context)
63+
private static void HandleBaseNamespaceDeclaration(SyntaxNodeAnalysisContext context)
6364
{
64-
var namespaceDirective = (NamespaceDeclarationSyntax)context.Node;
65+
var namespaceDirective = (BaseNamespaceDeclarationSyntaxWrapper)context.Node;
6566
CheckUsingDeclarations(context, namespaceDirective.Usings);
6667
}
6768

0 commit comments

Comments
 (0)