|
100 | 100 | Await: 14, |
101 | 101 | Unary: 14, |
102 | 102 | Postfix: 15, |
103 | | - Call: 16, |
104 | | - New: 17, |
105 | | - TaggedTemplate: 18, |
106 | | - Member: 19, |
107 | | - Primary: 20 |
| 103 | + OptionalChaining: 16, |
| 104 | + Call: 17, |
| 105 | + New: 18, |
| 106 | + TaggedTemplate: 19, |
| 107 | + Member: 20, |
| 108 | + Primary: 21 |
108 | 109 | }; |
109 | 110 |
|
110 | 111 | BinaryPrecedence = { |
|
1898 | 1899 | }, |
1899 | 1900 |
|
1900 | 1901 | CallExpression: function (expr, precedence, flags) { |
1901 | | - var result, |
1902 | | - i, |
1903 | | - iz, |
1904 | | - exprCalleeFlags = E_TTF; |
1905 | | - |
1906 | | - if (expr.callee.type === 'ChainExpression' && expr.callee.expression.optional) { |
1907 | | - // F_ALLOW_UNPARATH_NEW becomes false. |
1908 | | - result = [this.generateExpression(expr.callee, Precedence.Member, exprCalleeFlags)]; |
1909 | | - } else { |
1910 | | - // F_ALLOW_UNPARATH_NEW becomes false. |
1911 | | - result = [this.generateExpression(expr.callee, Precedence.Call, exprCalleeFlags)]; |
1912 | | - } |
| 1902 | + var result, i, iz; |
| 1903 | + |
| 1904 | + // F_ALLOW_UNPARATH_NEW becomes false. |
| 1905 | + result = [this.generateExpression(expr.callee, Precedence.Call, E_TTF)]; |
1913 | 1906 |
|
1914 | 1907 | if (expr.optional) { |
1915 | 1908 | result.push('?.'); |
|
1933 | 1926 |
|
1934 | 1927 | ChainExpression: function (expr, precedence, flags) { |
1935 | 1928 | var expression = expr.expression; |
| 1929 | + var result = this[expression.type](expression, precedence, flags); |
1936 | 1930 |
|
1937 | | - return this[expression.type](expression, precedence, flags); |
| 1931 | + return parenthesize(result, Precedence.OptionalChaining, precedence); |
1938 | 1932 | }, |
1939 | 1933 |
|
1940 | 1934 | NewExpression: function (expr, precedence, flags) { |
|
1965 | 1959 | }, |
1966 | 1960 |
|
1967 | 1961 | MemberExpression: function (expr, precedence, flags) { |
1968 | | - var result, |
1969 | | - fragment, |
1970 | | - exprObjectFlags = (flags & F_ALLOW_CALL) ? E_TTF : E_TFF; |
| 1962 | + var result, fragment; |
1971 | 1963 |
|
1972 | | - if (expr.object.type === 'ChainExpression' && expr.object.expression.optional) { |
1973 | | - // F_ALLOW_UNPARATH_NEW becomes false. |
1974 | | - result = [this.generateExpression(expr.object, Precedence.Member, exprObjectFlags)]; |
1975 | | - } else { |
1976 | | - // F_ALLOW_UNPARATH_NEW becomes false. |
1977 | | - result = [this.generateExpression(expr.object, Precedence.Call, exprObjectFlags)]; |
1978 | | - } |
| 1964 | + // F_ALLOW_UNPARATH_NEW becomes false. |
| 1965 | + result = [this.generateExpression(expr.object, Precedence.Call, (flags & F_ALLOW_CALL) ? E_TTF : E_TFF)]; |
1979 | 1966 |
|
1980 | 1967 | if (expr.computed) { |
1981 | 1968 | if (expr.optional) { |
|
2007 | 1994 | result.push(generateIdentifier(expr.property)); |
2008 | 1995 | } |
2009 | 1996 |
|
2010 | | - if (precedence === Precedence.Member) { |
2011 | | - return parenthesize(result, Precedence.Call, precedence); |
2012 | | - } |
2013 | | - |
2014 | 1997 | return parenthesize(result, Precedence.Member, precedence); |
2015 | 1998 | }, |
2016 | 1999 |
|
|
0 commit comments