@@ -176,6 +176,13 @@ class map : mapper =
176
176
| Right (k , d ) -> Right (k, m#for_binding k d)
177
177
in
178
178
ForOf_statement (e1, m#expression e2, (m#statement s, m#loc loc))
179
+ | ForAwaitOf_statement (e1 , e2 , (s , loc )) ->
180
+ let e1 =
181
+ match e1 with
182
+ | Left e -> Left (m#expression e)
183
+ | Right (k , d ) -> Right (k, m#for_binding k d)
184
+ in
185
+ ForAwaitOf_statement (e1, m#expression e2, (m#statement s, m#loc loc))
179
186
| Continue_statement s -> Continue_statement s
180
187
| Break_statement s -> Break_statement s
181
188
| Return_statement e -> Return_statement (m#expression_o e)
@@ -516,7 +523,12 @@ class iter : iterator =
516
523
(match e1 with
517
524
| Left e -> m#expression e
518
525
| Right (k , d ) -> m#for_binding k d);
519
-
526
+ m#expression e2;
527
+ m#statement s
528
+ | ForAwaitOf_statement (e1 , e2 , (s , _ )) ->
529
+ (match e1 with
530
+ | Left e -> m#expression e
531
+ | Right (k , d ) -> m#for_binding k d);
520
532
m#expression e2;
521
533
m#statement s
522
534
| Continue_statement _ -> ()
@@ -1063,6 +1075,15 @@ class free =
1063
1075
m'#record_block Normal ;
1064
1076
m#merge_block_info m';
1065
1077
ForOf_statement (Right (k, l), e2, (st, m#loc loc))
1078
+ | ForAwaitOf_statement (Right (((Const | Let ) as k ), l ), e2 , (st , loc )) ->
1079
+ let same_level = level in
1080
+ let m' = {< state_ = empty; level = same_level> } in
1081
+ let l = m'#for_binding k l in
1082
+ let e2 = m'#expression e2 in
1083
+ let st = m'#statement st in
1084
+ m'#record_block Normal ;
1085
+ m#merge_block_info m';
1086
+ ForAwaitOf_statement (Right (k, l), e2, (st, m#loc loc))
1066
1087
| Switch_statement (e , l , def , l' ) ->
1067
1088
let same_level = level in
1068
1089
let m' = {< state_ = empty; level = same_level> } in
@@ -1186,6 +1207,10 @@ class rename_variable ~esm =
1186
1207
let m = {< depth = depth + 1 > } in
1187
1208
m#for_binding k l;
1188
1209
m#statement st
1210
+ | _ , ForAwaitOf_statement (Right (((Const | Let ) as k ), l ), _e2 , (st , _loc )) ->
1211
+ let m = {< depth = depth + 1 > } in
1212
+ m#for_binding k l;
1213
+ m#statement st
1189
1214
| _ , ForIn_statement (Right (((Const | Let ) as k ), l ), _e2 , (st , _loc )) ->
1190
1215
let m = {< depth = depth + 1 > } in
1191
1216
m#for_binding k l;
@@ -1352,10 +1377,17 @@ class rename_variable ~esm =
1352
1377
( Right (k, m'#for_binding k l)
1353
1378
, m'#expression e2
1354
1379
, (m'#statement st, m'#loc loc) )
1380
+ | ForAwaitOf_statement (Right (((Const | Let ) as k ), l ), e2 , (st , loc )) ->
1381
+ let ids = bound_idents_of_binding l in
1382
+ let m' = m#update_state Lexical_block ids [] in
1383
+ ForAwaitOf_statement
1384
+ ( Right (k, m'#for_binding k l)
1385
+ , m'#expression e2
1386
+ , (m'#statement st, m'#loc loc) )
1355
1387
| ForIn_statement (Right (((Const | Let ) as k ), l ), e2 , (st , loc )) ->
1356
1388
let ids = bound_idents_of_binding l in
1357
1389
let m' = m#update_state Lexical_block ids [] in
1358
- ForOf_statement
1390
+ ForIn_statement
1359
1391
( Right (k, m'#for_binding k l)
1360
1392
, m'#expression e2
1361
1393
, (m'#statement st, m'#loc loc) )
@@ -1632,6 +1664,7 @@ class clean =
1632
1664
| For_statement (p1 , p2 , p3 , st ) -> For_statement (p1, p2, p3, b st)
1633
1665
| ForIn_statement (param , e , st ) -> ForIn_statement (param, e, b st)
1634
1666
| ForOf_statement (param , e , st ) -> ForOf_statement (param, e, b st)
1667
+ | ForAwaitOf_statement (param , e , st ) -> ForAwaitOf_statement (param, e, b st)
1635
1668
| Switch_statement (e , l , Some [] , [] ) -> Switch_statement (e, l, None , [] )
1636
1669
| s -> s
1637
1670
end
0 commit comments