From 08cdd399315acb42691962f1d39aa7ac0e765a39 Mon Sep 17 00:00:00 2001 From: Alex Kovar Date: Tue, 16 Jun 2020 00:02:15 -0500 Subject: [PATCH] [Fix] `forbid-prop-types`: warn on destructured values as well Fixes #2662. Co-authored-by: Alex Kovar Co-authored-by: Jordan Harband --- lib/rules/forbid-prop-types.js | 5 +--- tests/lib/rules/forbid-prop-types.js | 37 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/lib/rules/forbid-prop-types.js b/lib/rules/forbid-prop-types.js index a5bc7a4b02..8898b8614c 100644 --- a/lib/rules/forbid-prop-types.js +++ b/lib/rules/forbid-prop-types.js @@ -93,10 +93,7 @@ module.exports = { ) { value = value.object; } - if ( - value.type === 'CallExpression' - && value.callee.type === 'MemberExpression' - ) { + if (value.type === 'CallExpression') { value = value.callee; } if (value.property) { diff --git a/tests/lib/rules/forbid-prop-types.js b/tests/lib/rules/forbid-prop-types.js index aa48f1401a..dce8669be9 100644 --- a/tests/lib/rules/forbid-prop-types.js +++ b/tests/lib/rules/forbid-prop-types.js @@ -1460,5 +1460,42 @@ ruleTester.run('forbid-prop-types', rule, { checkChildContextTypes: true }], errors: 1 + }, { + code: [ + 'import { object, string } from "prop-types";', + 'function C({ a, b }) { return [a, b]; }', + 'C.propTypes = {', + ' a: object,', + ' b: string', + '};' + ].join('\n'), + options: [{ + forbid: ['object'] + }], + errors: 1 + }, { + code: [ + 'import { objectOf, any } from "prop-types";', + 'function C({ a }) { return a; }', + 'C.propTypes = {', + ' a: objectOf(any)', + '};' + ].join('\n'), + options: [{ + forbid: ['any'] + }], + errors: 1 + }, { + code: [ + 'import { objectOf, any } from "prop-types";', + 'function C({ a }) { return a; }', + 'C.propTypes = {', + ' a: objectOf(any)', + '};' + ].join('\n'), + options: [{ + forbid: ['objectOf'] + }], + errors: 1 }] });