Skip to content

Commit 9f30c2f

Browse files
authored
make MemberNameCheck tokens more tolerant, fixes #343 (#344)
* make MemberNameCheck tokens more tolerant, fixes #343
1 parent aa27467 commit 9f30c2f

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

src/checkstyle/checks/naming/MemberNameCheck.hx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ class MemberNameCheck extends NameCheckBase<MemberNameCheckToken> {
1010
}
1111

1212
override function checkClassType(decl:TypeDef, d:Definition<ClassFlag, Array<Field>>, pos:Position) {
13-
if (!hasToken(CLASS)) return;
13+
if (!hasToken(CLASS)) {
14+
if (hasToken(ABSTRACT)) return;
15+
if (!hasToken(PUBLIC) && !hasToken(PRIVATE)) return;
16+
}
1417
if (ignoreExtern && d.flags.contains(HExtern)) return;
1518
checkFields(d.data, decl.toParentType());
1619
}
@@ -22,7 +25,10 @@ class MemberNameCheck extends NameCheckBase<MemberNameCheckToken> {
2225
}
2326

2427
override function checkAbstractType(decl:TypeDef, d:Definition<AbstractFlag, Array<Field>>, pos:Position) {
25-
if (!hasToken(ABSTRACT)) return;
28+
if (!hasToken(ABSTRACT)) {
29+
if (hasToken(CLASS)) return;
30+
if (!hasToken(PUBLIC) && !hasToken(PRIVATE)) return;
31+
}
2632
checkFields(d.data, decl.toParentType());
2733
}
2834

test/checks/naming/MemberNameCheckTest.hx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
1717
assertMsg(check, TEST3, 'Invalid typedef member signature: "Count" (name should be "~/${check.format}/")');
1818
assertMsg(check, TEST5, 'Invalid enum member signature: "VALUE_TEST" (name should be "~/${check.format}/")');
1919
assertMsg(check, PROPERTY_NAME, 'Invalid member signature: "Example" (name should be "~/^[a-z][a-zA-Z0-9]*$/")');
20+
assertMsg(check, ABSTRACT_FIELDS, 'Invalid member signature: "EnumConstructor3" (name should be "~/${check.format}/")');
2021
}
2122

2223
public function testIgnoreExtern() {
@@ -43,6 +44,23 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
4344
assertNoMsg(check, TEST3);
4445
assertNoMsg(check, TEST4);
4546
assertNoMsg(check, TEST5);
47+
assertNoMsg(check, ABSTRACT_FIELDS);
48+
49+
check.tokens = [PUBLIC];
50+
assertNoMsg(check, TEST);
51+
assertMsg(check, TEST1, memberMessage);
52+
assertNoMsg(check, TEST2);
53+
assertNoMsg(check, TEST3);
54+
assertNoMsg(check, TEST4);
55+
assertNoMsg(check, TEST5);
56+
57+
check.tokens = [ABSTRACT, CLASS, PUBLIC];
58+
assertNoMsg(check, TEST);
59+
assertMsg(check, TEST1, memberMessage);
60+
assertNoMsg(check, TEST2);
61+
assertNoMsg(check, TEST3);
62+
assertNoMsg(check, TEST4);
63+
assertNoMsg(check, TEST5);
4664

4765
check.tokens = [PUBLIC, TYPEDEF];
4866
assertMsg(check, TEST3, 'Invalid typedef member signature: "Count" (name should be "~/${check.format}/")');
@@ -52,6 +70,23 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
5270
var check = new MemberNameCheck();
5371
check.tokens = [CLASS, PRIVATE];
5472

73+
assertNoMsg(check, TEST);
74+
assertNoMsg(check, TEST1);
75+
assertMsg(check, TEST2, 'Invalid member signature: "Count" (name should be "~/${check.format}/")');
76+
assertNoMsg(check, TEST3);
77+
assertNoMsg(check, TEST4);
78+
assertNoMsg(check, TEST5);
79+
assertNoMsg(check, ABSTRACT_FIELDS);
80+
81+
check.tokens = [PRIVATE];
82+
assertNoMsg(check, TEST);
83+
assertNoMsg(check, TEST1);
84+
assertMsg(check, TEST2, 'Invalid member signature: "Count" (name should be "~/${check.format}/")');
85+
assertNoMsg(check, TEST3);
86+
assertNoMsg(check, TEST4);
87+
assertNoMsg(check, TEST5);
88+
89+
check.tokens = [ABSTRACT, CLASS, PRIVATE];
5590
assertNoMsg(check, TEST);
5691
assertNoMsg(check, TEST1);
5792
assertMsg(check, TEST2, 'Invalid member signature: "Count" (name should be "~/${check.format}/")');
@@ -73,6 +108,7 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
73108
assertNoMsg(check, TEST4);
74109
assertMsg(check, TEST5, 'Invalid enum member signature: "VALUE_TEST" (name should be "~/${check.format}/")');
75110
assertMsg(check, TEST6, 'Invalid enum member signature: "VALUE" (name should be "~/${check.format}/")');
111+
assertNoMsg(check, ABSTRACT_FIELDS);
76112
}
77113

78114
public function testTokenTypedef() {
@@ -84,6 +120,7 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
84120
assertMsg(check, TEST3, 'Invalid typedef member signature: "Count" (name should be "~/${check.format}/")');
85121
assertNoMsg(check, TEST4);
86122
assertNoMsg(check, TEST5);
123+
assertNoMsg(check, ABSTRACT_FIELDS);
87124
}
88125

89126
public function testFormat() {
@@ -115,8 +152,20 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
115152
check.tokens = [ABSTRACT, PRIVATE];
116153
assertNoMsg(check, ABSTRACT_FIELDS);
117154

155+
check.tokens = [PRIVATE];
156+
assertNoMsg(check, ABSTRACT_FIELDS);
157+
158+
check.tokens = [ABSTRACT, CLASS, PRIVATE];
159+
assertNoMsg(check, ABSTRACT_FIELDS);
160+
118161
check.tokens = [ABSTRACT, PUBLIC];
119162
assertMsg(check, ABSTRACT_FIELDS, 'Invalid member signature: "EnumConstructor3" (name should be "~/${check.format}/")');
163+
164+
check.tokens = [PUBLIC];
165+
assertMsg(check, ABSTRACT_FIELDS, 'Invalid member signature: "EnumConstructor3" (name should be "~/${check.format}/")');
166+
167+
check.tokens = [ABSTRACT, CLASS, PUBLIC];
168+
assertMsg(check, ABSTRACT_FIELDS, 'Invalid member signature: "EnumConstructor3" (name should be "~/${check.format}/")');
120169
}
121170

122171
public function testDefineCombinations() {

0 commit comments

Comments
 (0)