Skip to content

Commit 6643f87

Browse files
committed
Fix destructured props detection in prop-types (fixes #443)
1 parent de538cb commit 6643f87

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

lib/rules/prop-types.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -713,12 +713,8 @@ module.exports = Components.detect(function(context, components, utils) {
713713
* FunctionDeclaration, or FunctionExpression
714714
*/
715715
function markDestructuredFunctionArgumentsAsUsed(node) {
716-
var destructuring = node.params &&
717-
node.params.length === 1 &&
718-
node.params[0] &&
719-
node.params[0].type === 'ObjectPattern';
720-
721-
if (destructuring) {
716+
var destructuring = node.params && node.params[0] && node.params[0].type === 'ObjectPattern';
717+
if (destructuring && components.get(node)) {
722718
markPropTypesAsUsed(node);
723719
}
724720
}

tests/lib/rules/prop-types.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,6 +1098,16 @@ ruleTester.run('prop-types', rule, {
10981098
'};'
10991099
].join('\n'),
11001100
parserOptions: parserOptions
1101+
}, {
1102+
// Ignore destructured function arguments
1103+
code: [
1104+
'class Hello extends React.Component {',
1105+
' render () {',
1106+
' return ["string"].map(({length}) => <div>{length}</div>);',
1107+
' }',
1108+
'}'
1109+
].join('\n'),
1110+
parserOptions: parserOptions
11011111
}
11021112
],
11031113

@@ -1916,6 +1926,17 @@ ruleTester.run('prop-types', rule, {
19161926
errors: [{
19171927
message: '\'name\' is missing in props validation'
19181928
}]
1929+
}, {
1930+
code: [
1931+
'function Greetings({names}) {',
1932+
' names = names.map(({firstname, lastname}) => <div>{firstname} {lastname}</div>);',
1933+
' return <Hello>{names}</Hello>;',
1934+
'}'
1935+
].join('\n'),
1936+
parserOptions: parserOptions,
1937+
errors: [{
1938+
message: '\'names\' is missing in props validation'
1939+
}]
19191940
}
19201941
]
19211942
});

0 commit comments

Comments
 (0)