From d66f467d607a19179fff5dedb916766efecd6ec2 Mon Sep 17 00:00:00 2001 From: Jonathan Lee <1150974628@qq.com> Date: Mon, 30 Mar 2020 00:53:12 +0800 Subject: [PATCH] [Fix] `jsx-key`: add a failing test case for optional chaining Fixes #2594 Co-authored-by: Jordan Harband Co-authored-by: Jonathan Lee <1150974628@qq.com> --- lib/rules/jsx-key.js | 4 ++-- tests/lib/rules/jsx-key.js | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/rules/jsx-key.js b/lib/rules/jsx-key.js index 8daeebf10e..d5ebd0a4ac 100644 --- a/lib/rules/jsx-key.js +++ b/lib/rules/jsx-key.js @@ -90,8 +90,8 @@ module.exports = { }, // Array.prototype.map - CallExpression(node) { - if (node.callee && node.callee.type !== 'MemberExpression') { + 'CallExpression, OptionalCallExpression'(node) { + if (node.callee && node.callee.type !== 'MemberExpression' && node.callee.type !== 'OptionalMemberExpression') { return; } diff --git a/tests/lib/rules/jsx-key.js b/tests/lib/rules/jsx-key.js index df8024ce1c..49632f59e9 100644 --- a/tests/lib/rules/jsx-key.js +++ b/tests/lib/rules/jsx-key.js @@ -50,7 +50,7 @@ ruleTester.run('jsx-key', rule, { {code: 'foo(() => <>);', parser: parsers.BABEL_ESLINT}, {code: '<>;', parser: parsers.BABEL_ESLINT} ], - invalid: [{ + invalid: [].concat({ code: '[];', errors: [{message: 'Missing "key" prop for element in array'}] }, { @@ -69,6 +69,14 @@ ruleTester.run('jsx-key', rule, { code: '[1, 2 ,3].map(x => { return });', errors: [{message: 'Missing "key" prop for element in iterator'}] }, { + code: '[1, 2, 3]?.map(x => )', + parser: parsers.BABEL_ESLINT, + errors: [{message: 'Missing "key" prop for element in iterator'}] + }, parsers.TS({ + code: '[1, 2, 3]?.map(x => )', + parser: parsers['@TYPESCRIPT_ESLINT'], + errors: [{message: 'Missing "key" prop for element in iterator'}] + }), { code: '[1, 2, 3].map(x => <>{x});', parser: parsers.BABEL_ESLINT, options: [{checkFragmentShorthand: true}], @@ -80,5 +88,5 @@ ruleTester.run('jsx-key', rule, { options: [{checkFragmentShorthand: true}], settings, errors: [{message: 'Missing "key" prop for element in array. Shorthand fragment syntax does not support providing keys. Use Act.Frag instead'}] - }] + }) });