|
99 | 99 | Await: 14,
|
100 | 100 | Unary: 14,
|
101 | 101 | 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 |
107 | 108 | };
|
108 | 109 |
|
109 | 110 | BinaryPrecedence = {
|
|
1875 | 1876 | iz,
|
1876 | 1877 | exprCalleeFlags = E_TTF;
|
1877 | 1878 |
|
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)]; |
1885 | 1881 |
|
1886 | 1882 | if (expr.optional) {
|
1887 | 1883 | result.push('?.');
|
|
1905 | 1901 |
|
1906 | 1902 | ChainExpression: function (expr, precedence, flags) {
|
1907 | 1903 | var expression = expr.expression;
|
| 1904 | + var result = this[expression.type](expression, precedence, flags); |
1908 | 1905 |
|
1909 |
| - return this[expression.type](expression, precedence, flags); |
| 1906 | + return parenthesize(result, Precedence.OptionalChaining, precedence); |
1910 | 1907 | },
|
1911 | 1908 |
|
1912 | 1909 | NewExpression: function (expr, precedence, flags) {
|
|
1941 | 1938 | fragment,
|
1942 | 1939 | exprObjectFlags = (flags & F_ALLOW_CALL) ? E_TTF : E_TFF;
|
1943 | 1940 |
|
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)]; |
1951 | 1943 |
|
1952 | 1944 | if (expr.computed) {
|
1953 | 1945 | if (expr.optional) {
|
|
1979 | 1971 | result.push(generateIdentifier(expr.property));
|
1980 | 1972 | }
|
1981 | 1973 |
|
1982 |
| - if (precedence === Precedence.Member) { |
1983 |
| - return parenthesize(result, Precedence.Call, precedence); |
1984 |
| - } |
1985 |
| - |
1986 | 1974 | return parenthesize(result, Precedence.Member, precedence);
|
1987 | 1975 | },
|
1988 | 1976 |
|
|
0 commit comments