Skip to content

Commit 748b492

Browse files
authored
Merge pull request #22918 from MathiasVP/fix-js-parsing-set-get
JS: Fix parsing of destructuring patterns with identifiers named `set` or `get`
2 parents f8c89f0 + 959e5c3 commit 748b492

3 files changed

Lines changed: 2165 additions & 104 deletions

File tree

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2017,7 +2017,9 @@ protected void parsePropertyValue(PropertyInfo pi) {
20172017
&& pi.key instanceof Identifier
20182018
&& (((Identifier) pi.key).getName().equals("get")
20192019
|| ((Identifier) pi.key).getName().equals("set"))
2020-
&& (this.type != TokenType.comma && this.type != TokenType.braceR)) {
2020+
&& (this.type != TokenType.comma
2021+
&& this.type != TokenType.braceR
2022+
&& this.type != TokenType.eq)) {
20212023
if (pi.isGenerator || pi.isAsync || pi.isPattern) this.unexpected();
20222024
pi.kind = ((Identifier) pi.key).getName();
20232025
PropertyInfo pi2 = new PropertyInfo(false, false, this.startLoc);
Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
1-
({x = 1}) => x;
1+
({x = 1}) => x;
2+
3+
const example = ({ set = {}, unset = [] }, replacements) => {
4+
return { set, unset };
5+
};
6+
({ get = {}, set = [] }) => ({ get, set });
7+
async ({ get = 1, set = 2 } = {}) => ({ get, set });
8+
9+
let get, set;
10+
({ get = 1, set = 2 } = {});
11+
function defaults({ get = 1, set = 2 }) {
12+
return { get, set };
13+
}
14+
15+
({
16+
get value() { return get; },
17+
set value(v) { set = v; },
18+
get,
19+
set
20+
});
21+
({ get() {}, set(value) {} });

0 commit comments

Comments
 (0)