Skip to content

Commit 1e8dc45

Browse files
committed
Rearrange to_internal.
`TokenTree::Punct` is handled outside the `match`. This commits moves it inside the `match`, avoiding the need for the `return`s and making it easier to read.
1 parent 0922559 commit 1e8dc45

File tree

1 file changed

+40
-41
lines changed

1 file changed

+40
-41
lines changed

compiler/rustc_expand/src/proc_macro_server.rs

+40-41
Original file line numberDiff line numberDiff line change
@@ -246,18 +246,49 @@ impl ToInternal<TokenStream> for (TokenTree<TokenStream, Span, Symbol>, &mut Rus
246246
use rustc_ast::token::*;
247247

248248
let (tree, rustc) = self;
249-
let (ch, joint, span) = match tree {
250-
TokenTree::Punct(Punct { ch, joint, span }) => (ch, joint, span),
249+
match tree {
250+
TokenTree::Punct(Punct { ch, joint, span }) => {
251+
let kind = match ch {
252+
b'=' => Eq,
253+
b'<' => Lt,
254+
b'>' => Gt,
255+
b'!' => Not,
256+
b'~' => Tilde,
257+
b'+' => BinOp(Plus),
258+
b'-' => BinOp(Minus),
259+
b'*' => BinOp(Star),
260+
b'/' => BinOp(Slash),
261+
b'%' => BinOp(Percent),
262+
b'^' => BinOp(Caret),
263+
b'&' => BinOp(And),
264+
b'|' => BinOp(Or),
265+
b'@' => At,
266+
b'.' => Dot,
267+
b',' => Comma,
268+
b';' => Semi,
269+
b':' => Colon,
270+
b'#' => Pound,
271+
b'$' => Dollar,
272+
b'?' => Question,
273+
b'\'' => SingleQuote,
274+
_ => unreachable!(),
275+
};
276+
if joint {
277+
tokenstream::TokenStream::token_joint(kind, span)
278+
} else {
279+
tokenstream::TokenStream::token_alone(kind, span)
280+
}
281+
}
251282
TokenTree::Group(Group { delimiter, stream, span: DelimSpan { open, close, .. } }) => {
252-
return tokenstream::TokenStream::delimited(
283+
tokenstream::TokenStream::delimited(
253284
tokenstream::DelimSpan { open, close },
254285
delimiter.to_internal(),
255286
stream.unwrap_or_default(),
256-
);
287+
)
257288
}
258289
TokenTree::Ident(self::Ident { sym, is_raw, span }) => {
259290
rustc.sess().symbol_gallery.insert(sym, span);
260-
return tokenstream::TokenStream::token_alone(Ident(sym, is_raw), span);
291+
tokenstream::TokenStream::token_alone(Ident(sym, is_raw), span)
261292
}
262293
TokenTree::Literal(self::Literal {
263294
kind: self::LitKind::Integer,
@@ -270,7 +301,7 @@ impl ToInternal<TokenStream> for (TokenTree<TokenStream, Span, Symbol>, &mut Rus
270301
let integer = TokenKind::lit(token::Integer, symbol, suffix);
271302
let a = tokenstream::TokenTree::token_alone(minus, span);
272303
let b = tokenstream::TokenTree::token_alone(integer, span);
273-
return [a, b].into_iter().collect();
304+
[a, b].into_iter().collect()
274305
}
275306
TokenTree::Literal(self::Literal {
276307
kind: self::LitKind::Float,
@@ -283,46 +314,14 @@ impl ToInternal<TokenStream> for (TokenTree<TokenStream, Span, Symbol>, &mut Rus
283314
let float = TokenKind::lit(token::Float, symbol, suffix);
284315
let a = tokenstream::TokenTree::token_alone(minus, span);
285316
let b = tokenstream::TokenTree::token_alone(float, span);
286-
return [a, b].into_iter().collect();
317+
[a, b].into_iter().collect()
287318
}
288319
TokenTree::Literal(self::Literal { kind, symbol, suffix, span }) => {
289-
return tokenstream::TokenStream::token_alone(
320+
tokenstream::TokenStream::token_alone(
290321
TokenKind::lit(kind.to_internal(), symbol, suffix),
291322
span,
292-
);
323+
)
293324
}
294-
};
295-
296-
let kind = match ch {
297-
b'=' => Eq,
298-
b'<' => Lt,
299-
b'>' => Gt,
300-
b'!' => Not,
301-
b'~' => Tilde,
302-
b'+' => BinOp(Plus),
303-
b'-' => BinOp(Minus),
304-
b'*' => BinOp(Star),
305-
b'/' => BinOp(Slash),
306-
b'%' => BinOp(Percent),
307-
b'^' => BinOp(Caret),
308-
b'&' => BinOp(And),
309-
b'|' => BinOp(Or),
310-
b'@' => At,
311-
b'.' => Dot,
312-
b',' => Comma,
313-
b';' => Semi,
314-
b':' => Colon,
315-
b'#' => Pound,
316-
b'$' => Dollar,
317-
b'?' => Question,
318-
b'\'' => SingleQuote,
319-
_ => unreachable!(),
320-
};
321-
322-
if joint {
323-
tokenstream::TokenStream::token_joint(kind, span)
324-
} else {
325-
tokenstream::TokenStream::token_alone(kind, span)
326325
}
327326
}
328327
}

0 commit comments

Comments
 (0)