Skip to content

Commit 498737c

Browse files
committed
Address review comments
1 parent cf71538 commit 498737c

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

src/librustc_parse/lib.rs

+2
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ pub fn parse_in_attr<'a, T>(
277277
) -> PResult<'a, T> {
278278
let mut parser = Parser::new(
279279
sess,
280+
// FIXME(#66940, Centril | petrochenkov): refactor this function so it doesn't
281+
// require reconstructing and immediately re-parsing delimiters.
280282
attr.get_normal_item().args.outer_tokens(),
281283
None,
282284
false,

src/librustc_parse/parser/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,8 @@ impl<'a> Parser<'a> {
10241024
self.check(&token::OpenDelim(DelimToken::Brace)) {
10251025
match self.parse_token_tree() {
10261026
TokenTree::Delimited(dspan, delim, tokens) =>
1027-
MacArgs::Delimited(dspan, MacDelimiter::from_token(delim), tokens),
1027+
// We've confirmed above that there is a delimiter so unwrapping is OK.
1028+
MacArgs::Delimited(dspan, MacDelimiter::from_token(delim).unwrap(), tokens),
10281029
_ => unreachable!(),
10291030
}
10301031
} else if !delimited_only {

src/libsyntax/ast.rs

+13-9
Original file line numberDiff line numberDiff line change
@@ -1396,8 +1396,12 @@ pub enum MacArgs {
13961396
/// Delimited arguments - `#[attr()/[]/{}]` or `mac!()/[]/{}`.
13971397
Delimited(DelimSpan, MacDelimiter, TokenStream),
13981398
/// Arguments of a key-value attribute - `#[attr = "value"]`.
1399-
/// Span belongs to the `=` token, token stream is the "value".
1400-
Eq(Span, TokenStream),
1399+
Eq(
1400+
/// Span of the `=` token.
1401+
Span,
1402+
/// Token stream of the "value".
1403+
TokenStream,
1404+
),
14011405
}
14021406

14031407
impl MacArgs {
@@ -1421,13 +1425,13 @@ impl MacArgs {
14211425
pub fn inner_tokens(&self) -> TokenStream {
14221426
match self {
14231427
MacArgs::Empty => TokenStream::default(),
1424-
MacArgs::Delimited(.., tokens) => tokens.clone(),
1428+
MacArgs::Delimited(.., tokens) |
14251429
MacArgs::Eq(.., tokens) => tokens.clone(),
14261430
}
14271431
}
14281432

14291433
/// Tokens together with the delimiters or `=`.
1430-
/// Use of this functions generally means that something suboptimal or hacky is happening.
1434+
/// Use of this method generally means that something suboptimal or hacky is happening.
14311435
pub fn outer_tokens(&self) -> TokenStream {
14321436
match *self {
14331437
MacArgs::Empty => TokenStream::default(),
@@ -1461,12 +1465,12 @@ impl MacDelimiter {
14611465
}
14621466
}
14631467

1464-
pub fn from_token(delim: DelimToken) -> MacDelimiter {
1468+
pub fn from_token(delim: DelimToken) -> Option<MacDelimiter> {
14651469
match delim {
1466-
token::Paren => MacDelimiter::Parenthesis,
1467-
token::Bracket => MacDelimiter::Bracket,
1468-
token::Brace => MacDelimiter::Brace,
1469-
token::NoDelim => panic!("expected a delimiter"),
1470+
token::Paren => Some(MacDelimiter::Parenthesis),
1471+
token::Bracket => Some(MacDelimiter::Bracket),
1472+
token::Brace => Some(MacDelimiter::Brace),
1473+
token::NoDelim => None,
14701474
}
14711475
}
14721476
}

0 commit comments

Comments
 (0)