Skip to content

Commit aea9749

Browse files
committed
Move TokenStream::to_string helpers inside the method
1 parent 93c9b34 commit aea9749

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

crates/proc_macro_srv/src/rustc_server.rs

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -199,39 +199,43 @@ pub mod token_stream {
199199

200200
impl ToString for TokenStream {
201201
fn to_string(&self) -> String {
202-
tokentrees_to_text(&self.token_trees[..])
203-
}
204-
}
202+
return tokentrees_to_text(&self.token_trees[..]);
203+
204+
fn tokentrees_to_text(tkns: &[tt::TokenTree]) -> String {
205+
tkns.iter()
206+
.fold((String::new(), true), |(last, last_to_joint), tkn| {
207+
let s = [last, tokentree_to_text(tkn)].join(if last_to_joint {
208+
""
209+
} else {
210+
" "
211+
});
212+
let mut is_joint = false;
213+
if let tt::TokenTree::Leaf(tt::Leaf::Punct(punct)) = tkn {
214+
if punct.spacing == tt::Spacing::Joint {
215+
is_joint = true;
216+
}
217+
}
218+
(s, is_joint)
219+
})
220+
.0
221+
}
205222

206-
fn tokentrees_to_text(tkns: &[tt::TokenTree]) -> String {
207-
tkns.iter()
208-
.fold((String::new(), true), |(last, last_to_joint), tkn| {
209-
let s = [last, tokentree_to_text(tkn)].join(if last_to_joint { "" } else { " " });
210-
let mut is_joint = false;
211-
if let tt::TokenTree::Leaf(tt::Leaf::Punct(punct)) = tkn {
212-
if punct.spacing == tt::Spacing::Joint {
213-
is_joint = true;
223+
fn tokentree_to_text(tkn: &tt::TokenTree) -> String {
224+
match tkn {
225+
tt::TokenTree::Leaf(tt::Leaf::Ident(ident)) => ident.text.clone().into(),
226+
tt::TokenTree::Leaf(tt::Leaf::Literal(literal)) => literal.text.clone().into(),
227+
tt::TokenTree::Leaf(tt::Leaf::Punct(punct)) => format!("{}", punct.char),
228+
tt::TokenTree::Subtree(subtree) => {
229+
let content = tokentrees_to_text(&subtree.token_trees);
230+
let (open, close) = match subtree.delimiter.map(|it| it.kind) {
231+
None => ("", ""),
232+
Some(tt::DelimiterKind::Brace) => ("{", "}"),
233+
Some(tt::DelimiterKind::Parenthesis) => ("(", ")"),
234+
Some(tt::DelimiterKind::Bracket) => ("[", "]"),
235+
};
236+
format!("{}{}{}", open, content, close)
214237
}
215238
}
216-
(s, is_joint)
217-
})
218-
.0
219-
}
220-
221-
fn tokentree_to_text(tkn: &tt::TokenTree) -> String {
222-
match tkn {
223-
tt::TokenTree::Leaf(tt::Leaf::Ident(ident)) => ident.text.clone().into(),
224-
tt::TokenTree::Leaf(tt::Leaf::Literal(literal)) => literal.text.clone().into(),
225-
tt::TokenTree::Leaf(tt::Leaf::Punct(punct)) => format!("{}", punct.char),
226-
tt::TokenTree::Subtree(subtree) => {
227-
let content = tokentrees_to_text(&subtree.token_trees);
228-
let (open, close) = match subtree.delimiter.map(|it| it.kind) {
229-
None => ("", ""),
230-
Some(tt::DelimiterKind::Brace) => ("{", "}"),
231-
Some(tt::DelimiterKind::Parenthesis) => ("(", ")"),
232-
Some(tt::DelimiterKind::Bracket) => ("[", "]"),
233-
};
234-
format!("{}{}{}", open, content, close)
235239
}
236240
}
237241
}

0 commit comments

Comments
 (0)