From c82746cc0f52ddab23cef45a217724a37bc2547b Mon Sep 17 00:00:00 2001 From: Yannick Croissant Date: Mon, 4 Jun 2018 23:20:33 +0200 Subject: [PATCH] Fix crash in no-unused-prop-types when encountering impossible intersection flow types (fixes #1806) --- lib/rules/no-unused-prop-types.js | 3 ++- tests/lib/rules/no-unused-prop-types.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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' } ],