Skip to content

Commit dcc0294

Browse files
lencioniyannickcr
authored andcommitted
Fix jsx-uses-vars that incorrectly marked some variables as used (fixes #694)
1 parent 046a723 commit dcc0294

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

lib/rules/jsx-uses-vars.js

+14-3
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,22 @@ module.exports = function(context) {
2020
variableUtil.markVariableAsUsed(context, node.expression.name);
2121
},
2222

23-
JSXIdentifier: function(node) {
24-
if (node.parent.type === 'JSXAttribute') {
23+
JSXOpeningElement: function(node) {
24+
var name;
25+
if (node.name.namespace && node.name.namespace.name) {
26+
// <Foo:Bar>
27+
name = node.name.namespace.name;
28+
} else if (node.name.name) {
29+
// <Foo>
30+
name = node.name.name;
31+
} else if (node.name.object && node.name.object.name) {
32+
// <Foo.Bar> - node.name.object.name
33+
name = node.name.object.name;
34+
} else {
2535
return;
2636
}
27-
variableUtil.markVariableAsUsed(context, node.name);
37+
38+
variableUtil.markVariableAsUsed(context, name);
2839
}
2940

3041
};

tests/lib/rules/jsx-uses-vars.js

+16
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,22 @@ ruleTester.run('no-unused-vars', rule, {
112112
React.render(<App unused=""/>);',
113113
errors: [{message: '\'unused\' is defined but never used'}],
114114
parserOptions: parserOptions
115+
}, {
116+
code: '\
117+
/*eslint jsx-uses-vars:1*/\
118+
var App;\
119+
var Hello;\
120+
React.render(<App:Hello/>);',
121+
errors: [{message: '\'Hello\' is defined but never used'}],
122+
parserOptions: parserOptions
123+
}, {
124+
code: '\
125+
/*eslint jsx-uses-vars:1*/\
126+
var Button;\
127+
var Input;\
128+
React.render(<Button.Input unused=""/>);',
129+
errors: [{message: '\'Input\' is defined but never used'}],
130+
parserOptions: parserOptions
115131
}, {
116132
code: '\
117133
/*eslint jsx-uses-vars:1*/\

0 commit comments

Comments
 (0)