diff --git a/CHANGELOG.md b/CHANGELOG.md index f46786c92..3c5da1d45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ This change log adheres to standards from [Keep a CHANGELOG](http://keepachangel - [`order`]: ignore non-module-level requires ([#1940], thanks [@golopot]) - [`no-webpack-loader-syntax`]/TypeScript: avoid crash on missing name ([#1947], thanks @leonardodino) - [`no-extraneous-dependencies`]: Add package.json cache ([#1948], thanks @fa93hws) +- [`prefer-default-export`]: handle empty array destructuring ([#1965], thanks @ljharb) ## [2.22.1] - 2020-09-27 ### Fixed @@ -738,6 +739,7 @@ for info on changes for earlier releases. [`memo-parser`]: ./memo-parser/README.md +[#1965]: https://github.com/benmosher/eslint-plugin-import/issues/1965 [#1948]: https://github.com/benmosher/eslint-plugin-import/pull/1948 [#1947]: https://github.com/benmosher/eslint-plugin-import/pull/1947 [#1940]: https://github.com/benmosher/eslint-plugin-import/pull/1940 diff --git a/src/rules/prefer-default-export.js b/src/rules/prefer-default-export.js index f1db4eaaa..002cf2870 100644 --- a/src/rules/prefer-default-export.js +++ b/src/rules/prefer-default-export.js @@ -19,13 +19,13 @@ module.exports = { let namedExportNode = null function captureDeclaration(identifierOrPattern) { - if (identifierOrPattern.type === 'ObjectPattern') { + if (identifierOrPattern && identifierOrPattern.type === 'ObjectPattern') { // recursively capture identifierOrPattern.properties .forEach(function(property) { captureDeclaration(property.value) }) - } else if (identifierOrPattern.type === 'ArrayPattern') { + } else if (identifierOrPattern && identifierOrPattern.type === 'ArrayPattern') { identifierOrPattern.elements .forEach(captureDeclaration) } else { diff --git a/tests/src/rules/prefer-default-export.js b/tests/src/rules/prefer-default-export.js index 9e38cea92..dae930a73 100644 --- a/tests/src/rules/prefer-default-export.js +++ b/tests/src/rules/prefer-default-export.js @@ -88,6 +88,12 @@ ruleTester.run('prefer-default-export', rule, { parser: require.resolve('babel-eslint'), }), // ...SYNTAX_CASES, + { + code: ` + export const [CounterProvider,, withCounter] = func();; + `, + parser: require.resolve('babel-eslint'), + }, ], invalid: [ test({