From 230ffe1a18057e682c76e57241a85683b7d0e637 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sun, 5 Sep 2021 09:15:00 -0700 Subject: [PATCH] [Fix] `prefer-read-only-props`: avoid crash from #3064 See #3068 --- lib/rules/prefer-read-only-props.js | 2 +- tests/lib/rules/prefer-read-only-props.js | 37 +++++++++++++++++++++-- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lib/rules/prefer-read-only-props.js b/lib/rules/prefer-read-only-props.js index 028cf304cb..d97df5af67 100644 --- a/lib/rules/prefer-read-only-props.js +++ b/lib/rules/prefer-read-only-props.js @@ -51,7 +51,7 @@ module.exports = { Object.keys(component.declaredPropTypes).forEach((propName) => { const prop = component.declaredPropTypes[propName]; - if (!isFlowPropertyType(prop.node)) { + if (!prop.node || !isFlowPropertyType(prop.node)) { return; } diff --git a/tests/lib/rules/prefer-read-only-props.js b/tests/lib/rules/prefer-read-only-props.js index b6e66dfeed..4f27fce90c 100644 --- a/tests/lib/rules/prefer-read-only-props.js +++ b/tests/lib/rules/prefer-read-only-props.js @@ -29,7 +29,7 @@ const parserOptions = { const ruleTester = new RuleTester({parserOptions}); ruleTester.run('prefer-read-only-props', rule, { - valid: [ + valid: [].concat( { // Class component with type parameter code: ` @@ -162,8 +162,39 @@ ruleTester.run('prefer-read-only-props', rule, { } `, parser: parsers.BABEL_ESLINT - } - ], + }, + parsers.TS([{ + code: ` + import React from "react"; + + interface Props { + name: string; + } + + const MyComponent: React.FC = ({ name }) => { + return
{name}
; + }; + + export default MyComponent; + `, + parser: parsers.TYPESCRIPT_ESLINT + }, { + code: ` + import React from "react"; + + interface Props { + name: string; + } + + const MyComponent: React.FC = ({ name }) => { + return
{name}
; + }; + + export default MyComponent; + `, + parser: parsers['@TYPESCRIPT_ESLINT'] + }]) + ), invalid: [ {