File tree 4 files changed +23
-6
lines changed
src/tools/rust-analyzer/crates
proc-macro-srv/src/server_impl
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 {
142
142
stream. is_empty ( )
143
143
}
144
144
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
+ } )
146
152
}
147
153
fn to_string ( & mut self , stream : & Self :: TokenStream ) -> String {
148
154
stream. to_string ( )
@@ -501,12 +507,17 @@ mod tests {
501
507
close: span,
502
508
kind: tt:: DelimiterKind :: Brace ,
503
509
} ,
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
+ } ) ) ] ) ,
505
516
} ) ,
506
517
] ,
507
518
} ;
508
519
509
- assert_eq ! ( s. to_string( ) , "struct T {}" ) ;
520
+ assert_eq ! ( s. to_string( ) , "struct T {\" string \" }" ) ;
510
521
}
511
522
512
523
#[ test]
Original file line number Diff line number Diff line change @@ -131,7 +131,13 @@ impl server::TokenStream for TokenIdServer {
131
131
stream. is_empty ( )
132
132
}
133
133
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
+ } )
135
141
}
136
142
fn to_string ( & mut self , stream : & Self :: TokenStream ) -> String {
137
143
stream. to_string ( )
Original file line number Diff line number Diff line change @@ -131,7 +131,7 @@ pub(super) mod token_stream {
131
131
call_site,
132
132
src,
133
133
)
134
- . ok_or ( "lexing error" ) ?;
134
+ . ok_or_else ( || format ! ( "lexing error: {src}" ) ) ?;
135
135
136
136
Ok ( TokenStream :: with_subtree ( subtree) )
137
137
}
Original file line number Diff line number Diff line change @@ -603,7 +603,7 @@ pub fn pretty<S>(tkns: &[TokenTree<S>]) -> String {
603
603
TokenTree :: Leaf ( Leaf :: Ident ( ident) ) => {
604
604
format ! ( "{}{}" , ident. is_raw. as_str( ) , ident. sym)
605
605
}
606
- TokenTree :: Leaf ( Leaf :: Literal ( literal) ) => literal . symbol . as_str ( ) . to_owned ( ) ,
606
+ TokenTree :: Leaf ( Leaf :: Literal ( literal) ) => format ! ( "{literal}" ) ,
607
607
TokenTree :: Leaf ( Leaf :: Punct ( punct) ) => format ! ( "{}" , punct. char ) ,
608
608
TokenTree :: Subtree ( subtree) => {
609
609
let content = pretty ( & subtree. token_trees ) ;
You can’t perform that action at this time.
0 commit comments