From 4d650b8ad0e98aa580cb1bc9880e46a55156cb4c Mon Sep 17 00:00:00 2001 From: fisker Date: Thu, 9 Mar 2023 10:39:43 +0800 Subject: [PATCH 1/5] fix: fix error handling on `ImportExpression` --- .../fixtures/_error_/extra-arguments/fixture.ts | 1 + .../extra-arguments/snapshots/1-TSESTree-Error.shot | 8 ++++++++ .../_error_/extra-arguments/snapshots/2-Babel-Error.shot | 3 +++ .../extra-arguments/snapshots/3-Alignment-Error.shot | 3 +++ .../fixtures/_error_/no-arguments/fixture.ts | 1 + .../_error_/no-arguments/snapshots/1-TSESTree-Error.shot | 8 ++++++++ .../_error_/no-arguments/snapshots/2-Babel-Error.shot | 3 +++ .../_error_/no-arguments/snapshots/3-Alignment-Error.shot | 3 +++ packages/typescript-estree/src/convert.ts | 2 +- 9 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/2-Babel-Error.shot create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/3-Alignment-Error.shot create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/fixture.ts create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/2-Babel-Error.shot create mode 100644 packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/3-Alignment-Error.shot diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts new file mode 100644 index 00000000000..69ef219c47c --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts @@ -0,0 +1 @@ +import("source.json", {type: "json"}, extraArgument); diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot new file mode 100644 index 00000000000..140b6eada58 --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot @@ -0,0 +1,8 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression ImportExpression _error_ extra-arguments TSESTree - Error 1`] = ` +"TSError +> 1 | import(\\"source.json\\", {type: \\"json\\"}, extraArgument); + | ^^^^^^^^^^^^^ Dynamic import requires exactly one or two argumentsx. + 2 |" +`; diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/2-Babel-Error.shot new file mode 100644 index 00000000000..3cdc1c9783c --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/2-Babel-Error.shot @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression ImportExpression _error_ extra-arguments Babel - Error 1`] = `[SyntaxError: \`import()\` requires exactly one or two arguments. (1:0)]`; diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/3-Alignment-Error.shot new file mode 100644 index 00000000000..69fd583b79f --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/3-Alignment-Error.shot @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression ImportExpression _error_ extra-arguments Error Alignment 1`] = `"Both errored"`; diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/fixture.ts b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/fixture.ts new file mode 100644 index 00000000000..6f375fea965 --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/fixture.ts @@ -0,0 +1 @@ +import(); diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot new file mode 100644 index 00000000000..671cb2d6aa5 --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot @@ -0,0 +1,8 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression ImportExpression _error_ no-arguments TSESTree - Error 1`] = ` +"TSError +> 1 | import(); + | ^^^^^^^^ Dynamic import requires exactly one or two argumentsx. + 2 |" +`; diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/2-Babel-Error.shot new file mode 100644 index 00000000000..8b27d717875 --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/2-Babel-Error.shot @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression ImportExpression _error_ no-arguments Babel - Error 1`] = `[SyntaxError: \`import()\` requires exactly one or two arguments. (1:0)]`; diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/3-Alignment-Error.shot new file mode 100644 index 00000000000..a767b5a6468 --- /dev/null +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/3-Alignment-Error.shot @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AST Fixtures expression ImportExpression _error_ no-arguments Error Alignment 1`] = `"Both errored"`; diff --git a/packages/typescript-estree/src/convert.ts b/packages/typescript-estree/src/convert.ts index 43f16db875d..d4e3c2d67e6 100644 --- a/packages/typescript-estree/src/convert.ts +++ b/packages/typescript-estree/src/convert.ts @@ -2043,7 +2043,7 @@ export class Converter { if (node.expression.kind === SyntaxKind.ImportKeyword) { if (node.arguments.length !== 1 && node.arguments.length !== 2) { this.#throwUnlessAllowInvalidAST( - node.arguments[0], + node.arguments[2] ?? node, 'Dynamic import requires exactly one or two arguments.', ); } From e7a91cdc42d919cb067dc724e0f519aaa1bd6aa9 Mon Sep 17 00:00:00 2001 From: fisker Date: Thu, 9 Mar 2023 10:45:07 +0800 Subject: [PATCH 2/5] Fix error message --- .../_error_/extra-arguments/snapshots/1-TSESTree-Error.shot | 2 +- .../_error_/no-arguments/snapshots/1-TSESTree-Error.shot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot index 140b6eada58..0a2c4dcfc71 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot @@ -3,6 +3,6 @@ exports[`AST Fixtures expression ImportExpression _error_ extra-arguments TSESTree - Error 1`] = ` "TSError > 1 | import(\\"source.json\\", {type: \\"json\\"}, extraArgument); - | ^^^^^^^^^^^^^ Dynamic import requires exactly one or two argumentsx. + | ^^^^^^^^^^^^^ Dynamic import requires exactly one or two arguments. 2 |" `; diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot index 671cb2d6aa5..b76c8be6e53 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/no-arguments/snapshots/1-TSESTree-Error.shot @@ -3,6 +3,6 @@ exports[`AST Fixtures expression ImportExpression _error_ no-arguments TSESTree - Error 1`] = ` "TSError > 1 | import(); - | ^^^^^^^^ Dynamic import requires exactly one or two argumentsx. + | ^^^^^^^^ Dynamic import requires exactly one or two arguments. 2 |" `; From 745a5417099fe4bacbba33498f4a991c689a4fb5 Mon Sep 17 00:00:00 2001 From: fisker Date: Thu, 9 Mar 2023 10:48:19 +0800 Subject: [PATCH 3/5] Break lines --- .../fixtures/_error_/extra-arguments/fixture.ts | 6 +++++- .../extra-arguments/snapshots/1-TSESTree-Error.shot | 9 ++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts index 69ef219c47c..4bdc3172f80 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts @@ -1 +1,5 @@ -import("source.json", {type: "json"}, extraArgument); +import( + "source.json", + {type: "json"}, + extraArgument +); diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot index 0a2c4dcfc71..28b90fe1f81 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot @@ -2,7 +2,10 @@ exports[`AST Fixtures expression ImportExpression _error_ extra-arguments TSESTree - Error 1`] = ` "TSError -> 1 | import(\\"source.json\\", {type: \\"json\\"}, extraArgument); - | ^^^^^^^^^^^^^ Dynamic import requires exactly one or two arguments. - 2 |" + 2 | \\"source.json\\", + 3 | {type: \\"json\\"}, +> 4 | extraArgument + | ^^^^^^^^^^^^^ Dynamic import requires exactly one or two arguments. + 5 | ); + 6 |" `; From 9c0655acff1d9862acfec391e4e6e0aab622d4e5 Mon Sep 17 00:00:00 2001 From: fisker Date: Thu, 9 Mar 2023 10:51:23 +0800 Subject: [PATCH 4/5] Make fixture more real --- .../fixtures/_error_/extra-arguments/fixture.ts | 2 +- .../_error_/extra-arguments/snapshots/1-TSESTree-Error.shot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts index 4bdc3172f80..86ee8e1c159 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts @@ -1,5 +1,5 @@ import( - "source.json", + "./source.json", {type: "json"}, extraArgument ); diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot index 28b90fe1f81..8d77bcd760b 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot @@ -2,7 +2,7 @@ exports[`AST Fixtures expression ImportExpression _error_ extra-arguments TSESTree - Error 1`] = ` "TSError - 2 | \\"source.json\\", + 2 | \\"./source.json\\", 3 | {type: \\"json\\"}, > 4 | extraArgument | ^^^^^^^^^^^^^ Dynamic import requires exactly one or two arguments. From 008065ab615ce447fa7439b0c8694f4edb653a78 Mon Sep 17 00:00:00 2001 From: fisker Date: Thu, 9 Mar 2023 10:54:25 +0800 Subject: [PATCH 5/5] Make fixture more real --- .../fixtures/_error_/extra-arguments/fixture.ts | 2 +- .../_error_/extra-arguments/snapshots/1-TSESTree-Error.shot | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts index 86ee8e1c159..b91b27f0f8f 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/fixture.ts @@ -1,5 +1,5 @@ import( "./source.json", - {type: "json"}, + {assert: {type: "json"}}, extraArgument ); diff --git a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot index 8d77bcd760b..527a5ff18c4 100644 --- a/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot +++ b/packages/ast-spec/src/expression/ImportExpression/fixtures/_error_/extra-arguments/snapshots/1-TSESTree-Error.shot @@ -3,7 +3,7 @@ exports[`AST Fixtures expression ImportExpression _error_ extra-arguments TSESTree - Error 1`] = ` "TSError 2 | \\"./source.json\\", - 3 | {type: \\"json\\"}, + 3 | {assert: {type: \\"json\\"}}, > 4 | extraArgument | ^^^^^^^^^^^^^ Dynamic import requires exactly one or two arguments. 5 | );