From 47f5e7b3312501befb5554ff0b3ac2609a228b4b Mon Sep 17 00:00:00 2001 From: vedadeepta Date: Sat, 18 Sep 2021 18:30:32 +0530 Subject: [PATCH] [Fix] `prop-types` `propTypes`: bail out unkown generic types inside func params --- lib/util/propTypes.js | 10 ---------- tests/lib/rules/prop-types.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/lib/util/propTypes.js b/lib/util/propTypes.js index 24b83a579e..b9e397deb7 100644 --- a/lib/util/propTypes.js +++ b/lib/util/propTypes.js @@ -970,16 +970,6 @@ module.exports = function propTypesInstructions(context, components, utils) { } }); } else { - // check if its a valid generic type when `X<{...}>` - if ( - param.typeAnnotation - && param.typeAnnotation.typeAnnotation - && param.typeAnnotation.typeAnnotation.type === 'TSTypeReference' - && param.typeAnnotation.typeAnnotation.typeParameters != null - && !isValidReactGenericTypeAnnotation(param.typeAnnotation.typeAnnotation) - ) { - return; - } markPropTypesAsDeclared(node, resolveTypeAnnotation(param)); } } else { diff --git a/tests/lib/rules/prop-types.js b/tests/lib/rules/prop-types.js index d02c5f94a1..55edbbbff7 100644 --- a/tests/lib/rules/prop-types.js +++ b/tests/lib/rules/prop-types.js @@ -3303,6 +3303,19 @@ ruleTester.run('prop-types', rule, { `, parser: parsers['@TYPESCRIPT_ESLINT'] + }, + { + code: ` + type Props = { + value: ValueType; + onClick: (value: ValueType) => void; + }; + + const Button = ({ onClick, value }: Props) => { + return ; + }; + `, + parser: parsers['@TYPESCRIPT_ESLINT'] } ]), { @@ -6865,6 +6878,23 @@ ruleTester.run('prop-types', rule, { } ], parser: parsers['@TYPESCRIPT_ESLINT'] + }, + { + code: ` + type PersonProps = { + x: T; + } + const Person = (props: PersonProps): React.ReactElement => ( +
{props.username}
+ ); + `, + errors: [ + { + messageId: 'missingPropType', + data: {name: 'username'} + } + ], + parser: parsers['@TYPESCRIPT_ESLINT'] } ]) )