fix(linter/no-unused-vars): false positive in some default export cases (#6395)

Fixes a false positive in `eslint/no-unused-vars` when a function expression is
default exported within an array.

```js
export default [ function foo() {} ]
```
This commit is contained in:
DonIsaac 2024-10-09 19:43:57 +00:00
parent e08f956c00
commit d3e59c6a6d
2 changed files with 19 additions and 1 deletions

View file

@ -182,7 +182,16 @@ impl<'s, 'a> Symbol<'s, 'a> {
AstKind::ModuleDeclaration(module) => {
return module.is_export();
}
AstKind::VariableDeclaration(_) => {
AstKind::ExportDefaultDeclaration(_) => {
return true;
}
AstKind::VariableDeclaration(_)
| AstKind::ExpressionArrayElement(_)
| AstKind::ArrayExpressionElement(_)
| AstKind::ArrayExpression(_)
| AstKind::ParenthesizedExpression(_)
| AstKind::TSAsExpression(_)
| AstKind::TSSatisfiesExpression(_) => {
continue;
}
_ => {

View file

@ -730,6 +730,15 @@ fn test_exports() {
"export interface A {}",
"export type A = string",
"export enum E { }",
// default exports
"export default class Foo {}",
"export default [ class Foo {} ];",
"export default function foo() {}",
"export default { foo() {} };",
"export default { foo: function foo() {} };",
"export default { get foo() {} };",
"export default [ function foo() {} ];",
"export default (function foo() { return 1 })();",
// "export enum E { A, B }",
"const a = 1; export { a }",
"const a = 1; export default a",