@@ -958,14 +958,22 @@ gen_expression(lhs,rhs,rhs2) :: { Expr Span }
958
958
| break label { Break [] (Just $2 ) Nothing ($1 # $2 ) }
959
959
| break label rhs %prec break { Break [] (Just $2 ) (Just $3 ) ($1 # $3 ) }
960
960
-- lambda expressions
961
- | static move lambda_args rhs %prec LAMBDA
962
- { Closure [] Immovable Value (FnDecl (unspan $3 ) Nothing False (spanOf $3 )) $> ($1 # $>) }
963
- | move lambda_args rhs %prec LAMBDA
964
- { Closure [] Movable Value (FnDecl (unspan $2 ) Nothing False (spanOf $2 )) $> ($1 # $>) }
965
- | static lambda_args rhs %prec LAMBDA
966
- { Closure [] Immovable Ref (FnDecl (unspan $2 ) Nothing False (spanOf $2 )) $> ($1 # $>) }
967
- | lambda_args rhs %prec LAMBDA
968
- { Closure [] Movable Ref (FnDecl (unspan $1 ) Nothing False (spanOf $1 )) $> ($1 # $>) }
961
+ | static async move lambda_args rhs %prec LAMBDA
962
+ { Closure [] Value IsAsync Immovable (FnDecl (unspan $4 ) Nothing False (spanOf $4 )) $> ($1 # $>) }
963
+ | async move lambda_args rhs %prec LAMBDA
964
+ { Closure [] Value IsAsync Movable (FnDecl (unspan $3 ) Nothing False (spanOf $3 )) $> ($1 # $>) }
965
+ | static move lambda_args rhs %prec LAMBDA
966
+ { Closure [] Value NotAsync Immovable (FnDecl (unspan $3 ) Nothing False (spanOf $3 )) $> ($1 # $>) }
967
+ | move lambda_args rhs %prec LAMBDA
968
+ { Closure [] Value NotAsync Movable (FnDecl (unspan $2 ) Nothing False (spanOf $2 )) $> ($1 # $>) }
969
+ | static async lambda_args rhs %prec LAMBDA
970
+ { Closure [] Ref IsAsync Immovable (FnDecl (unspan $3 ) Nothing False (spanOf $3 )) $> ($1 # $>) }
971
+ | async lambda_args rhs %prec LAMBDA
972
+ { Closure [] Ref IsAsync Movable (FnDecl (unspan $2 ) Nothing False (spanOf $2 )) $> ($1 # $>) }
973
+ | static lambda_args rhs %prec LAMBDA
974
+ { Closure [] Ref NotAsync Immovable (FnDecl (unspan $2 ) Nothing False (spanOf $2 )) $> ($1 # $>) }
975
+ | lambda_args rhs %prec LAMBDA
976
+ { Closure [] Ref NotAsync Movable (FnDecl (unspan $1 ) Nothing False (spanOf $1 )) $> ($1 # $>) }
969
977
970
978
-- Variant of ' gen_expression' which only constructs expressions starting with another expression.
971
979
left_gen_expression (lhs,rhs,rhs2) :: { Expr Span }
@@ -1213,14 +1221,22 @@ paren_expr :: { Expr Span }
1213
1221
1214
1222
-- Closure ending in blocks
1215
1223
lambda_expr_block :: { Expr Span }
1216
- : static move lambda_args ' ->' ty_no_plus block
1217
- { Closure [] Immovable Value (FnDecl (unspan $3 ) (Just $5 ) False (spanOf $3 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1218
- | move lambda_args ' ->' ty_no_plus block
1219
- { Closure [] Movable Value (FnDecl (unspan $2 ) (Just $4 ) False (spanOf $2 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1220
- | static lambda_args ' ->' ty_no_plus block
1221
- { Closure [] Immovable Ref (FnDecl (unspan $2 ) (Just $4 ) False (spanOf $2 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1222
- | lambda_args ' ->' ty_no_plus block
1223
- { Closure [] Movable Ref (FnDecl (unspan $1 ) (Just $3 ) False (spanOf $1 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1224
+ : static async move lambda_args ' ->' ty_no_plus block
1225
+ { Closure [] Value IsAsync Immovable (FnDecl (unspan $4 ) (Just $6 ) False (spanOf $4 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1226
+ | async move lambda_args ' ->' ty_no_plus block
1227
+ { Closure [] Value IsAsync Movable (FnDecl (unspan $3 ) (Just $5 ) False (spanOf $3 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1228
+ | static move lambda_args ' ->' ty_no_plus block
1229
+ { Closure [] Value NotAsync Immovable (FnDecl (unspan $3 ) (Just $5 ) False (spanOf $3 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1230
+ | move lambda_args ' ->' ty_no_plus block
1231
+ { Closure [] Value NotAsync Movable (FnDecl (unspan $2 ) (Just $4 ) False (spanOf $2 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1232
+ | static async lambda_args ' ->' ty_no_plus block
1233
+ { Closure [] Ref IsAsync Immovable (FnDecl (unspan $3 ) (Just $5 ) False (spanOf $3 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1234
+ | async lambda_args ' ->' ty_no_plus block
1235
+ { Closure [] Ref IsAsync Movable (FnDecl (unspan $2 ) (Just $4 ) False (spanOf $2 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1236
+ | static lambda_args ' ->' ty_no_plus block
1237
+ { Closure [] Ref NotAsync Immovable (FnDecl (unspan $2 ) (Just $4 ) False (spanOf $2 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1238
+ | lambda_args ' ->' ty_no_plus block
1239
+ { Closure [] Ref NotAsync Movable (FnDecl (unspan $1 ) (Just $3 ) False (spanOf $1 )) (BlockExpr [] $> (spanOf $>)) ($1 # $>) }
1224
1240
1225
1241
-- Lambda expression arguments block
1226
1242
lambda_args :: { Spanned [Arg Span] }
@@ -1879,7 +1895,7 @@ addAttrs as (WhileLet as' p e b l s) = WhileLet (as ++ as') p e b l s
1879
1895
addAttrs as (ForLoop as' p e b l s) = ForLoop (as ++ as' ) p e b l s
1880
1896
addAttrs as (Loop as' b l s) = Loop (as ++ as' ) b l s
1881
1897
addAttrs as (Match as' e a s) = Match (as ++ as' ) e a s
1882
- addAttrs as (Closure as' m c f e s) = Closure (as ++ as' ) m c f e s
1898
+ addAttrs as (Closure as' c a m f e s) = Closure (as ++ as' ) c a m f e s
1883
1899
addAttrs as (BlockExpr as' b s) = BlockExpr (as ++ as' ) b s
1884
1900
addAttrs as (TryBlock as' b s) = TryBlock (as ++ as' ) b s
1885
1901
addAttrs as (Async as' c b s) = Async (as ++ as' ) c b s
0 commit comments