@@ -289,16 +289,16 @@ item_const
289
289
;
290
290
291
291
item_macro
292
- : path_expr '!' maybe_ident parens_delimited_token_trees ';' { $$ = mk_node("ItemMacro", 3, $1, $3, $4); }
293
- | path_expr '!' maybe_ident braces_delimited_token_trees { $$ = mk_node("ItemMacro", 3, $1, $3, $4); }
294
- | path_expr '!' maybe_ident brackets_delimited_token_trees ';'{ $$ = mk_node("ItemMacro", 3, $1, $3, $4); }
292
+ : path_expr '!' maybe_ident parens_delimited_token_trees ';'
293
+ | path_expr '!' maybe_ident braces_delimited_token_trees
294
+ | path_expr '!' maybe_ident brackets_delimited_token_trees ';'
295
295
;
296
296
297
297
view_item
298
298
: use_item
299
299
| extern_fn_item
300
300
| EXTERN CRATE ident ';' { $$ = mk_node("ViewItemExternCrate", 1, $3); }
301
- | EXTERN CRATE ident AS ident ';' { $$ = mk_node("ViewItemExternCrate", 2, $3, $5); }
301
+ | EXTERN CRATE str AS ident ';' { $$ = mk_node("ViewItemExternCrate", 2, $3, $5); }
302
302
;
303
303
304
304
extern_fn_item
@@ -312,11 +312,8 @@ use_item
312
312
view_path
313
313
: path_no_types_allowed { $$ = mk_node("ViewPathSimple", 1, $1); }
314
314
| path_no_types_allowed MOD_SEP '{' '}' { $$ = mk_node("ViewPathList", 2, $1, mk_atom("ViewPathListEmpty")); }
315
- | MOD_SEP '{' '}' { $$ = mk_node("ViewPathList", 1, mk_atom("ViewPathListEmpty")); }
316
315
| path_no_types_allowed MOD_SEP '{' idents_or_self '}' { $$ = mk_node("ViewPathList", 2, $1, $4); }
317
- | MOD_SEP '{' idents_or_self '}' { $$ = mk_node("ViewPathList", 1, $3); }
318
316
| path_no_types_allowed MOD_SEP '{' idents_or_self ',' '}' { $$ = mk_node("ViewPathList", 2, $1, $4); }
319
- | MOD_SEP '{' idents_or_self ',' '}' { $$ = mk_node("ViewPathList", 1, $3); }
320
317
| path_no_types_allowed MOD_SEP '*' { $$ = mk_node("ViewPathGlob", 1, $1); }
321
318
| '{' '}' { $$ = mk_atom("ViewPathListEmpty"); }
322
319
| '{' idents_or_self '}' { $$ = mk_node("ViewPathList", 1, $2); }
@@ -336,7 +333,7 @@ block_item
336
333
;
337
334
338
335
maybe_ty_ascription
339
- : ':' ty_sum { $$ = $2; }
336
+ : ':' ty { $$ = $2; }
340
337
| %empty { $$ = mk_none(); }
341
338
;
342
339
@@ -514,7 +511,7 @@ trait_item
514
511
;
515
512
516
513
trait_const
517
- : maybe_outer_attrs CONST ident maybe_ty_ascription maybe_const_default ';' { $$ = mk_node("ConstTraitItem", 4 , $1, $3, $4, $5 ); }
514
+ : maybe_outer_attrs CONST ident maybe_const_default ';' { $$ = mk_node("ConstTraitItem", 3 , $1, $3, $4); }
518
515
;
519
516
520
517
maybe_const_default
@@ -593,11 +590,11 @@ item_impl
593
590
{
594
591
$$ = mk_node("ItemImpl", 6, $1, $3, 5, $6, $9, $10);
595
592
}
596
- | maybe_unsafe IMPL generic_params trait_ref FOR ty_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
593
+ | maybe_unsafe IMPL generic_params trait_ref FOR ty maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
597
594
{
598
595
$$ = mk_node("ItemImpl", 6, $3, $4, $6, $7, $9, $10);
599
596
}
600
- | maybe_unsafe IMPL generic_params '!' trait_ref FOR ty_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
597
+ | maybe_unsafe IMPL generic_params '!' trait_ref FOR ty maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
601
598
{
602
599
$$ = mk_node("ItemImplNeg", 7, $1, $3, $5, $7, $8, $10, $11);
603
600
}
@@ -623,7 +620,7 @@ impl_items
623
620
624
621
impl_item
625
622
: impl_method
626
- | attrs_and_vis item_macro { $$ = mk_node("ImplMacroItem", 2, $1, $2); }
623
+ | item_macro
627
624
| impl_const
628
625
| impl_type
629
626
;
@@ -701,7 +698,7 @@ params
701
698
;
702
699
703
700
param
704
- : pat ':' ty_sum { $$ = mk_node("Arg", 2, $1, $3); }
701
+ : pat ':' ty { $$ = mk_node("Arg", 2, $1, $3); }
705
702
;
706
703
707
704
inferrable_params
912
909
| ident '@' pat { $$ = mk_node("PatIdent", 3, mk_node("BindByValue", 1, mk_atom("MutImmutable")), $1, $3); }
913
910
| binding_mode ident '@' pat { $$ = mk_node("PatIdent", 3, $1, $2, $4); }
914
911
| BOX pat { $$ = mk_node("PatUniq", 1, $2); }
915
- | '<' ty_sum maybe_as_trait_ref '>' MOD_SEP ident { $$ = mk_node("PatQualifiedPath", 3, $2, $3, $6); }
916
- | SHL ty_sum maybe_as_trait_ref '>' MOD_SEP ident maybe_as_trait_ref '>' MOD_SEP ident
917
- {
918
- $$ = mk_node("PatQualifiedPath", 3, mk_node("PatQualifiedPath", 3, $2, $3, $6), $7, $10);
919
- }
920
912
;
921
913
922
914
pats_or
@@ -989,11 +981,11 @@ pat_vec_elts
989
981
ty
990
982
: ty_prim
991
983
| ty_closure
992
- | '<' ty_sum maybe_as_trait_ref '>' MOD_SEP ident { $$ = mk_node("TyQualifiedPath", 3, $2, $3 , $6 ); }
993
- | SHL ty_sum maybe_as_trait_ref '>' MOD_SEP ident maybe_as_trait_ref '>' MOD_SEP ident { $$ = mk_node("TyQualifiedPath", 3, mk_node("TyQualifiedPath", 3, $2, $3 , $6 ), $7 , $10 ); }
994
- | '(' ty_sums ')' { $$ = mk_node("TyTup", 1, $2); }
995
- | '(' ty_sums ',' ')' { $$ = mk_node("TyTup", 1, $2); }
996
- | '(' ')' { $$ = mk_atom("TyNil"); }
984
+ | '<' ty_sum AS trait_ref '>' MOD_SEP ident { $$ = mk_node("TyQualifiedPath", 3, $2, $4 , $7 ); }
985
+ | SHL ty_sum AS trait_ref '>' MOD_SEP ident AS trait_ref '>' MOD_SEP ident { $$ = mk_node("TyQualifiedPath", 3, mk_node("TyQualifiedPath", 3, $2, $4 , $7 ), $9 , $12 ); }
986
+ | '(' ty_sums ')' { $$ = mk_node("TyTup", 1, $2); }
987
+ | '(' ty_sums ',' ')' { $$ = mk_node("TyTup", 1, $2); }
988
+ | '(' ')' { $$ = mk_atom("TyNil"); }
997
989
;
998
990
999
991
ty_prim
@@ -1559,7 +1551,11 @@ nonblock_prefix_expr
1559
1551
;
1560
1552
1561
1553
expr_qualified_path
1562
- : '<' ty_sum maybe_as_trait_ref '>' MOD_SEP ident maybe_qpath_params
1554
+ : '<' ty_sum maybe_as_trait_ref '>' MOD_SEP ident
1555
+ {
1556
+ $$ = mk_node("ExprQualifiedPath", 3, $2, $3, $6);
1557
+ }
1558
+ | '<' ty_sum maybe_as_trait_ref '>' MOD_SEP ident generic_args
1563
1559
{
1564
1560
$$ = mk_node("ExprQualifiedPath", 4, $2, $3, $6, $7);
1565
1561
}
@@ -1580,11 +1576,6 @@ expr_qualified_path
1580
1576
$$ = mk_node("ExprQualifiedPath", 4, mk_node("ExprQualifiedPath", 4, $2, $3, $6, $7), $8, $11, $12);
1581
1577
}
1582
1578
1583
- maybe_qpath_params
1584
- : MOD_SEP generic_args { $$ = $2; }
1585
- | %empty { $$ = mk_none(); }
1586
- ;
1587
-
1588
1579
maybe_as_trait_ref
1589
1580
: AS trait_ref { $$ = $2; }
1590
1581
| %empty { $$ = mk_none(); }
@@ -1675,10 +1666,8 @@ block_expr
1675
1666
1676
1667
full_block_expr
1677
1668
: block_expr
1678
- | full_block_expr '.' path_generic_args_with_colons %prec IDENT { $$ = mk_node("ExprField", 2, $1, $3); }
1679
- | full_block_expr '.' path_generic_args_with_colons '[' maybe_expr ']' { $$ = mk_node("ExprIndex", 3, $1, $3, $5); }
1680
- | full_block_expr '.' path_generic_args_with_colons '(' maybe_exprs ')' { $$ = mk_node("ExprCall", 3, $1, $3, $5); }
1681
- | full_block_expr '.' LIT_INTEGER { $$ = mk_node("ExprTupleIndex", 1, $1); }
1669
+ | full_block_expr '.' path_generic_args_with_colons { $$ = mk_node("ExprField", 2, $1, $3); }
1670
+ | full_block_expr '.' LIT_INTEGER { $$ = mk_node("ExprTupleIndex", 1, $1); }
1682
1671
;
1683
1672
1684
1673
expr_match
0 commit comments