File tree Expand file tree Collapse file tree 4 files changed +23
-6
lines changed
src/tools/rust-analyzer/crates
proc-macro-srv/src/server_impl Expand file tree Collapse file tree 4 files changed +23
-6
lines changed Original file line number Diff line number Diff line change @@ -142,7 +142,13 @@ impl server::TokenStream for RaSpanServer {
142142 stream. is_empty ( )
143143 }
144144 fn from_str ( & mut self , src : & str ) -> Self :: TokenStream {
145- Self :: TokenStream :: from_str ( src, self . call_site ) . expect ( "cannot parse string" )
145+ Self :: TokenStream :: from_str ( src, self . call_site ) . unwrap_or_else ( |e| {
146+ Self :: TokenStream :: from_str (
147+ & format ! ( "compile_error!(\" failed to parse str to token stream: {e}\" )" ) ,
148+ self . call_site ,
149+ )
150+ . unwrap ( )
151+ } )
146152 }
147153 fn to_string ( & mut self , stream : & Self :: TokenStream ) -> String {
148154 stream. to_string ( )
@@ -501,12 +507,17 @@ mod tests {
501507 close: span,
502508 kind: tt:: DelimiterKind :: Brace ,
503509 } ,
504- token_trees: Box :: new( [ ] ) ,
510+ token_trees: Box :: new( [ tt:: TokenTree :: Leaf ( tt:: Leaf :: Literal ( tt:: Literal {
511+ kind: tt:: LitKind :: Str ,
512+ symbol: Symbol :: intern( "string" ) ,
513+ suffix: None ,
514+ span,
515+ } ) ) ] ) ,
505516 } ) ,
506517 ] ,
507518 } ;
508519
509- assert_eq ! ( s. to_string( ) , "struct T {}" ) ;
520+ assert_eq ! ( s. to_string( ) , "struct T {\" string \" }" ) ;
510521 }
511522
512523 #[ test]
Original file line number Diff line number Diff line change @@ -131,7 +131,13 @@ impl server::TokenStream for TokenIdServer {
131131 stream. is_empty ( )
132132 }
133133 fn from_str ( & mut self , src : & str ) -> Self :: TokenStream {
134- Self :: TokenStream :: from_str ( src, self . call_site ) . expect ( "cannot parse string" )
134+ Self :: TokenStream :: from_str ( src, self . call_site ) . unwrap_or_else ( |e| {
135+ Self :: TokenStream :: from_str (
136+ & format ! ( "compile_error!(\" failed to parse str to token stream: {e}\" )" ) ,
137+ self . call_site ,
138+ )
139+ . unwrap ( )
140+ } )
135141 }
136142 fn to_string ( & mut self , stream : & Self :: TokenStream ) -> String {
137143 stream. to_string ( )
Original file line number Diff line number Diff line change @@ -131,7 +131,7 @@ pub(super) mod token_stream {
131131 call_site,
132132 src,
133133 )
134- . ok_or ( "lexing error" ) ?;
134+ . ok_or_else ( || format ! ( "lexing error: {src}" ) ) ?;
135135
136136 Ok ( TokenStream :: with_subtree ( subtree) )
137137 }
Original file line number Diff line number Diff line change @@ -603,7 +603,7 @@ pub fn pretty<S>(tkns: &[TokenTree<S>]) -> String {
603603 TokenTree :: Leaf ( Leaf :: Ident ( ident) ) => {
604604 format ! ( "{}{}" , ident. is_raw. as_str( ) , ident. sym)
605605 }
606- TokenTree :: Leaf ( Leaf :: Literal ( literal) ) => literal . symbol . as_str ( ) . to_owned ( ) ,
606+ TokenTree :: Leaf ( Leaf :: Literal ( literal) ) => format ! ( "{literal}" ) ,
607607 TokenTree :: Leaf ( Leaf :: Punct ( punct) ) => format ! ( "{}" , punct. char ) ,
608608 TokenTree :: Subtree ( subtree) => {
609609 let content = pretty ( & subtree. token_trees ) ;
You can’t perform that action at this time.
0 commit comments