Skip to content

Commit 230ffe1

Browse files
committed
[Fix] prefer-read-only-props: avoid crash from #3064
See #3068
1 parent 9325fa5 commit 230ffe1

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

lib/rules/prefer-read-only-props.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ module.exports = {
5151
Object.keys(component.declaredPropTypes).forEach((propName) => {
5252
const prop = component.declaredPropTypes[propName];
5353

54-
if (!isFlowPropertyType(prop.node)) {
54+
if (!prop.node || !isFlowPropertyType(prop.node)) {
5555
return;
5656
}
5757

tests/lib/rules/prefer-read-only-props.js

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const parserOptions = {
2929
const ruleTester = new RuleTester({parserOptions});
3030
ruleTester.run('prefer-read-only-props', rule, {
3131

32-
valid: [
32+
valid: [].concat(
3333
{
3434
// Class component with type parameter
3535
code: `
@@ -162,8 +162,39 @@ ruleTester.run('prefer-read-only-props', rule, {
162162
}
163163
`,
164164
parser: parsers.BABEL_ESLINT
165-
}
166-
],
165+
},
166+
parsers.TS([{
167+
code: `
168+
import React from "react";
169+
170+
interface Props {
171+
name: string;
172+
}
173+
174+
const MyComponent: React.FC<Props> = ({ name }) => {
175+
return <div>{name}</div>;
176+
};
177+
178+
export default MyComponent;
179+
`,
180+
parser: parsers.TYPESCRIPT_ESLINT
181+
}, {
182+
code: `
183+
import React from "react";
184+
185+
interface Props {
186+
name: string;
187+
}
188+
189+
const MyComponent: React.FC<Props> = ({ name }) => {
190+
return <div>{name}</div>;
191+
};
192+
193+
export default MyComponent;
194+
`,
195+
parser: parsers['@TYPESCRIPT_ESLINT']
196+
}])
197+
),
167198

168199
invalid: [
169200
{

0 commit comments

Comments
 (0)