Skip to content

Commit 88dea92

Browse files
authored
feat(no-top-level-await): add support for await using (#447)
1 parent 96998b9 commit 88dea92

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

lib/rules/no-top-level-await.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,9 @@ module.exports = {
120120
":function:exit"() {
121121
functionDepth--
122122
},
123-
"AwaitExpression, ForOfStatement[await=true]"(node) {
123+
"AwaitExpression, ForOfStatement[await=true], VariableDeclaration[kind='await using']"(
124+
node
125+
) {
124126
if (functionDepth > 0) {
125127
// not top-level
126128
return

tests/lib/rules/no-top-level-await.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
const { RuleTester } = require("#test-helpers")
88
const rule = require("../../../lib/rules/no-top-level-await.js")
99
const path = require("path")
10+
const tsParser = require("@typescript-eslint/parser")
1011

1112
/**
1213
* Makes a file path to a fixture.
@@ -100,6 +101,12 @@ new RuleTester({
100101
},
101102
],
102103
},
104+
// await using
105+
{
106+
filename: fixture("simple-files/lib/a.js"),
107+
code: "async function f() { await using foo = x }",
108+
languageOptions: { parser: tsParser },
109+
},
103110
// files field of `package.json` with convertPath
104111
{
105112
filename: fixture("simple-files/test/a.ts"),
@@ -230,5 +237,19 @@ new RuleTester({
230237
},
231238
],
232239
},
240+
// await using
241+
{
242+
filename: fixture("simple-files/lib/a.js"),
243+
code: "await using foo = x",
244+
languageOptions: { parser: tsParser },
245+
errors: [
246+
{
247+
message:
248+
"Top-level `await` is forbidden in published modules.",
249+
line: 1,
250+
column: 1,
251+
},
252+
],
253+
},
233254
],
234255
})

0 commit comments

Comments
 (0)