Skip to content

Commit

Permalink
fix: disallow surrogate in the end of contextual name (#13377)
Browse files Browse the repository at this point in the history
  • Loading branch information
JLHwung committed May 27, 2021
1 parent dbfa877 commit 079f8cd
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 5 deletions.
16 changes: 11 additions & 5 deletions packages/babel-parser/src/parser/util.js
Expand Up @@ -71,11 +71,17 @@ export default class UtilParser extends Tokenizer {

isUnparsedContextual(nameStart: number, name: string): boolean {
const nameEnd = nameStart + name.length;
return (
this.input.slice(nameStart, nameEnd) === name &&
(nameEnd === this.input.length ||
!isIdentifierChar(this.input.charCodeAt(nameEnd)))
);
if (this.input.slice(nameStart, nameEnd) === name) {
const nextCh = this.input.charCodeAt(nameEnd);
return !(
isIdentifierChar(nextCh) ||
// check if `nextCh is between 0xd800 - 0xdbff,
// if `nextCh` is NaN, `NaN & 0xfc00` is 0, the function
// returns true
(nextCh & 0xfc00) === 0xd800
);
}
return false;
}

isLookaheadContextual(name: string): boolean {
Expand Down
@@ -0,0 +1 @@
async function饾惉 f() {}
@@ -0,0 +1,56 @@
{
"type": "File",
"start":0,"end":23,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":23}},
"errors": [
"SyntaxError: Missing semicolon. (1:5)",
"SyntaxError: Missing semicolon. (1:16)",
"SyntaxError: Missing semicolon. (1:20)"
],
"program": {
"type": "Program",
"start":0,"end":23,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":23}},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start":0,"end":5,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":5}},
"expression": {
"type": "Identifier",
"start":0,"end":5,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":5},"identifierName":"async"},
"name": "async"
}
},
{
"type": "ExpressionStatement",
"start":6,"end":16,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":16}},
"expression": {
"type": "Identifier",
"start":6,"end":16,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":16},"identifierName":"function饾惉"},
"name": "function饾惉"
}
},
{
"type": "ExpressionStatement",
"start":17,"end":20,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":20}},
"expression": {
"type": "CallExpression",
"start":17,"end":20,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":20}},
"callee": {
"type": "Identifier",
"start":17,"end":18,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":18},"identifierName":"f"},
"name": "f"
},
"arguments": []
}
},
{
"type": "BlockStatement",
"start":21,"end":23,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":23}},
"body": [],
"directives": []
}
],
"directives": []
}
}

0 comments on commit 079f8cd

Please sign in to comment.