Skip to content

Commit

Permalink
Fix jsx-uses-vars that incorrectly marked some variables as used (fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
lencioni authored and yannickcr committed Jul 25, 2016
1 parent 046a723 commit dcc0294
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
17 changes: 14 additions & 3 deletions lib/rules/jsx-uses-vars.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,22 @@ module.exports = function(context) {
variableUtil.markVariableAsUsed(context, node.expression.name);
},

JSXIdentifier: function(node) {
if (node.parent.type === 'JSXAttribute') {
JSXOpeningElement: function(node) {
var name;
if (node.name.namespace && node.name.namespace.name) {
// <Foo:Bar>
name = node.name.namespace.name;
} else if (node.name.name) {
// <Foo>
name = node.name.name;
} else if (node.name.object && node.name.object.name) {
// <Foo.Bar> - node.name.object.name
name = node.name.object.name;
} else {
return;
}
variableUtil.markVariableAsUsed(context, node.name);

variableUtil.markVariableAsUsed(context, name);
}

};
Expand Down
16 changes: 16 additions & 0 deletions tests/lib/rules/jsx-uses-vars.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,22 @@ ruleTester.run('no-unused-vars', rule, {
React.render(<App unused=""/>);',
errors: [{message: '\'unused\' is defined but never used'}],
parserOptions: parserOptions
}, {
code: '\
/*eslint jsx-uses-vars:1*/\
var App;\
var Hello;\
React.render(<App:Hello/>);',
errors: [{message: '\'Hello\' is defined but never used'}],
parserOptions: parserOptions
}, {
code: '\
/*eslint jsx-uses-vars:1*/\
var Button;\
var Input;\
React.render(<Button.Input unused=""/>);',
errors: [{message: '\'Input\' is defined but never used'}],
parserOptions: parserOptions
}, {
code: '\
/*eslint jsx-uses-vars:1*/\
Expand Down

0 comments on commit dcc0294

Please sign in to comment.