diff --git a/lib/rules/jsx-sort-prop-types.js b/lib/rules/jsx-sort-prop-types.js index bce91a4dbd..be1eb0a614 100644 --- a/lib/rules/jsx-sort-prop-types.js +++ b/lib/rules/jsx-sort-prop-types.js @@ -35,6 +35,10 @@ module.exports = function(context) { ); } + function getKey(node) { + return node.key.type === 'Identifier' ? node.key.name : node.key.value; + } + /** * Checks if propTypes declarations are sorted * @param {Array} declarations The array of AST nodes being checked. @@ -42,8 +46,8 @@ module.exports = function(context) { */ function checkSorted(declarations) { declarations.reduce(function(prev, curr) { - var prevPropName = prev.key.name; - var currenPropName = curr.key.name; + var prevPropName = getKey(prev); + var currenPropName = getKey(curr); if (ignoreCase) { prevPropName = prevPropName.toLowerCase(); diff --git a/tests/lib/rules/jsx-sort-prop-types.js b/tests/lib/rules/jsx-sort-prop-types.js index 19ca8ed3ba..1f3f2f4bb4 100644 --- a/tests/lib/rules/jsx-sort-prop-types.js +++ b/tests/lib/rules/jsx-sort-prop-types.js @@ -161,6 +161,21 @@ eslintTester.addRuleTest('lib/rules/jsx-sort-prop-types', { classes: true, jsx: true } + }, { + code: [ + 'class Hello extends React.Component {', + ' render() {', + ' return
Hello
;', + ' }', + '}', + 'Hello.propTypes = {', + ' "aria-controls": React.PropTypes.string', + '};' + ].join('\n'), + parser: 'babel-eslint', + args: [1, { + ignoreCase: true + }] } ],