fix unescaping in `global` expressions (#47719)
This fixes some issues around macro hygiene in `global` expressions.
Apparently we always treat l-values in global expressions as being
escaped, but we still need to be careful to handle type annotations and
destructuring correctly.
(cherry picked from commit cc25a1369472756c63c4da81abbc106e2790b4f0)