Skip to content

Commit ebab180

Browse files
committed
Fix jsx-no-undef crash on objects (fixes #469)
1 parent 488aaad commit ebab180

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

lib/rules/jsx-no-undef.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ module.exports = function(context) {
6666
}
6767
break;
6868
case 'JSXMemberExpression':
69-
node = node.name.object;
69+
node = node.name;
70+
do {
71+
node = node.object;
72+
} while (node && node.type !== 'JSXIdentifier');
7073
break;
7174
case 'JSXNamespacedName':
7275
node = node.name.namespace;

tests/lib/rules/jsx-no-undef.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ ruleTester.run('jsx-no-undef', rule, {
3939
}, {
4040
code: '/*eslint no-undef:1*/ var React; React.render(<x-gif />);',
4141
parserOptions: parserOptions
42+
}, {
43+
code: '/*eslint no-undef:1*/ var React, app; React.render(<app.Foo />);',
44+
parserOptions: parserOptions
45+
}, {
46+
code: '/*eslint no-undef:1*/ var React, app; React.render(<app.foo.Bar />);',
47+
parserOptions: parserOptions
4248
}],
4349
invalid: [{
4450
code: '/*eslint no-undef:1*/ var React; React.render(<App />);',
@@ -64,5 +70,11 @@ ruleTester.run('jsx-no-undef', rule, {
6470
message: '\'appp\' is not defined.'
6571
}],
6672
parserOptions: parserOptions
73+
}, {
74+
code: '/*eslint no-undef:1*/ var React; React.render(<appp.foo.Bar />);',
75+
errors: [{
76+
message: '\'appp\' is not defined.'
77+
}],
78+
parserOptions: parserOptions
6779
}]
6880
});

0 commit comments

Comments
 (0)