@@ -145,140 +145,205 @@ ruleTester.run(RULE_NAME, rule, {
145
145
// toArray(Array.from([1, 2 ,3], x => <App />));
146
146
` ,
147
147
] ,
148
- invalid : [ {
149
- code : "[<App />];" ,
150
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
151
- } , {
152
- code : "[<App {...key} />];" ,
153
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
154
- } , {
155
- code : "[<App key={0}/>, <App />];" ,
156
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
157
- } , {
158
- code : "[1, 2 ,3].map(function(x) { return <App /> });" ,
159
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
160
- } , {
161
- code : "[1, 2 ,3].map(x => <App />);" ,
162
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
163
- } , {
164
- code : "[1, 2 ,3].map(x => x && <App x={x} />);" ,
165
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
166
- } , {
167
- code : '[1, 2 ,3].map(x => x ? <App x={x} key="1" /> : <OtherApp x={x} />);' ,
168
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
169
- } , {
170
- code : '[1, 2 ,3].map(x => x ? <App x={x} /> : <OtherApp x={x} key="2" />);' ,
171
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
172
- } , {
173
- code : "[1, 2 ,3].map(x => { return <App /> });" ,
174
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
175
- } , {
176
- code : "Array.from([1, 2 ,3], function(x) { return <App /> });" ,
177
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
178
- } , {
179
- code : "Array.from([1, 2 ,3], (x => { return <App /> }));" ,
180
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
181
- } , {
182
- code : "Array.from([1, 2 ,3], (x => <App />));" ,
183
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
184
- } , {
185
- code : "[1, 2, 3]?.map(x => <BabelEslintApp />)" ,
186
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
187
- } , {
188
- code : "[1, 2, 3]?.map(x => <TypescriptEslintApp />)" ,
189
- errors : [ { messageId : "NO_MISSING_KEY" } ] ,
190
- } , {
191
- code : "[1, 2, 3].map(x => <>{x}</>);" ,
192
- errors : [
193
- {
194
- messageId : "NO_MISSING_KEY_WITH_FRAGMENT" ,
195
- data : {
196
- reactPragma : "React" ,
197
- fragmentPragma : "Fragment" ,
148
+ invalid : [
149
+ {
150
+ code : "[<App />];" ,
151
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
152
+ } ,
153
+ {
154
+ code : "[<App {...key} />];" ,
155
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
156
+ } ,
157
+ {
158
+ code : "[<App key={0}/>, <App />];" ,
159
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
160
+ } ,
161
+ {
162
+ code : "[1, 2 ,3].map(function(x) { return <App /> });" ,
163
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
164
+ } ,
165
+ {
166
+ code : "[1, 2 ,3].map(x => <App />);" ,
167
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
168
+ } ,
169
+ {
170
+ code : "[1, 2 ,3].map(x => x && <App x={x} />);" ,
171
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
172
+ } ,
173
+ {
174
+ code : '[1, 2 ,3].map(x => x ? <App x={x} key="1" /> : <OtherApp x={x} />);' ,
175
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
176
+ } ,
177
+ {
178
+ code : '[1, 2 ,3].map(x => x ? <App x={x} /> : <OtherApp x={x} key="2" />);' ,
179
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
180
+ } ,
181
+ {
182
+ code : "[1, 2 ,3].map(x => { return <App /> });" ,
183
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
184
+ } ,
185
+ {
186
+ code : "Array.from([1, 2 ,3], function(x) { return <App /> });" ,
187
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
188
+ } ,
189
+ {
190
+ code : "Array.from([1, 2 ,3], (x => { return <App /> }));" ,
191
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
192
+ } ,
193
+ {
194
+ code : "Array.from([1, 2 ,3], (x => <App />));" ,
195
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
196
+ } ,
197
+ {
198
+ code : "[1, 2, 3]?.map(x => <BabelEslintApp />)" ,
199
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
200
+ } ,
201
+ {
202
+ code : "[1, 2, 3]?.map(x => <TypescriptEslintApp />)" ,
203
+ errors : [ { messageId : "NO_MISSING_KEY" } ] ,
204
+ } ,
205
+ {
206
+ code : "[1, 2, 3].map(x => <>{x}</>);" ,
207
+ errors : [
208
+ {
209
+ messageId : "NO_MISSING_KEY_WITH_FRAGMENT" ,
210
+ data : {
211
+ reactPragma : "React" ,
212
+ fragmentPragma : "Fragment" ,
213
+ } ,
198
214
} ,
199
- } ,
200
- ] ,
201
- } , {
202
- code : "[<></>];" ,
203
- errors : [
204
- {
205
- messageId : "NO_MISSING_KEY_WITH_FRAGMENT" ,
206
- data : {
207
- reactPragma : "React" ,
208
- fragmentPragma : "Fragment" ,
215
+ ] ,
216
+ } ,
217
+ {
218
+ code : "[<></>];" ,
219
+ errors : [
220
+ {
221
+ messageId : "NO_MISSING_KEY_WITH_FRAGMENT" ,
222
+ data : {
223
+ reactPragma : "React" ,
224
+ fragmentPragma : "Fragment" ,
225
+ } ,
209
226
} ,
210
- } ,
211
- ] ,
212
- } , {
213
- code : dedent `
214
- const Test = () => {
215
- const list = [1, 2, 3, 4, 5];
227
+ ] ,
228
+ } ,
229
+ {
230
+ code : dedent `
231
+ const Test = () => {
232
+ const list = [1, 2, 3, 4, 5];
216
233
217
- return (
218
- <div>
219
- {list.map(item => {
220
- if (item < 2) {
221
- return <div>{item}</div>;
222
- }
234
+ return (
235
+ <div>
236
+ {list.map(item => {
237
+ if (item < 2) {
238
+ return <div>{item}</div>;
239
+ }
223
240
224
- return <div />;
225
- })}
226
- </div>
227
- );
228
- };
229
- ` ,
230
- errors : [
231
- { messageId : "NO_MISSING_KEY" } ,
232
- { messageId : "NO_MISSING_KEY" } ,
233
- ] ,
234
- } , {
235
- code : dedent `
236
- const TestO = () => {
237
- const list = [1, 2, 3, 4, 5];
241
+ return <div />;
242
+ })}
243
+ </div>
244
+ );
245
+ };
246
+ ` ,
247
+ errors : [
248
+ { messageId : "NO_MISSING_KEY" } ,
249
+ { messageId : "NO_MISSING_KEY" } ,
250
+ ] ,
251
+ } ,
252
+ {
253
+ code : dedent `
254
+ const TestO = () => {
255
+ const list = [1, 2, 3, 4, 5];
238
256
239
- return (
240
- <div>
241
- {list.map(item => {
242
- if (item < 2) {
243
- return <div>{item}</div>;
244
- } else if (item < 5) {
245
- return <div></div>
246
- } else {
247
- return <div></div>
248
- }
257
+ return (
258
+ <div>
259
+ {list.map(item => {
260
+ if (item < 2) {
261
+ return <div>{item}</div>;
262
+ } else if (item < 5) {
263
+ return <div></div>
264
+ } else {
265
+ return <div></div>
266
+ }
249
267
250
- return <div />;
251
- })}
252
- </div>
253
- );
254
- };
255
- ` ,
256
- errors : [
257
- { messageId : "NO_MISSING_KEY" } ,
258
- { messageId : "NO_MISSING_KEY" } ,
259
- { messageId : "NO_MISSING_KEY" } ,
260
- { messageId : "NO_MISSING_KEY" } ,
261
- ] ,
262
- } , {
263
- code : dedent `
264
- const TestCase = () => {
265
- const list = [1, 2, 3, 4, 5];
268
+ return <div />;
269
+ })}
270
+ </div>
271
+ );
272
+ };
273
+ ` ,
274
+ errors : [
275
+ { messageId : "NO_MISSING_KEY" } ,
276
+ { messageId : "NO_MISSING_KEY" } ,
277
+ { messageId : "NO_MISSING_KEY" } ,
278
+ { messageId : "NO_MISSING_KEY" } ,
279
+ ] ,
280
+ } ,
281
+ {
282
+ code : dedent `
283
+ const TestCase = () => {
284
+ const list = [1, 2, 3, 4, 5];
266
285
267
- return (
268
- <div>
269
- {list.map(item => {
270
- if (item < 2) return <div>{item}</div>;
271
- else if (item < 5) return <div />;
272
- else return <div />;
273
- })}
274
- </div>
275
- );
276
- };
277
- ` ,
278
- errors : [
279
- { messageId : "NO_MISSING_KEY" } ,
280
- { messageId : "NO_MISSING_KEY" } ,
281
- { messageId : "NO_MISSING_KEY" } ,
282
- ] ,
283
- } ] ,
286
+ return (
287
+ <div>
288
+ {list.map(item => {
289
+ if (item < 2) return <div>{item}</div>;
290
+ else if (item < 5) return <div />;
291
+ else return <div />;
292
+ })}
293
+ </div>
294
+ );
295
+ };
296
+ ` ,
297
+ errors : [
298
+ { messageId : "NO_MISSING_KEY" } ,
299
+ { messageId : "NO_MISSING_KEY" } ,
300
+ { messageId : "NO_MISSING_KEY" } ,
301
+ ] ,
302
+ } ,
303
+ {
304
+ code : dedent `
305
+ function Explain() {
306
+ return (
307
+ <div>
308
+ {arr.map((id) => {
309
+ return <>{id}</>;
310
+ })}
311
+ {arr.map((id) => {
312
+ return <React.Fragment>{id}</React.Fragment>;
313
+ })}
314
+ </div>
315
+ );
316
+ }
317
+
318
+ function Repro() {
319
+ return (
320
+ <div>
321
+ {arr.map((id) => {
322
+ return <>{id}</>;
323
+ })}
324
+ </div>
325
+ );
326
+ }
327
+ ` ,
328
+ errors : [
329
+ {
330
+ messageId : "NO_MISSING_KEY_WITH_FRAGMENT" ,
331
+ data : {
332
+ reactPragma : "React" ,
333
+ fragmentPragma : "Fragment" ,
334
+ } ,
335
+ } ,
336
+ {
337
+ messageId : "NO_MISSING_KEY" ,
338
+ } ,
339
+ {
340
+ messageId : "NO_MISSING_KEY_WITH_FRAGMENT" ,
341
+ data : {
342
+ reactPragma : "React" ,
343
+ fragmentPragma : "Fragment" ,
344
+ } ,
345
+ } ,
346
+ ] ,
347
+ } ,
348
+ ] ,
284
349
} ) ;
0 commit comments