@@ -535,10 +535,11 @@ maybe_unsafe
535535| %empty { $$ = mk_none(); }
536536;
537537
538- maybe_default_impl
539- : IMPL { $$ = mk_none(); }
540- | DEFAULT IMPL { $$ = $1 }
541- ;
538+ maybe_default_maybe_unsafe
539+ : DEFAULT UNSAFE { $$ = mk_atom("DefaultUnsafe"); }
540+ | DEFAULT { $$ = mk_atom("Default"); }
541+ | UNSAFE { $$ = mk_atom("Unsafe"); }
542+ | %empty { $$ = mk_none(); }
542543
543544trait_method
544545: type_method { $$ = mk_node("Required", 1, $1); }
@@ -594,27 +595,27 @@ impl_method
594595// they are ambiguous with traits. We do the same here, regrettably,
595596// by splitting ty into ty and ty_prim.
596597item_impl
597- : maybe_unsafe maybe_default_impl generic_params ty_prim_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
598+ : maybe_default_maybe_unsafe IMPL generic_params ty_prim_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
598599{
599- $$ = mk_node("ItemImpl", 6, $1, $3, $4, $5, $7, $8, $2 );
600+ $$ = mk_node("ItemImpl", 6, $1, $3, $4, $5, $7, $8);
600601}
601- | maybe_unsafe maybe_default_impl generic_params '(' ty ')' maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
602+ | maybe_default_maybe_unsafe IMPL generic_params '(' ty ')' maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
602603{
603- $$ = mk_node("ItemImpl", 6, $1, $3, 5, $6, $9, $10, $2 );
604+ $$ = mk_node("ItemImpl", 6, $1, $3, 5, $6, $9, $10);
604605}
605- | maybe_unsafe maybe_default_impl generic_params trait_ref FOR ty_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
606+ | maybe_default_maybe_unsafe IMPL generic_params trait_ref FOR ty_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
606607{
607- $$ = mk_node("ItemImpl", 6, $3, $4, $6, $7, $9, $10, $2 );
608+ $$ = mk_node("ItemImpl", 6, $3, $4, $6, $7, $9, $10);
608609}
609- | maybe_unsafe maybe_default_impl generic_params '!' trait_ref FOR ty_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
610+ | maybe_default_maybe_unsafe IMPL generic_params '!' trait_ref FOR ty_sum maybe_where_clause '{' maybe_inner_attrs maybe_impl_items '}'
610611{
611- $$ = mk_node("ItemImplNeg", 7, $1, $3, $5, $7, $8, $10, $11, $2 );
612+ $$ = mk_node("ItemImplNeg", 7, $1, $3, $5, $7, $8, $10, $11);
612613}
613- | maybe_unsafe maybe_default_impl generic_params trait_ref FOR DOTDOT '{' '}'
614+ | maybe_default_maybe_unsafe IMPL generic_params trait_ref FOR DOTDOT '{' '}'
614615{
615616 $$ = mk_node("ItemImplDefault", 3, $1, $3, $4);
616617}
617- | maybe_unsafe maybe_default_impl generic_params '!' trait_ref FOR DOTDOT '{' '}'
618+ | maybe_default_maybe_unsafe IMPL generic_params '!' trait_ref FOR DOTDOT '{' '}'
618619{
619620 $$ = mk_node("ItemImplDefaultNeg", 3, $1, $3, $4);
620621}
0 commit comments