Skip to content

Commit 6d2c377

Browse files
authored
allow ABSTRACT/CLASS without PUBLIC / PRIVATE, fixes #343 (#345)
* allow ABSTRACT/CLASS without PUBLIC / PRIVATE, fixes #343 * added comments
1 parent 9f30c2f commit 6d2c377

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/checkstyle/checks/naming/MemberNameCheck.hx

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

1212
override function checkClassType(decl:TypeDef, d:Definition<ClassFlag, Array<Field>>, pos:Position) {
1313
if (!hasToken(CLASS)) {
14+
// if ABSTRACT is set, PUBLIC and PRIVATE don't affect CLASS
1415
if (hasToken(ABSTRACT)) return;
1516
if (!hasToken(PUBLIC) && !hasToken(PRIVATE)) return;
1617
}
@@ -26,6 +27,7 @@ class MemberNameCheck extends NameCheckBase<MemberNameCheckToken> {
2627

2728
override function checkAbstractType(decl:TypeDef, d:Definition<AbstractFlag, Array<Field>>, pos:Position) {
2829
if (!hasToken(ABSTRACT)) {
30+
// if CLASS is set, PUBLIC and PRIVATE don't affect ABSTRACT
2931
if (hasToken(CLASS)) return;
3032
if (!hasToken(PUBLIC) && !hasToken(PRIVATE)) return;
3133
}
@@ -73,8 +75,11 @@ class MemberNameCheck extends NameCheckBase<MemberNameCheckToken> {
7375

7476
function checkField(f:Field, t:ComplexType, e:Expr, p:ParentType) {
7577
if (f.isStatic(p)) return;
76-
if (!hasToken(PUBLIC) && f.isPublic(p)) return;
77-
if (!hasToken(PRIVATE) && f.isPrivate(p)) return;
78+
if (hasToken(PUBLIC) || hasToken(PRIVATE)) {
79+
// with PUBLIC or PRIVATE set, only look at fields with matching access modifiers
80+
if (!hasToken(PUBLIC) && f.isPublic(p)) return;
81+
if (!hasToken(PRIVATE) && f.isPrivate(p)) return;
82+
}
7883

7984
matchTypeName("member", f.name, f.pos);
8085
}

test/checks/naming/MemberNameCheckTest.hx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
3333
assertMsg(check, TEST5, 'Invalid enum member signature: "VALUE_TEST" (name should be "~/${check.format}/")');
3434
}
3535

36+
public function testTokenClass() {
37+
var check = new MemberNameCheck();
38+
check.tokens = [CLASS];
39+
40+
var memberMessage = 'Invalid member signature: "Count" (name should be "~/${check.format}/")';
41+
assertNoMsg(check, TEST);
42+
assertMsg(check, TEST1, memberMessage);
43+
assertMsg(check, TEST2, 'Invalid member signature: "Count" (name should be "~/${check.format}/")');
44+
assertNoMsg(check, TEST3);
45+
assertNoMsg(check, TEST4);
46+
assertNoMsg(check, TEST5);
47+
assertNoMsg(check, ABSTRACT_FIELDS);
48+
}
49+
3650
public function testTokenPublic() {
3751
var check = new MemberNameCheck();
3852
check.tokens = [CLASS, PUBLIC];
@@ -149,6 +163,10 @@ class MemberNameCheckTest extends CheckTestCase<MemberNameCheckTests> {
149163
assertNoMsg(check, TEST);
150164
assertMsg(check, ABSTRACT_FIELDS, 'Invalid member signature: "EnumConstructor3" (name should be "~/${check.format}/")');
151165

166+
check.tokens = [ABSTRACT];
167+
assertNoMsg(check, TEST);
168+
assertMsg(check, ABSTRACT_FIELDS, 'Invalid member signature: "EnumConstructor3" (name should be "~/${check.format}/")');
169+
152170
check.tokens = [ABSTRACT, PRIVATE];
153171
assertNoMsg(check, ABSTRACT_FIELDS);
154172

0 commit comments

Comments
 (0)