Skip to content

Commit 8466625

Browse files
committed
[Fix] prop-types/component detection: avoid a crash when a local createElement identifier exists
Fixes #2733.
1 parent 530b0e8 commit 8466625

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

lib/util/Components.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,9 @@ function componentRule(rule, context) {
345345

346346
// check proper require.
347347
if (
348-
requireExpression.callee.name === 'require'
348+
requireExpression
349+
&& requireExpression.callee
350+
&& requireExpression.callee.name === 'require'
349351
&& requireExpression.arguments[0]
350352
&& requireExpression.arguments[0].value === pragma.toLocaleLowerCase()
351353
) {

tests/lib/rules/prop-types.js

+22
Original file line numberDiff line numberDiff line change
@@ -2574,6 +2574,28 @@ ruleTester.run('prop-types', rule, {
25742574
code: `
25752575
export default function() {}
25762576
`
2577+
},
2578+
{
2579+
code: `
2580+
import * as React from 'react';
2581+
2582+
interface Props {
2583+
text: string;
2584+
}
2585+
2586+
export const Test: React.FC<Props> = (props: Props) => {
2587+
const createElement = (text: string) => {
2588+
return (
2589+
<div>
2590+
{text}
2591+
</div>
2592+
);
2593+
};
2594+
2595+
return <>{createElement(props.text)}</>;
2596+
};
2597+
`,
2598+
parser: parsers.TYPESCRIPT_ESLINT
25772599
}
25782600
],
25792601

0 commit comments

Comments
 (0)