forked from eslint/eslint
/
no-unused-private-class-members.js
135 lines (126 loc) · 3.27 KB
/
no-unused-private-class-members.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**
* @fileoverview Tests for no-unused-private-class-members rule.
* @author Tim van der Lippe
*/
"use strict";
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const rule = require("../../../lib/rules/no-unused-private-class-members"),
{ RuleTester } = require("../../../lib/rule-tester");
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2022 } });
/**
* Returns an expected error for defined-but-not-used private class member.
* @param {string} classMemberName The name of the class member
* @returns {Object} An expected error object
*/
function definedError(classMemberName) {
return {
messageId: "unusedPrivateClassMember",
data: {
classMemberName
}
};
}
ruleTester.run("no-unused-private-class-members", rule, {
valid: [
"class Foo {}",
`
class Foo {
publicMember = 42;
}`,
`
class Foo {
#usedMember = 42;
method() {
return this.#usedMember;
}
}`,
`
class Foo {
#usedMember = 42;
anotherMember = this.#usedMember;
}`,
`
class Foo {
#usedMember = 42;
method() {
return someGlobalMethod(this.#usedMember);
}
}`,
//--------------------------------------------------------------------------
// Method definitions
//--------------------------------------------------------------------------
`
class Foo {
#usedMethod() {
return 42;
}
anotherMethod() {
return this.#usedMethod();
}
}`
],
invalid: [
{
code: `class Foo {
#unusedMember = 5;
}`,
errors: [definedError("unusedMember")]
},
{
code: `class First {}
class Second {
#unusedMemberInSecondClass = 5;
}`,
errors: [definedError("unusedMemberInSecondClass")]
},
{
code: `class First {
#unusedMemberInFirstClass = 5;
}
class Second {}`,
errors: [definedError("unusedMemberInFirstClass")]
},
{
code: `class First {
#firstUnusedMemberInSameClass = 5;
#secondUnusedMemberInSameClass = 5;
}`,
errors: [definedError("firstUnusedMemberInSameClass"), definedError("secondUnusedMemberInSameClass")]
},
{
code: `class Foo {
#usedOnlyInWrite = 5;
method() {
this.#usedOnlyInWrite = 42;
}
}`,
errors: [definedError("usedOnlyInWrite")]
},
//--------------------------------------------------------------------------
// Unused method definitions
//--------------------------------------------------------------------------
{
code: `class Foo {
#unusedMethod() {}
}`,
errors: [definedError("unusedMethod")]
},
{
code: `class Foo {
#unusedMethod() {}
#usedMethod() {
return 42;
}
publicMethod() {
return this.#usedMethod();
}
}`,
errors: [definedError("unusedMethod")]
}
]
});