// as
//----------------------------------------------------------------------
+ // import { a as b }
+ { code: "import { a } from \"foo\"", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "import { a as b } from \"foo\"", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "import { \"a\" as b } from \"foo\"", parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "import{ a }from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "import{ a as b }from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "import{ \"a\"as b }from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "import{ \"a\" as b }from\"foo\"", options: [override("as", BOTH)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "import { a as b } from \"foo\"", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "import { \"a\"as b } from \"foo\"", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+
+ // export { a as b }
+ { code: "let a; export { a };", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "export { \"a\" } from \"foo\";", parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "let a; export { a as b };", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "let a; export { a as \"b\" };", parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export { \"a\" as b } from \"foo\";", parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export { \"a\" as \"b\" } from \"foo\";", parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "let a; export{ a };", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "export{ \"a\" }from\"foo\";", options: [NEITHER], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "let a; export{ a as b };", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "let a; export{ a as\"b\" };", options: [NEITHER], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export{ \"a\"as b }from\"foo\";", options: [NEITHER], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export{ \"a\"as\"b\" }from\"foo\";", options: [NEITHER], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "let a; export{ a as \"b\" };", options: [override("as", BOTH)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export{ \"a\" as b }from\"foo\";", options: [override("as", BOTH)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export{ \"a\" as \"b\" }from\"foo\";", options: [override("as", BOTH)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "let a; export { a as b };", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "let a; export { a as\"b\" };", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export { \"a\"as b } from \"foo\";", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+ { code: "export { \"a\"as\"b\" } from \"foo\";", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
+
+ // import * as a
{ code: "import * as a from \"foo\"", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "import*as a from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "import* as a from\"foo\"", options: [override("as", BOTH)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "import *as a from \"foo\"", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+
+ // export * as a
{ code: "export * as a from \"foo\"", parserOptions: { ecmaVersion: 2020, sourceType: "module" } },
+ { code: "export * as \"a\" from \"foo\"", parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
{ code: "export*as a from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 2020, sourceType: "module" } },
+ { code: "export*as\"a\"from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
{ code: "export* as a from\"foo\"", options: [override("as", BOTH)], parserOptions: { ecmaVersion: 2020, sourceType: "module" } },
+ { code: "export* as \"a\"from\"foo\"", options: [override("as", BOTH)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
{ code: "export *as a from \"foo\"", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 2020, sourceType: "module" } },
+ { code: "export *as\"a\" from \"foo\"", options: [override("as", NEITHER)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
//----------------------------------------------------------------------
// async
{ code: "import {foo} from \"foo\"", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export {foo} from \"foo\"", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export * from \"foo\"", parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "export * as \"x\" from \"foo\"", parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
{ code: "import{foo}from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export{foo}from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export*from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "export*as x from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 2020, sourceType: "module" } },
+ { code: "export*as\"x\"from\"foo\"", options: [NEITHER], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
{ code: "import{foo} from \"foo\"", options: [override("from", BOTH)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export{foo} from \"foo\"", options: [override("from", BOTH)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export* from \"foo\"", options: [override("from", BOTH)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "export*as\"x\" from \"foo\"", options: [override("from", BOTH)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
{ code: "import {foo}from\"foo\"", options: [override("from", NEITHER)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export {foo}from\"foo\"", options: [override("from", NEITHER)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
{ code: "export *from\"foo\"", options: [override("from", NEITHER)], parserOptions: { ecmaVersion: 6, sourceType: "module" } },
+ { code: "export * as x from\"foo\"", options: [override("from", NEITHER)], parserOptions: { ecmaVersion: 2020, sourceType: "module" } },
+ { code: "export * as \"x\"from\"foo\"", options: [override("from", NEITHER)], parserOptions: { ecmaVersion: 2022, sourceType: "module" } },
//----------------------------------------------------------------------
// function
// as
//----------------------------------------------------------------------
+ // import { a as b }
+ {
+ code: "import { \"a\"as b } from \"foo\"",
+ output: "import { \"a\" as b } from \"foo\"",
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBefore("as")
+ },
+ {
+ code: "import{ \"a\" as b }from\"foo\"",
+ output: "import{ \"a\"as b }from\"foo\"",
+ options: [NEITHER],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBefore("as")
+ },
+ {
+ code: "import{ \"a\"as b }from\"foo\"",
+ output: "import{ \"a\" as b }from\"foo\"",
+ options: [override("as", BOTH)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBefore("as")
+ },
+ {
+ code: "import { \"a\" as b } from \"foo\"",
+ output: "import { \"a\"as b } from \"foo\"",
+ options: [override("as", NEITHER)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBefore("as")
+ },
+
+ // export { a as b }
+ {
+ code: "let a; export { a as\"b\" };",
+ output: "let a; export { a as \"b\" };",
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedAfter("as")
+ },
+ {
+ code: "export { \"a\"as b } from \"foo\";",
+ output: "export { \"a\" as b } from \"foo\";",
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBefore("as")
+ },
+ {
+ code: "export { \"a\"as\"b\" } from \"foo\";",
+ output: "export { \"a\" as \"b\" } from \"foo\";",
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBeforeAndAfter("as")
+ },
+ {
+ code: "let a; export{ a as \"b\" };",
+ output: "let a; export{ a as\"b\" };",
+ options: [NEITHER],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedAfter("as")
+ },
+ {
+ code: "export{ \"a\" as b }from\"foo\";",
+ output: "export{ \"a\"as b }from\"foo\";",
+ options: [NEITHER],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBefore("as")
+ },
+ {
+ code: "export{ \"a\" as \"b\" }from\"foo\";",
+ output: "export{ \"a\"as\"b\" }from\"foo\";",
+ options: [NEITHER],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBeforeAndAfter("as")
+ },
+ {
+ code: "let a; export{ a as\"b\" };",
+ output: "let a; export{ a as \"b\" };",
+ options: [override("as", BOTH)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedAfter("as")
+ },
+ {
+ code: "export{ \"a\"as b }from\"foo\";",
+ output: "export{ \"a\" as b }from\"foo\";",
+ options: [override("as", BOTH)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBefore("as")
+ },
+ {
+ code: "export{ \"a\"as\"b\" }from\"foo\";",
+ output: "export{ \"a\" as \"b\" }from\"foo\";",
+ options: [override("as", BOTH)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBeforeAndAfter("as")
+ },
+ {
+ code: "let a; export { a as \"b\" };",
+ output: "let a; export { a as\"b\" };",
+ options: [override("as", NEITHER)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedAfter("as")
+ },
+ {
+ code: "export { \"a\" as b } from \"foo\";",
+ output: "export { \"a\"as b } from \"foo\";",
+ options: [override("as", NEITHER)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBefore("as")
+ },
+ {
+ code: "export { \"a\" as \"b\" } from \"foo\";",
+ output: "export { \"a\"as\"b\" } from \"foo\";",
+ options: [override("as", NEITHER)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBeforeAndAfter("as")
+ },
+
+ // import * as a
{
code: "import *as a from \"foo\"",
output: "import * as a from \"foo\"",
parserOptions: { ecmaVersion: 6, sourceType: "module" },
errors: unexpectedBefore("as")
},
+
+ // export * as a
{
code: "export *as a from \"foo\"",
output: "export * as a from \"foo\"",
parserOptions: { ecmaVersion: 2020, sourceType: "module" },
errors: expectedBefore("as")
},
+ {
+ code: "export *as\"a\" from \"foo\"",
+ output: "export * as \"a\" from \"foo\"",
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBeforeAndAfter("as")
+ },
{
code: "export* as a from\"foo\"",
output: "export*as a from\"foo\"",
parserOptions: { ecmaVersion: 2020, sourceType: "module" },
errors: unexpectedBefore("as")
},
+ {
+ code: "export* as \"a\"from\"foo\"",
+ output: "export*as\"a\"from\"foo\"",
+ options: [NEITHER],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBeforeAndAfter("as")
+ },
{
code: "export*as a from\"foo\"",
output: "export* as a from\"foo\"",
parserOptions: { ecmaVersion: 2020, sourceType: "module" },
errors: expectedBefore("as")
},
+ {
+ code: "export*as\"a\"from\"foo\"",
+ output: "export* as \"a\"from\"foo\"",
+ options: [override("as", BOTH)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBeforeAndAfter("as")
+ },
{
code: "export * as a from \"foo\"",
output: "export *as a from \"foo\"",
parserOptions: { ecmaVersion: 2020, sourceType: "module" },
errors: unexpectedBefore("as")
},
+ {
+ code: "export * as \"a\" from \"foo\"",
+ output: "export *as\"a\" from \"foo\"",
+ options: [override("as", NEITHER)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBeforeAndAfter("as")
+ },
//----------------------------------------------------------------------
// async
parserOptions: { ecmaVersion: 6, sourceType: "module" },
errors: expectedBeforeAndAfter("from")
},
+ {
+ code: "export * as \"a\"from\"foo\"",
+ output: "export * as \"a\" from \"foo\"",
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBeforeAndAfter("from")
+ },
{
code: "import{foo} from \"foo\"",
output: "import{foo}from\"foo\"",
parserOptions: { ecmaVersion: 6, sourceType: "module" },
errors: unexpectedBeforeAndAfter("from")
},
+ {
+ code: "export*as x from \"foo\"",
+ output: "export*as x from\"foo\"",
+ options: [NEITHER],
+ parserOptions: { ecmaVersion: 2020, sourceType: "module" },
+ errors: unexpectedAfter("from")
+ },
+ {
+ code: "export*as\"x\" from \"foo\"",
+ output: "export*as\"x\"from\"foo\"",
+ options: [NEITHER],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBeforeAndAfter("from")
+ },
{
code: "import{foo}from\"foo\"",
output: "import{foo} from \"foo\"",
parserOptions: { ecmaVersion: 6, sourceType: "module" },
errors: expectedBeforeAndAfter("from")
},
+ {
+ code: "export*as\"x\"from\"foo\"",
+ output: "export*as\"x\" from \"foo\"",
+ options: [override("from", BOTH)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: expectedBeforeAndAfter("from")
+ },
{
code: "import {foo} from \"foo\"",
output: "import {foo}from\"foo\"",
parserOptions: { ecmaVersion: 6, sourceType: "module" },
errors: unexpectedBeforeAndAfter("from")
},
+ {
+ code: "export * as x from \"foo\"",
+ output: "export * as x from\"foo\"",
+ options: [override("from", NEITHER)],
+ parserOptions: { ecmaVersion: 2020, sourceType: "module" },
+ errors: unexpectedAfter("from")
+ },
+ {
+ code: "export * as \"x\" from \"foo\"",
+ output: "export * as \"x\"from\"foo\"",
+ options: [override("from", NEITHER)],
+ parserOptions: { ecmaVersion: 2022, sourceType: "module" },
+ errors: unexpectedBeforeAndAfter("from")
+ },
//----------------------------------------------------------------------
// function