diff --git a/src/rules/order.js b/src/rules/order.js index d6f25ddd33..c59cbbae85 100644 --- a/src/rules/order.js +++ b/src/rules/order.js @@ -1055,7 +1055,9 @@ module.exports = { if (node.right.type === 'ObjectExpression') { for (let i = 0; i < node.right.properties.length; i++) { if ( - node.right.properties[i].key.type !== 'Identifier' + !node.right.properties[i].key + || node.right.properties[i].key.type !== 'Identifier' + || !node.right.properties[i].value || node.right.properties[i].value.type !== 'Identifier' ) { return; diff --git a/tests/files/order/spread-export.js b/tests/files/order/spread-export.js new file mode 100644 index 0000000000..ebac580cbf --- /dev/null +++ b/tests/files/order/spread-export.js @@ -0,0 +1,9 @@ +const test = { + a: 1, + browser: 2, +}; + +module.exports = { + ...test, + platform: 'node', +}; diff --git a/tests/src/rules/order.js b/tests/src/rules/order.js index ea62cec71d..f8d5a6fa64 100644 --- a/tests/src/rules/order.js +++ b/tests/src/rules/order.js @@ -23,6 +23,11 @@ const rule = require('rules/order'); ruleTester.run('order', rule, { valid: [ + test({ + code: ` + import { platform, a, browser } from './order/spread-export'; + `, + }), // Default order using require test({ code: ` @@ -3648,6 +3653,24 @@ flowRuleTester.run('order', rule, { import typeof {foo} from 'common'; import {bar} from 'common'; `, + }), + test({ + options: [ + { + named: true, + }, + ], + code: ` + const test = { + a: 1, + browser: 2, + }; + + module.exports = { + ...test, + platform: 'node', + }; + `, })], invalid: [ test({