Skip to content

Commit 146d8d1

Browse files
committed
[Fix] jsx-max-depth: avoid a crash
Fixes #2102.
1 parent dfeeb81 commit 146d8d1

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

lib/rules/jsx-max-depth.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ module.exports = {
8989

9090
return jsxUtil.isJSX(writeExpr)
9191
&& writeExpr
92-
|| writeExpr.type === 'Identifier'
92+
|| (writeExpr && writeExpr.type === 'Identifier')
9393
&& findJSXElementOrFragment(variables, writeExpr.name);
9494
}
9595
}
@@ -103,7 +103,7 @@ module.exports = {
103103

104104
function checkDescendant(baseDepth, children) {
105105
baseDepth++;
106-
children.forEach(node => {
106+
(children || []).forEach(node => {
107107
if (!hasJSX(node)) {
108108
return;
109109
}

lib/util/jsx.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function isDOMComponent(node) {
3131
* @returns {boolean} Whether or not the node if a JSX element or fragment.
3232
*/
3333
function isJSX(node) {
34-
return ['JSXElement', 'JSXFragment'].indexOf(node.type) >= 0;
34+
return node && ['JSXElement', 'JSXFragment'].indexOf(node.type) >= 0;
3535
}
3636

3737
module.exports = {

tests/lib/rules/jsx-max-depth.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@ ruleTester.run('jsx-max-depth', rule, {
9494
</tbody>
9595
`,
9696
options: [{max: 2}]
97+
}, {
98+
code: [
99+
'const Example = props => {',
100+
' for (let i = 0; i < length; i++) {',
101+
' return <Text key={i} />;',
102+
' }',
103+
'};'
104+
].join('\n'),
105+
options: [{max: 1}]
97106
}],
98107

99108
invalid: [{

0 commit comments

Comments
 (0)