Skip to content

Commit 164bf8f

Browse files
committed
Fix mishandling of astral characters after "async function"
Closes #1037 FIX: Fix a bug where astral characters after `async function` were ignored.
1 parent f85a712 commit 164bf8f

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

acorn/src/statement.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ pp.isAsyncFunction = function() {
6565

6666
skipWhiteSpace.lastIndex = this.pos
6767
let skip = skipWhiteSpace.exec(this.input)
68-
let next = this.pos + skip[0].length
68+
let next = this.pos + skip[0].length, after
6969
return !lineBreak.test(this.input.slice(this.pos, next)) &&
7070
this.input.slice(next, next + 8) === "function" &&
71-
(next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))
71+
(next + 8 === this.input.length ||
72+
!(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))
7273
}
7374

7475
// Parse a single statement.

test/tests-asyncawait.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3539,3 +3539,5 @@ test("async() => await (5 ** 6)", {}, {ecmaVersion: 8})
35393539
testFail("async() => await (5) ** 6", "Unexpected token (1:21)", {ecmaVersion: 8})
35403540

35413541
testFail("4 + async() => 2", "Unexpected token (1:12)", {ecmaVersion: 8, loose: false})
3542+
3543+
testFail("async function𝐬 f() {}", "Unexpected token (1:17)", {ecmaVersion: 8})

0 commit comments

Comments
 (0)