refactor: raise AwaitNotInAsyncContext when an AwaitExpression will be parsed (#12716)
* refactor: raise AwaitNotInAsyncContext when an AwaitExpression will be parsed * tweak logic * early exit when errors are before thrown error position * fix: always return true in assert.throws callback See https://nodejs.org/api/assert.html#assert_assert_throws_fn_error_message * update test fixtures * fix flow error
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
"type": "File",
|
||||
"start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions (1:0)"
|
||||
"SyntaxError: Unexpected reserved word 'await' (1:0)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"type": "File",
|
||||
"start":0,"end":20,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions (1:6)"
|
||||
"SyntaxError: Unexpected reserved word 'await' (1:6)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"type": "File",
|
||||
"start":0,"end":24,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions (1:8)"
|
||||
"SyntaxError: Unexpected reserved word 'await' (1:8)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"type": "File",
|
||||
"start":0,"end":26,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":26}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions (1:15)"
|
||||
"SyntaxError: Unexpected reserved word 'await' (1:15)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"type": "File",
|
||||
"start":0,"end":19,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions (1:9)"
|
||||
"SyntaxError: Unexpected reserved word 'await' (1:9)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"type": "File",
|
||||
"start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions (1:6)"
|
||||
"SyntaxError: Unexpected reserved word 'await' (1:6)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
|
||||
@@ -2,7 +2,5 @@
|
||||
"plugins": [
|
||||
"topLevelAwait"
|
||||
],
|
||||
"sourceType": "module",
|
||||
"errorRecovery": false,
|
||||
"throws": "'await' is only allowed within async functions and at the top levels of modules (1:6)"
|
||||
}
|
||||
"sourceType": "module"
|
||||
}
|
||||
|
||||
41
packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/output.json
vendored
Normal file
41
packages/babel-parser/test/fixtures/experimental/top-level-await/inside-arrow/output.json
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"type": "File",
|
||||
"start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions and at the top levels of modules (1:6)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
"start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}},
|
||||
"sourceType": "module",
|
||||
"interpreter": null,
|
||||
"body": [
|
||||
{
|
||||
"type": "ExpressionStatement",
|
||||
"start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}},
|
||||
"expression": {
|
||||
"type": "ArrowFunctionExpression",
|
||||
"start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},
|
||||
"id": null,
|
||||
"generator": false,
|
||||
"async": false,
|
||||
"params": [],
|
||||
"body": {
|
||||
"type": "AwaitExpression",
|
||||
"start":6,"end":13,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":13}},
|
||||
"argument": {
|
||||
"type": "NumericLiteral",
|
||||
"start":12,"end":13,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":13}},
|
||||
"extra": {
|
||||
"rawValue": 0,
|
||||
"raw": "0"
|
||||
},
|
||||
"value": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"directives": []
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,5 @@
|
||||
"plugins": [
|
||||
"topLevelAwait"
|
||||
],
|
||||
"sourceType": "module",
|
||||
"errorRecovery": false,
|
||||
"throws": "'await' is only allowed within async functions and at the top levels of modules (2:2)"
|
||||
}
|
||||
"sourceType": "module"
|
||||
}
|
||||
|
||||
52
packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/output.json
vendored
Normal file
52
packages/babel-parser/test/fixtures/experimental/top-level-await/inside-function/output.json
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"type": "File",
|
||||
"start":0,"end":28,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}},
|
||||
"errors": [
|
||||
"SyntaxError: 'await' is only allowed within async functions and at the top levels of modules (2:2)"
|
||||
],
|
||||
"program": {
|
||||
"type": "Program",
|
||||
"start":0,"end":28,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}},
|
||||
"sourceType": "module",
|
||||
"interpreter": null,
|
||||
"body": [
|
||||
{
|
||||
"type": "FunctionDeclaration",
|
||||
"start":0,"end":28,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}},
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"start":9,"end":11,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":11},"identifierName":"fn"},
|
||||
"name": "fn"
|
||||
},
|
||||
"generator": false,
|
||||
"async": false,
|
||||
"params": [],
|
||||
"body": {
|
||||
"type": "BlockStatement",
|
||||
"start":14,"end":28,"loc":{"start":{"line":1,"column":14},"end":{"line":3,"column":1}},
|
||||
"body": [
|
||||
{
|
||||
"type": "ExpressionStatement",
|
||||
"start":18,"end":26,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":10}},
|
||||
"expression": {
|
||||
"type": "AwaitExpression",
|
||||
"start":18,"end":25,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":9}},
|
||||
"argument": {
|
||||
"type": "NumericLiteral",
|
||||
"start":24,"end":25,"loc":{"start":{"line":2,"column":8},"end":{"line":2,"column":9}},
|
||||
"extra": {
|
||||
"rawValue": 0,
|
||||
"raw": "0"
|
||||
},
|
||||
"value": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"directives": []
|
||||
}
|
||||
}
|
||||
],
|
||||
"directives": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user