@@ -34,38 +34,39 @@ pub(crate) fn generate_derive(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opt
3434 . map ( |( _name, arg) | arg)
3535 . next ( ) ;
3636
37- let ( derive, delimiter) = match & derive_attr {
38- None => {
39- let derive = make:: attr_outer ( make:: meta_token_tree (
40- make:: ext:: ident_path ( "derive" ) ,
41- make:: token_tree ( T ! [ '(' ] , vec ! [ ] ) . clone_for_update ( ) ,
42- ) )
43- . clone_for_update ( ) ;
44- let delimiter = derive. meta ( ) ?. token_tree ( ) ?. r_paren_token ( ) ?;
45- ( derive, delimiter)
46- }
47- Some ( tt) => {
48- // Create an outer attribute just so that we avoid using
49- // unwrap in edit closure.
50- let _derive = make:: attr_outer ( make:: meta_token_tree (
51- make:: ext:: ident_path ( "derive" ) ,
52- make:: token_tree ( T ! [ '(' ] , vec ! [ ] ) ,
53- ) ) ;
54- ( _derive, tt. right_delimiter_token ( ) ?)
55- }
37+ let delimiter = match & derive_attr {
38+ None => None ,
39+ Some ( tt) => Some ( tt. right_delimiter_token ( ) ?) ,
5640 } ;
5741
5842 acc. add ( AssistId ( "generate_derive" , AssistKind :: Generate ) , "Add `#[derive]`" , target, |edit| {
5943 match derive_attr {
6044 None => {
45+ let derive = make:: attr_outer ( make:: meta_token_tree (
46+ make:: ext:: ident_path ( "derive" ) ,
47+ make:: token_tree ( T ! [ '(' ] , vec ! [ ] ) . clone_for_update ( ) ,
48+ ) )
49+ . clone_for_update ( ) ;
50+
6151 let nominal = edit. make_mut ( nominal) ;
6252 nominal. add_attr ( derive. clone ( ) ) ;
6353
54+ let delimiter = derive
55+ . meta ( )
56+ . expect ( "make::attr_outer was expected to have Meta" )
57+ . token_tree ( )
58+ . expect ( "failed to get token tree out of Meta" )
59+ . r_paren_token ( )
60+ . expect ( "make::attr_outer was expected to have a R_PAREN" ) ;
61+
6462 edit. add_tabstop_before_token ( cap, delimiter) ;
6563 }
6664 Some ( _) => {
6765 // Just move the cursor.
68- edit. add_tabstop_before_token ( cap, delimiter) ;
66+ edit. add_tabstop_before_token (
67+ cap,
68+ delimiter. expect ( "Right delim token could not be found." ) ,
69+ ) ;
6970 }
7071 } ;
7172 } )
0 commit comments