From fab910c5f9833b00d9a22e1db13c2e79fe08ef22 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Tue, 9 Nov 2021 09:58:57 +0800 Subject: [PATCH] `prefer-export-from`: Fix bug on export namespace as default --- rules/prefer-export-from.js | 2 +- test/prefer-export-from.mjs | 9 ----- test/snapshots/prefer-export-from.mjs.md | 41 +++++++++++++++++++-- test/snapshots/prefer-export-from.mjs.snap | Bin 2558 -> 2625 bytes 4 files changed, 39 insertions(+), 13 deletions(-) diff --git a/rules/prefer-export-from.js b/rules/prefer-export-from.js index cbe47ae16d..028ff61281 100644 --- a/rules/prefer-export-from.js +++ b/rules/prefer-export-from.js @@ -230,7 +230,7 @@ function * getProblems({ ``` */ if (imported.name === '*' && exported.name === 'default') { - return; + continue; } yield { diff --git a/test/prefer-export-from.mjs b/test/prefer-export-from.mjs index 79adad3bb9..f9a552f3f1 100644 --- a/test/prefer-export-from.mjs +++ b/test/prefer-export-from.mjs @@ -264,20 +264,11 @@ test.snapshot({ export {named} from './foo.js?query'; export default defaultExport; `, - ], -}); - -// Strange case -// TODO: confirm how should this work -test.snapshot({ - valid: [ outdent` import * as namespace from 'foo'; export default namespace; export {namespace}; `, - ], - invalid: [ outdent` import * as namespace from 'foo'; export {namespace}; diff --git a/test/snapshots/prefer-export-from.mjs.md b/test/snapshots/prefer-export-from.mjs.md index 19a478d4f4..af4c102aae 100644 --- a/test/snapshots/prefer-export-from.mjs.md +++ b/test/snapshots/prefer-export-from.mjs.md @@ -440,11 +440,12 @@ Generated by [AVA](https://avajs.dev). 2 | namespace.bar = 1;␊ 3 |␊ 4 | export {namespace as default};␊ - 5 | export const variable = namespace;␊ + 5 |␊ 6 | export * as named from 'foo';␊ + 7 | export * as variable from 'foo';␊ ` -> Error 1/1 +> Error 1/2 `␊ 1 | import * as namespace from 'foo';␊ @@ -455,6 +456,17 @@ Generated by [AVA](https://avajs.dev). 5 | export const variable = namespace;␊ ` +> Error 2/2 + + `␊ + 1 | import * as namespace from 'foo';␊ + 2 | namespace.bar = 1;␊ + 3 | export {namespace as named};␊ + 4 | export {namespace as default};␊ + > 5 | export const variable = namespace;␊ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Use \`export…from\` to re-export \`variable\`.␊ + ` + ## Invalid #20 1 | import {named1, named2} from 'foo'; 2 | export {named1}; @@ -1024,7 +1036,30 @@ Generated by [AVA](https://avajs.dev). | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Use \`export…from\` to re-export \`default\`.␊ ` -## Invalid #1 +## Invalid #43 + 1 | import * as namespace from 'foo'; + 2 | export default namespace; + 3 | export {namespace}; + +> Output + + `␊ + 1 | import * as namespace from 'foo';␊ + 2 | export default namespace;␊ + 3 |␊ + 4 | export * as namespace from 'foo';␊ + ` + +> Error 1/1 + + `␊ + 1 | import * as namespace from 'foo';␊ + 2 | export default namespace;␊ + > 3 | export {namespace};␊ + | ^^^^^^^^^ Use \`export…from\` to re-export \`namespace\`.␊ + ` + +## Invalid #44 1 | import * as namespace from 'foo'; 2 | export {namespace}; 3 | export default namespace; diff --git a/test/snapshots/prefer-export-from.mjs.snap b/test/snapshots/prefer-export-from.mjs.snap index 2b105207bbee6a01be8569ff67b7611402e64996..61201efcd9ac4f14814cff9635dd5439226cfdda 100644 GIT binary patch literal 2625 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 literal 2558 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 U8gso6vQRPqU!xi2@Mt^$0IZPi2><{9