From 58ed9e9716f74dbf758766a5ac22425be411181f Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Wed, 9 Jan 2019 10:48:22 -0800 Subject: [PATCH] [Fix] `prop-types`: avoid further crashes from nonexistent nodes in unusedPropTypes Fixes #2127 --- lib/rules/prop-types.js | 9 +++++---- tests/lib/rules/prop-types.js | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/rules/prop-types.js b/lib/rules/prop-types.js index 16eaf6ee24..089536d12b 100644 --- a/lib/rules/prop-types.js +++ b/lib/rules/prop-types.js @@ -163,17 +163,18 @@ module.exports = { * @param {Object} component The component to process */ function reportUndeclaredPropTypes(component) { - let allNames; for (let i = 0, j = component.usedPropTypes.length; i < j; i++) { - allNames = component.usedPropTypes[i].allNames; + const allNames = component.usedPropTypes[i].allNames; + const node = component.usedPropTypes[i].node; if ( isIgnored(allNames[0]) || - isDeclaredInComponent(component.node, allNames) + isDeclaredInComponent(component.node, allNames) || + !node ) { continue; } context.report( - component.usedPropTypes[i].node, + node, MISSING_MESSAGE, { name: allNames.join('.').replace(/\.__COMPUTED_PROP__/g, '[]') } diff --git a/tests/lib/rules/prop-types.js b/tests/lib/rules/prop-types.js index ab1785930f..dcc079ce1b 100644 --- a/tests/lib/rules/prop-types.js +++ b/tests/lib/rules/prop-types.js @@ -4379,6 +4379,21 @@ ruleTester.run('prop-types', rule, { errors: [{ message: '\'usedProp\' is missing in props validation' }] + }, + { + code: ` + export default class Controller extends React.Component { + handleAdd = id => { + this.setState((state, { name }) => { + const item = this.buildItem(id); + }); + }; + } + `, + parser: 'babel-eslint', + errors: [{ + message: '\'name\' is missing in props validation' + }] } ] });