Skip to content

Commit

Permalink
Disable import assertions after import module
Browse files Browse the repository at this point in the history
  • Loading branch information
JLHwung committed Sep 21, 2022
1 parent 4522a45 commit 7d6a04d
Show file tree
Hide file tree
Showing 10 changed files with 77 additions and 5 deletions.
1 change: 1 addition & 0 deletions packages/babel-parser/src/parse-error/standard-errors.ts
Expand Up @@ -117,6 +117,7 @@ export default {
ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
ImportJSONBindingNotDefault:
"A JSON module can only be imported with `default`.",
ImportReflectionHasAssertion: "`import module x` cannot have assertions.",
ImportReflectionNotBinding:
'Only `import module x from "./module"` is valid.',
IncompatibleRegExpUVFlags:
Expand Down
5 changes: 5 additions & 0 deletions packages/babel-parser/src/parser/statement.ts
Expand Up @@ -2615,6 +2615,11 @@ export default abstract class StatementParser extends ExpressionParser {
at: node.specifiers[0].loc.start,
});
}
if (node.assertions?.length > 0) {
this.raise(Errors.ImportReflectionHasAssertion, {
at: node.specifiers[0].loc.start,
});
}
}
}

Expand Down
@@ -0,0 +1 @@
import module foo from "./module.json" assert { type: "json" }
@@ -0,0 +1,4 @@
{
"plugins": ["importReflection", "importAssertions"],
"sourceType": "module"
}
@@ -0,0 +1,61 @@
{
"type": "File",
"start":0,"end":62,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":62,"index":62}},
"errors": [
"SyntaxError: `import module x` cannot have assertions. (1:14)"
],
"program": {
"type": "Program",
"start":0,"end":62,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":62,"index":62}},
"sourceType": "module",
"interpreter": null,
"body": [
{
"type": "ImportDeclaration",
"start":0,"end":62,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":62,"index":62}},
"specifiers": [
{
"type": "ImportDefaultSpecifier",
"start":14,"end":17,"loc":{"start":{"line":1,"column":14,"index":14},"end":{"line":1,"column":17,"index":17}},
"local": {
"type": "Identifier",
"start":14,"end":17,"loc":{"start":{"line":1,"column":14,"index":14},"end":{"line":1,"column":17,"index":17},"identifierName":"foo"},
"name": "foo"
}
}
],
"module": true,
"source": {
"type": "StringLiteral",
"start":23,"end":38,"loc":{"start":{"line":1,"column":23,"index":23},"end":{"line":1,"column":38,"index":38}},
"extra": {
"rawValue": "./module.json",
"raw": "\"./module.json\""
},
"value": "./module.json"
},
"assertions": [
{
"type": "ImportAttribute",
"start":48,"end":60,"loc":{"start":{"line":1,"column":48,"index":48},"end":{"line":1,"column":60,"index":60}},
"key": {
"type": "Identifier",
"start":48,"end":52,"loc":{"start":{"line":1,"column":48,"index":48},"end":{"line":1,"column":52,"index":52},"identifierName":"type"},
"name": "type"
},
"value": {
"type": "StringLiteral",
"start":54,"end":60,"loc":{"start":{"line":1,"column":54,"index":54},"end":{"line":1,"column":60,"index":60}},
"extra": {
"rawValue": "json",
"raw": "\"json\""
},
"value": "json"
}
}
]
}
],
"directives": []
}
}
Expand Up @@ -2,7 +2,7 @@
"type": "File",
"start":0,"end":46,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":46,"index":46}},
"errors": [
"SyntaxError: Only `import module x from \"./module\"` is supported. (1:14)"
"SyntaxError: Only `import module x from \"./module\"` is valid. (1:14)"
],
"program": {
"type": "Program",
Expand Down
Expand Up @@ -2,7 +2,7 @@
"type": "File",
"start":0,"end":44,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":44,"index":44}},
"errors": [
"SyntaxError: Only `import module x from \"./module\"` is supported. (1:19)"
"SyntaxError: Only `import module x from \"./module\"` is valid. (1:19)"
],
"program": {
"type": "Program",
Expand Down
Expand Up @@ -2,7 +2,7 @@
"type": "File",
"start":0,"end":43,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":43,"index":43}},
"errors": [
"SyntaxError: Only `import module x from \"./module\"` is supported. (1:16)"
"SyntaxError: Only `import module x from \"./module\"` is valid. (1:16)"
],
"program": {
"type": "Program",
Expand Down
Expand Up @@ -2,7 +2,7 @@
"type": "File",
"start":0,"end":44,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":44,"index":44}},
"errors": [
"SyntaxError: Only `import module x from \"./module\"` is supported. (1:14)"
"SyntaxError: Only `import module x from \"./module\"` is valid. (1:14)"
],
"program": {
"type": "Program",
Expand Down
Expand Up @@ -2,7 +2,7 @@
"type": "File",
"start":0,"end":44,"loc":{"start":{"line":1,"column":0,"index":0},"end":{"line":1,"column":44,"index":44}},
"errors": [
"SyntaxError: Only `import module x from \"./module\"` is supported. (1:19)"
"SyntaxError: Only `import module x from \"./module\"` is valid. (1:19)"
],
"program": {
"type": "Program",
Expand Down

0 comments on commit 7d6a04d

Please sign in to comment.