10
10
// -----------------------------------------------------------------------------
11
11
12
12
const ruleNoUnusedVars = require ( '../../helpers/getESLintCoreRule' ) ( 'no-unused-vars' ) ;
13
+
13
14
const rulePreferConst = require ( '../../helpers/getESLintCoreRule' ) ( 'prefer-const' ) ;
14
15
15
16
const RuleTester = require ( '../../helpers/ruleTester' ) ;
@@ -136,7 +137,13 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
136
137
invalid : parsers . all ( [
137
138
{
138
139
code : '/* eslint react/jsx-uses-vars: 1 */ var App;' ,
139
- errors : [ { message : '\'App\' is defined but never used.' } ] ,
140
+ errors : [ {
141
+ message : '\'App\' is defined but never used.' ,
142
+ suggestions : [ {
143
+ messageId : 'removeVar' ,
144
+ output : '/* eslint react/jsx-uses-vars: 1 */ ' ,
145
+ } ] ,
146
+ } ] ,
140
147
} ,
141
148
{
142
149
code : `
@@ -145,7 +152,18 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
145
152
var unused;
146
153
React.render(<App unused=""/>);
147
154
` ,
148
- errors : [ { message : '\'unused\' is defined but never used.' } ] ,
155
+ errors : [ {
156
+ message : '\'unused\' is defined but never used.' ,
157
+ suggestions : [ {
158
+ messageId : 'removeVar' ,
159
+ output : `
160
+ /* eslint react/jsx-uses-vars: 1 */
161
+ var App;
162
+ ${ '' }
163
+ React.render(<App unused=""/>);
164
+ ` ,
165
+ } ] ,
166
+ } ] ,
149
167
} ,
150
168
{
151
169
code : `
@@ -155,8 +173,30 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
155
173
React.render(<App:Hello/>);
156
174
` ,
157
175
errors : [
158
- { message : '\'App\' is defined but never used.' } ,
159
- { message : '\'Hello\' is defined but never used.' } ,
176
+ {
177
+ message : '\'App\' is defined but never used.' ,
178
+ suggestions : [ {
179
+ messageId : 'removeVar' ,
180
+ output : `
181
+ /* eslint react/jsx-uses-vars: 1 */
182
+ ${ '' }
183
+ var Hello;
184
+ React.render(<App:Hello/>);
185
+ ` ,
186
+ } ] ,
187
+ } ,
188
+ {
189
+ message : '\'Hello\' is defined but never used.' ,
190
+ suggestions : [ {
191
+ messageId : 'removeVar' ,
192
+ output : `
193
+ /* eslint react/jsx-uses-vars: 1 */
194
+ var App;
195
+ ${ '' }
196
+ React.render(<App:Hello/>);
197
+ ` ,
198
+ } ] ,
199
+ } ,
160
200
] ,
161
201
features : [ 'jsx namespace' ] ,
162
202
} ,
@@ -167,14 +207,34 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
167
207
var Input;
168
208
React.render(<Button.Input unused=""/>);
169
209
` ,
170
- errors : [ { message : '\'Input\' is defined but never used.' } ] ,
210
+ errors : [ {
211
+ message : '\'Input\' is defined but never used.' ,
212
+ suggestions : [ {
213
+ messageId : 'removeVar' ,
214
+ output : `
215
+ /* eslint react/jsx-uses-vars: 1 */
216
+ var Button;
217
+ ${ '' }
218
+ React.render(<Button.Input unused=""/>);
219
+ ` ,
220
+ } ] ,
221
+ } ] ,
171
222
} ,
172
223
{
173
224
code : `
174
225
/* eslint react/jsx-uses-vars: 1 */
175
226
class unused {}
176
227
` ,
177
- errors : [ { message : '\'unused\' is defined but never used.' } ] ,
228
+ errors : [ {
229
+ message : '\'unused\' is defined but never used.' ,
230
+ suggestions : [ {
231
+ messageId : 'removeVar' ,
232
+ output : `
233
+ /* eslint react/jsx-uses-vars: 1 */
234
+ ${ '' }
235
+ ` ,
236
+ } ] ,
237
+ } ] ,
178
238
} ,
179
239
{
180
240
code : `
@@ -190,6 +250,13 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
190
250
{
191
251
message : '\'HelloMessage\' is defined but never used.' ,
192
252
line : 3 ,
253
+ suggestions : [ {
254
+ messageId : 'removeVar' ,
255
+ output : `
256
+ /* eslint react/jsx-uses-vars: 1 */
257
+ ${ '' }
258
+ ` ,
259
+ } ] ,
193
260
} ,
194
261
] ,
195
262
} ,
@@ -207,6 +274,18 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
207
274
{
208
275
message : '\'Hello\' is defined but never used.' ,
209
276
line : 3 ,
277
+ suggestions : [ {
278
+ messageId : 'removeVar' ,
279
+ output : `
280
+ /* eslint react/jsx-uses-vars: 1 */
281
+ ${ '' }
282
+ function Greetings() {
283
+ const Hello = require('Hello').default;
284
+ return <Hello />;
285
+ }
286
+ Greetings();
287
+ ` ,
288
+ } ] ,
210
289
} ,
211
290
] ,
212
291
} ,
@@ -216,7 +295,17 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
216
295
var lowercase;
217
296
React.render(<lowercase />);
218
297
` ,
219
- errors : [ { message : '\'lowercase\' is defined but never used.' } ] ,
298
+ errors : [ {
299
+ message : '\'lowercase\' is defined but never used.' ,
300
+ suggestions : [ {
301
+ messageId : 'removeVar' ,
302
+ output : `
303
+ /* eslint react/jsx-uses-vars: 1 */
304
+ ${ '' }
305
+ React.render(<lowercase />);
306
+ ` ,
307
+ } ] ,
308
+ } ] ,
220
309
} ,
221
310
{
222
311
code : `
@@ -230,10 +319,29 @@ ruleTester.run('no-unused-vars', ruleNoUnusedVars, {
230
319
{
231
320
message : '\'div\' is defined but never used.' ,
232
321
line : 3 ,
322
+ suggestions : [ {
323
+ messageId : 'removeVar' ,
324
+ output : `
325
+ /* eslint react/jsx-uses-vars: 1 */
326
+ function Greetings() {
327
+ return <div />;
328
+ }
329
+ Greetings();
330
+ ` ,
331
+ } ] ,
233
332
} ,
234
333
] ,
235
334
} ,
236
- ] ) ,
335
+ ] . map ( ( test ) => {
336
+ if ( ! ruleNoUnusedVars . meta . hasSuggestions ) {
337
+ test . errors = test . errors . map ( ( error ) => {
338
+ // https://github.com/eslint/eslint/pull/18352 added suggestions to no-unused-vars in eslint v9.17.0
339
+ delete error . suggestions ;
340
+ return error ;
341
+ } ) ;
342
+ }
343
+ return test ;
344
+ } ) ) ,
237
345
} ) ;
238
346
239
347
// Check compatibility with eslint prefer-const rule (#716)
0 commit comments