Skip to content

Commit ac63618

Browse files
author
sanex3339
committed
Added OptionalChaining precedence and simplified logic
1 parent 2ea701a commit ac63618

File tree

1 file changed

+12
-24
lines changed

1 file changed

+12
-24
lines changed

escodegen.js

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,12 @@
9999
Await: 14,
100100
Unary: 14,
101101
Postfix: 15,
102-
Call: 16,
103-
New: 17,
104-
TaggedTemplate: 18,
105-
Member: 19,
106-
Primary: 20
102+
OptionalChaining: 16,
103+
Call: 17,
104+
New: 18,
105+
TaggedTemplate: 19,
106+
Member: 20,
107+
Primary: 21
107108
};
108109

109110
BinaryPrecedence = {
@@ -1875,13 +1876,8 @@
18751876
iz,
18761877
exprCalleeFlags = E_TTF;
18771878

1878-
if (expr.callee.type === 'ChainExpression') {
1879-
// F_ALLOW_UNPARATH_NEW becomes false.
1880-
result = [this.generateExpression(expr.callee, Precedence.Member, exprCalleeFlags)];
1881-
} else {
1882-
// F_ALLOW_UNPARATH_NEW becomes false.
1883-
result = [this.generateExpression(expr.callee, Precedence.Call, exprCalleeFlags)];
1884-
}
1879+
// F_ALLOW_UNPARATH_NEW becomes false.
1880+
result = [this.generateExpression(expr.callee, Precedence.Call, exprCalleeFlags)];
18851881

18861882
if (expr.optional) {
18871883
result.push('?.');
@@ -1905,8 +1901,9 @@
19051901

19061902
ChainExpression: function (expr, precedence, flags) {
19071903
var expression = expr.expression;
1904+
var result = this[expression.type](expression, precedence, flags);
19081905

1909-
return this[expression.type](expression, precedence, flags);
1906+
return parenthesize(result, Precedence.OptionalChaining, precedence);
19101907
},
19111908

19121909
NewExpression: function (expr, precedence, flags) {
@@ -1941,13 +1938,8 @@
19411938
fragment,
19421939
exprObjectFlags = (flags & F_ALLOW_CALL) ? E_TTF : E_TFF;
19431940

1944-
if (expr.object.type === 'ChainExpression') {
1945-
// F_ALLOW_UNPARATH_NEW becomes false.
1946-
result = [this.generateExpression(expr.object, Precedence.Member, exprObjectFlags)];
1947-
} else {
1948-
// F_ALLOW_UNPARATH_NEW becomes false.
1949-
result = [this.generateExpression(expr.object, Precedence.Call, exprObjectFlags)];
1950-
}
1941+
// F_ALLOW_UNPARATH_NEW becomes false.
1942+
result = [this.generateExpression(expr.object, Precedence.Call, exprObjectFlags)];
19511943

19521944
if (expr.computed) {
19531945
if (expr.optional) {
@@ -1979,10 +1971,6 @@
19791971
result.push(generateIdentifier(expr.property));
19801972
}
19811973

1982-
if (precedence === Precedence.Member) {
1983-
return parenthesize(result, Precedence.Call, precedence);
1984-
}
1985-
19861974
return parenthesize(result, Precedence.Member, precedence);
19871975
},
19881976

0 commit comments

Comments
 (0)