Avoid producing NoDelim
values in MacArgs::delim()
.
This commit is contained in:
parent
f0bbc782ac
commit
6b367a0532
4 changed files with 44 additions and 38 deletions
|
@ -1542,10 +1542,10 @@ pub enum MacArgs {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MacArgs {
|
impl MacArgs {
|
||||||
pub fn delim(&self) -> DelimToken {
|
pub fn delim(&self) -> Option<DelimToken> {
|
||||||
match self {
|
match self {
|
||||||
MacArgs::Delimited(_, delim, _) => delim.to_token(),
|
MacArgs::Delimited(_, delim, _) => Some(delim.to_token()),
|
||||||
MacArgs::Empty | MacArgs::Eq(..) => token::NoDelim,
|
MacArgs::Empty | MacArgs::Eq(..) => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -464,7 +464,7 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
|
||||||
Some(MacHeader::Path(&item.path)),
|
Some(MacHeader::Path(&item.path)),
|
||||||
false,
|
false,
|
||||||
None,
|
None,
|
||||||
delim.to_token(),
|
Some(delim.to_token()),
|
||||||
tokens,
|
tokens,
|
||||||
true,
|
true,
|
||||||
span,
|
span,
|
||||||
|
@ -530,7 +530,7 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
|
||||||
None,
|
None,
|
||||||
false,
|
false,
|
||||||
None,
|
None,
|
||||||
*delim,
|
Some(*delim),
|
||||||
tts,
|
tts,
|
||||||
convert_dollar_crate,
|
convert_dollar_crate,
|
||||||
dspan.entire(),
|
dspan.entire(),
|
||||||
|
@ -556,12 +556,12 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
|
||||||
header: Option<MacHeader<'_>>,
|
header: Option<MacHeader<'_>>,
|
||||||
has_bang: bool,
|
has_bang: bool,
|
||||||
ident: Option<Ident>,
|
ident: Option<Ident>,
|
||||||
delim: DelimToken,
|
delim: Option<DelimToken>,
|
||||||
tts: &TokenStream,
|
tts: &TokenStream,
|
||||||
convert_dollar_crate: bool,
|
convert_dollar_crate: bool,
|
||||||
span: Span,
|
span: Span,
|
||||||
) {
|
) {
|
||||||
if delim == DelimToken::Brace {
|
if delim == Some(DelimToken::Brace) {
|
||||||
self.cbox(INDENT_UNIT);
|
self.cbox(INDENT_UNIT);
|
||||||
}
|
}
|
||||||
match header {
|
match header {
|
||||||
|
@ -577,7 +577,7 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
|
||||||
self.print_ident(ident);
|
self.print_ident(ident);
|
||||||
}
|
}
|
||||||
match delim {
|
match delim {
|
||||||
DelimToken::Brace => {
|
Some(DelimToken::Brace) => {
|
||||||
if header.is_some() || has_bang || ident.is_some() {
|
if header.is_some() || has_bang || ident.is_some() {
|
||||||
self.nbsp();
|
self.nbsp();
|
||||||
}
|
}
|
||||||
|
@ -585,23 +585,25 @@ pub trait PrintState<'a>: std::ops::Deref<Target = pp::Printer> + std::ops::Dere
|
||||||
if !tts.is_empty() {
|
if !tts.is_empty() {
|
||||||
self.space();
|
self.space();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
let token_str = self.token_kind_to_string(&token::OpenDelim(delim));
|
|
||||||
self.word(token_str)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self.ibox(0);
|
self.ibox(0);
|
||||||
self.print_tts(tts, convert_dollar_crate);
|
self.print_tts(tts, convert_dollar_crate);
|
||||||
self.end();
|
self.end();
|
||||||
match delim {
|
|
||||||
DelimToken::Brace => {
|
|
||||||
let empty = tts.is_empty();
|
let empty = tts.is_empty();
|
||||||
self.bclose(span, empty);
|
self.bclose(span, empty);
|
||||||
}
|
}
|
||||||
_ => {
|
Some(delim) => {
|
||||||
|
let token_str = self.token_kind_to_string(&token::OpenDelim(delim));
|
||||||
|
self.word(token_str);
|
||||||
|
self.ibox(0);
|
||||||
|
self.print_tts(tts, convert_dollar_crate);
|
||||||
|
self.end();
|
||||||
let token_str = self.token_kind_to_string(&token::CloseDelim(delim));
|
let token_str = self.token_kind_to_string(&token::CloseDelim(delim));
|
||||||
self.word(token_str)
|
self.word(token_str);
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
self.ibox(0);
|
||||||
|
self.print_tts(tts, convert_dollar_crate);
|
||||||
|
self.end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,13 +164,17 @@ impl<'a> Parser<'a> {
|
||||||
let delim = args.delim();
|
let delim = args.delim();
|
||||||
let hi = self.prev_token.span;
|
let hi = self.prev_token.span;
|
||||||
|
|
||||||
let style =
|
let style = match delim {
|
||||||
if delim == token::Brace { MacStmtStyle::Braces } else { MacStmtStyle::NoBraces };
|
Some(token::Brace) => MacStmtStyle::Braces,
|
||||||
|
Some(_) => MacStmtStyle::NoBraces,
|
||||||
|
None => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
let mac = MacCall { path, args, prior_type_ascription: self.last_type_ascription };
|
let mac = MacCall { path, args, prior_type_ascription: self.last_type_ascription };
|
||||||
|
|
||||||
let kind =
|
let kind = if (style == MacStmtStyle::Braces
|
||||||
if (delim == token::Brace && self.token != token::Dot && self.token != token::Question)
|
&& self.token != token::Dot
|
||||||
|
&& self.token != token::Question)
|
||||||
|| self.token == token::Semi
|
|| self.token == token::Semi
|
||||||
|| self.token == token::Eof
|
|| self.token == token::Eof
|
||||||
{
|
{
|
||||||
|
|
|
@ -1325,7 +1325,7 @@ pub(crate) fn can_be_overflowed_expr(
|
||||||
}
|
}
|
||||||
ast::ExprKind::MacCall(ref mac) => {
|
ast::ExprKind::MacCall(ref mac) => {
|
||||||
match (
|
match (
|
||||||
rustc_ast::ast::MacDelimiter::from_token(mac.args.delim()),
|
rustc_ast::ast::MacDelimiter::from_token(mac.args.delim().unwrap()),
|
||||||
context.config.overflow_delimited_expr(),
|
context.config.overflow_delimited_expr(),
|
||||||
) {
|
) {
|
||||||
(Some(ast::MacDelimiter::Bracket), true)
|
(Some(ast::MacDelimiter::Bracket), true)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue