diff --git a/lib/rules/no-deprecated.js b/lib/rules/no-deprecated.js index 6072290f73..c5dee54f5a 100644 --- a/lib/rules/no-deprecated.js +++ b/lib/rules/no-deprecated.js @@ -101,6 +101,7 @@ module.exports = { return ( deprecated && deprecated[method] && + deprecated[method][0] && versionUtil.testReactVersion(context, deprecated[method][0]) ); } diff --git a/lib/util/version.js b/lib/util/version.js index cbdec7d919..252d4f592d 100644 --- a/lib/util/version.js +++ b/lib/util/version.js @@ -27,7 +27,7 @@ function getFlowVersionFromContext(context) { } function test(context, methodVer, confVer) { - methodVer = methodVer.split('.').map(part => Number(part)); + methodVer = String(methodVer || '').split('.').map(part => Number(part)); const higherMajor = methodVer[0] < confVer[0]; const higherMinor = methodVer[0] === confVer[0] && methodVer[1] < confVer[1]; const higherOrEqualPatch = methodVer[0] === confVer[0] && methodVer[1] === confVer[1] && methodVer[2] <= confVer[2]; diff --git a/tests/lib/rules/no-deprecated.js b/tests/lib/rules/no-deprecated.js index b1b5630c33..a1165563d4 100644 --- a/tests/lib/rules/no-deprecated.js +++ b/tests/lib/rules/no-deprecated.js @@ -75,6 +75,7 @@ ruleTester.run('no-deprecated', rule, { { code: ` class Foo { + constructor() {} componentWillMount() {} componentWillReceiveProps() {} componentWillUpdate() {} @@ -379,6 +380,35 @@ ruleTester.run('no-deprecated', rule, { ) } ] + }, + { + code: ` + class Foo extends React.Component { + constructor() {} + componentWillMount() {} + componentWillReceiveProps() {} + componentWillUpdate() {} + } + `, + errors: [ + { + message: errorMessage( + 'componentWillMount', '16.3.0', 'UNSAFE_componentWillMount', + 'https://reactjs.org/docs/react-component.html#unsafe_componentwillmount' + ) + }, + { + message: errorMessage( + 'componentWillReceiveProps', '16.3.0', 'UNSAFE_componentWillReceiveProps', + 'https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops' + ) + }, + { + message: errorMessage('componentWillUpdate', '16.3.0', 'UNSAFE_componentWillUpdate', + 'https://reactjs.org/docs/react-component.html#unsafe_componentwillupdate' + ) + } + ] } ] });