diff --git a/lib/rules/no-unused-prop-types.js b/lib/rules/no-unused-prop-types.js index cff7eecafc..b82c9049ec 100644 --- a/lib/rules/no-unused-prop-types.js +++ b/lib/rules/no-unused-prop-types.js @@ -792,7 +792,8 @@ module.exports = { return declarePropTypesForObjectTypeAnnotation(annotation, declaredPropTypes); } - if (annotation.type === 'UnionTypeAnnotation') { + // Type can't be resolved + if (!annotation.id) { return true; } diff --git a/tests/lib/rules/no-unused-prop-types.js b/tests/lib/rules/no-unused-prop-types.js index b0bc92237b..8f716a02ff 100644 --- a/tests/lib/rules/no-unused-prop-types.js +++ b/tests/lib/rules/no-unused-prop-types.js @@ -2899,6 +2899,20 @@ ruleTester.run('no-unused-prop-types', rule, { `].join('\n'), settings: {react: {version: '16.3.0'}}, parser: 'babel-eslint' + }, { + // Impossible intersection type + code: ` + import React from 'react'; + type Props = string & { + fullname: string + }; + class Test extends React.PureComponent { + render() { + return
Hello {this.props.fullname}
+ } + } + `, + parser: 'babel-eslint' } ],