Skip to content

Commit 73149cc

Browse files
Alexey Immoreevajafff
Alexey Immoreev
authored andcommitted
naming-convention filter fix (#114)
1 parent a38e6a9 commit 73149cc

File tree

3 files changed

+25
-27
lines changed

3 files changed

+25
-27
lines changed

rules/namingConventionRule.ts

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,14 @@ class NormalizedConfig {
187187
this._format = raw;
188188
}
189189

190-
public matches(type: TypeSelector, modifiers: number, name: string): [boolean, boolean] {
190+
public matches(type: TypeSelector, modifiers: number, name: string): boolean {
191191
if (this._final && type > this._type << 1) // check if TypeSelector has a higher bit set than this._type
192-
return [false, false];
192+
return false;
193193
if ((this._type & type) === 0 || (this._modifiers & ~modifiers) !== 0)
194-
return [false, false];
194+
return false;
195195
if (this._filter === undefined)
196-
return [true, false];
197-
return [this._filter.test(name), true];
196+
return true;
197+
return this._filter.test(name);
198198
}
199199

200200
public getFormat() {
@@ -303,7 +303,6 @@ class NameChecker {
303303

304304
class IdentifierNameWalker extends Lint.AbstractWalker<NormalizedConfig[]> {
305305
private _depth = 0;
306-
private _cache = new Map<string, NameChecker | null>();
307306
private _usage: Map<ts.Identifier, utils.VariableInfo> | undefined = undefined;
308307

309308
private _isUnused(name: ts.Identifier): boolean {
@@ -448,32 +447,16 @@ class IdentifierNameWalker extends Lint.AbstractWalker<NormalizedConfig[]> {
448447
}
449448

450449
private _checkName(name: ts.Identifier, type: TypeSelector, modifiers: number) {
451-
const matchingChecker = this._getMatchingChecker(type, modifiers, name.text);
450+
const matchingChecker = this._createChecker(type, modifiers, name.text);
452451
if (matchingChecker !== null) // tslint:disable-line:no-null-keyword
453452
matchingChecker.check(name, this);
454453
}
455454

456-
private _getMatchingChecker(type: TypeSelector, modifiers: number, name: string): NameChecker | null {
457-
const key = `${type},${modifiers}`;
458-
const cached = this._cache.get(key);
459-
if (cached !== undefined)
460-
return cached;
461-
462-
const [checker, hasFilter] = this._createChecker(type, modifiers, name);
463-
if (!hasFilter) // only cache if there is no filter for the name
464-
this._cache.set(key, checker);
465-
return checker;
466-
}
467-
468-
private _createChecker(type: TypeSelector, modifiers: number, name: string): [NameChecker | null, boolean] {
469-
let hasFilter = false;
455+
private _createChecker(type: TypeSelector, modifiers: number, name: string): NameChecker | null {
470456
const config = this.options.reduce(
471457
(format: IFormat, rule) => {
472-
const [matches, filterUsed] = rule.matches(type, modifiers, name);
473-
if (!matches)
458+
if (!rule.matches(type, modifiers, name))
474459
return format;
475-
if (filterUsed)
476-
hasFilter = true;
477460
return Object.assign(format, rule.getFormat()); // tslint:disable-line:prefer-object-spread
478461
},
479462
{
@@ -492,8 +475,8 @@ class IdentifierNameWalker extends Lint.AbstractWalker<NormalizedConfig[]> {
492475
!config.prefix &&
493476
!config.regex &&
494477
!config.suffix)
495-
return [null, hasFilter]; // tslint:disable-line:no-null-keyword
496-
return [new NameChecker(type, config), hasFilter];
478+
return null; // tslint:disable-line:no-null-keyword
479+
return new NameChecker(type, config);
497480
}
498481

499482
private _getModifiers(node: ts.Node, type: TypeSelector, modifiers: Modifiers = 0): number {
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function foo(baz) {}
2+
function foo(Baz) {}
3+
function foo(bar) {}
4+
function foo(Bar) {}
5+
~~~ [parameter name must be in camelCase]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"rulesDirectory": ["../../../../rules"],
3+
"rules": {
4+
"naming-convention": [
5+
true,
6+
{"type": "parameter", "format": ["camelCase"]},
7+
{"type": "parameter", "format": ["PascalCase"], "filter": "Baz"}
8+
]
9+
}
10+
}

0 commit comments

Comments
 (0)