Closed
Description
Example, o?.m(a1, . . . , an, xn+1 : an+1, . . . , xn+k : an+k)
is defined as equivalent to ((x) => x == null?null : x.m(a1, . . . , an, xn+1 : an+1, . . . , xn+k : an+k))(o)
.
This moves the expressions a1
.. an+k
into a new non-async function. If the original expression is in an async function and any of these expressions contain an await
, the resulting rewrite is incorrect.
The specification needs another way to introduce new expression-level bindings without resorting to function literals, perhaps let x = e1 in e2
which wouldn't change the scope.