Skip to content

Commit 6e55178

Browse files
committed
Uniformly treat const as (also) static and readonly
1 parent 9f0707c commit 6e55178

3 files changed

Lines changed: 7 additions & 8 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers/OrderingRules/SA1203ConstantsMustAppearBeforeFields.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,9 @@ private static void HandleTypeDeclaration(SyntaxNodeAnalysisContext context, Sty
8282
}
8383

8484
AccessLevel currentAccessLevel = MemberOrderHelper.GetAccessLevelForOrdering(field, field.Modifiers);
85-
bool currentFieldReadonly = field.Modifiers.Any(SyntaxKind.ReadOnlyKeyword);
86-
bool currentFieldStatic = field.Modifiers.Any(SyntaxKind.StaticKeyword);
85+
bool currentFieldConstant = field.Modifiers.Any(SyntaxKind.ConstKeyword);
86+
bool currentFieldReadonly = currentFieldConstant || field.Modifiers.Any(SyntaxKind.ReadOnlyKeyword);
87+
bool currentFieldStatic = currentFieldConstant || field.Modifiers.Any(SyntaxKind.StaticKeyword);
8788
bool compareConst = true;
8889
for (int j = 0; compareConst && j < constantIndex; j++)
8990
{
@@ -123,8 +124,6 @@ private static void HandleTypeDeclaration(SyntaxNodeAnalysisContext context, Sty
123124
}
124125
}
125126

126-
bool currentFieldConstant = field.Modifiers.Any(SyntaxKind.ConstKeyword);
127-
128127
if (compareConst)
129128
{
130129
if (!previousFieldConstant && currentFieldConstant)

StyleCop.Analyzers/StyleCop.Analyzers/OrderingRules/SA1204StaticElementsMustAppearBeforeInstanceElements.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ private static void HandleMemberList(SyntaxNodeAnalysisContext context, Immutabl
115115
foreach (var member in members)
116116
{
117117
var modifiers = member.GetModifiers();
118-
var currentMemberStatic = modifiers.Any(SyntaxKind.StaticKeyword);
119118

120119
var currentSyntaxKind = member.Kind();
121120
currentSyntaxKind = currentSyntaxKind == SyntaxKind.EventFieldDeclaration ? SyntaxKind.EventDeclaration : currentSyntaxKind;
122121
var currentAccessLevel = MemberOrderHelper.GetAccessLevelForOrdering(member, modifiers);
123122
bool currentMemberConstant = modifiers.Any(SyntaxKind.ConstKeyword);
124-
bool currentMemberReadonly = modifiers.Any(SyntaxKind.ReadOnlyKeyword);
123+
bool currentMemberReadonly = currentMemberConstant || modifiers.Any(SyntaxKind.ReadOnlyKeyword);
124+
bool currentMemberStatic = currentMemberConstant || modifiers.Any(SyntaxKind.StaticKeyword);
125125
bool compareStatic = true;
126126
for (int j = 0; compareStatic && j < staticIndex; j++)
127127
{

StyleCop.Analyzers/StyleCop.Analyzers/OrderingRules/SA1214ReadonlyElementsMustAppearBeforeNonReadonlyElements.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ private static void HandleTypeDeclaration(SyntaxNodeAnalysisContext context, Sty
8181
var modifiers = member.GetModifiers();
8282
var currentAccessLevel = MemberOrderHelper.GetAccessLevelForOrdering(member, modifiers);
8383
bool currentFieldConst = modifiers.Any(SyntaxKind.ConstKeyword);
84-
bool currentFieldStatic = modifiers.Any(SyntaxKind.StaticKeyword);
85-
bool currentFieldReadonly = modifiers.Any(SyntaxKind.ReadOnlyKeyword);
84+
bool currentFieldStatic = currentFieldConst || modifiers.Any(SyntaxKind.StaticKeyword);
85+
bool currentFieldReadonly = currentFieldConst || modifiers.Any(SyntaxKind.ReadOnlyKeyword);
8686
if (previousField == null)
8787
{
8888
previousField = field;

0 commit comments

Comments
 (0)