Skip to content

Commit f89acbd

Browse files
authored
Fix component detection ignore async functions
2 parents fe32c7d + 8a9f3c1 commit f89acbd

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

lib/util/Components.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,10 @@ function componentRule(rule, context) {
496496
},
497497

498498
FunctionExpression: function(node) {
499+
if (node.async) {
500+
components.add(node, 0);
501+
return;
502+
}
499503
var component = utils.getParentComponent();
500504
if (
501505
!component ||
@@ -509,6 +513,10 @@ function componentRule(rule, context) {
509513
},
510514

511515
FunctionDeclaration: function(node) {
516+
if (node.async) {
517+
components.add(node, 0);
518+
return;
519+
}
512520
node = utils.getParentComponent();
513521
if (!node) {
514522
return;
@@ -517,6 +525,10 @@ function componentRule(rule, context) {
517525
},
518526

519527
ArrowFunctionExpression: function(node) {
528+
if (node.async) {
529+
components.add(node, 0);
530+
return;
531+
}
520532
var component = utils.getParentComponent();
521533
if (
522534
!component ||

tests/lib/rules/prop-types.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1361,6 +1361,30 @@ ruleTester.run('prop-types', rule, {
13611361
].join('\n'),
13621362
options: [{skipUndeclared: false}],
13631363
parserOptions: parserOptions
1364+
}, {
1365+
// Async functions can't be components.
1366+
code: [
1367+
'var Hello = async function(props) {',
1368+
' return <div>Hello {props.name}</div>;',
1369+
'}'
1370+
].join('\n'),
1371+
parser: 'babel-eslint'
1372+
}, {
1373+
// Async functions can't be components.
1374+
code: [
1375+
'async function Hello(props) {',
1376+
' return <div>Hello {props.name}</div>;',
1377+
'}'
1378+
].join('\n'),
1379+
parser: 'babel-eslint'
1380+
}, {
1381+
// Async functions can't be components.
1382+
code: [
1383+
'var Hello = async (props) => {',
1384+
' return <div>Hello {props.name}</div>;',
1385+
'}'
1386+
].join('\n'),
1387+
parser: 'babel-eslint'
13641388
}
13651389
],
13661390

0 commit comments

Comments
 (0)