Skip to content

Commit fb9cb5d

Browse files
authored
Merge pull request #22500 from github/copilot/fix-codeql-parse-error-await
Allow JavaScript property named await in async functions
2 parents bf20e95 + 365727c commit fb9cb5d

5 files changed

Lines changed: 17 additions & 2 deletions

File tree

javascript/extractor/src/com/semmle/jcorn/Parser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2296,9 +2296,9 @@ protected Identifier parseIdent(boolean liberal) {
22962296
&& (this.options.ecmaVersion() >= 6
22972297
|| inputSubstring(this.start, this.end).indexOf("\\") == -1))
22982298
this.raiseRecoverable(this.start, "The keyword '" + this.value + "' is reserved");
2299-
if (!isPrivateField && this.inGenerator && this.value.equals("yield"))
2299+
if (!liberal && !isPrivateField && this.inGenerator && this.value.equals("yield"))
23002300
this.raiseRecoverable(this.start, "Can not use 'yield' as identifier inside a generator");
2301-
if (!isPrivateField && this.inAsync && this.value.equals("await"))
2301+
if (!liberal && !isPrivateField && this.inAsync && this.value.equals("await"))
23022302
this.raiseRecoverable(
23032303
this.start, "Can not use 'await' as identifier inside an async function");
23042304
name = String.valueOf(this.value);

javascript/ql/test/library-tests/AwaitPropertyName/AwaitPropertyName.expected

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import javascript
2+
3+
from JSParseError err
4+
select err
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
semmle-extractor-options: --tolerate-parse-errors
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const pool = { await() { return 42; } };
2+
const generator = { yield() { return 42; } };
3+
4+
async function issue22499() {
5+
return await pool.await();
6+
}
7+
8+
function* yieldPropertyName() {
9+
return generator.yield();
10+
}

0 commit comments

Comments
 (0)