1
Fork 0

Invert is_top_level to avoid negation.

This commit is contained in:
Nicholas Nethercote 2022-10-01 07:57:22 +10:00
parent a822d08bd1
commit 4e5ddf1adf

View file

@ -40,26 +40,26 @@ impl<'a> TokenTreesReader<'a> {
last_delim_empty_block_spans: FxHashMap::default(), last_delim_empty_block_spans: FxHashMap::default(),
matching_block_spans: Vec::new(), matching_block_spans: Vec::new(),
}; };
let res = tt_reader.parse_token_trees(/* is_top_level */ true); let res = tt_reader.parse_token_trees(/* is_delimited */ false);
(res, tt_reader.unmatched_braces) (res, tt_reader.unmatched_braces)
} }
// Parse a stream of tokens into a list of `TokenTree`s. // Parse a stream of tokens into a list of `TokenTree`s.
fn parse_token_trees(&mut self, is_top_level: bool) -> PResult<'a, TokenStream> { fn parse_token_trees(&mut self, is_delimited: bool) -> PResult<'a, TokenStream> {
self.token = self.string_reader.next_token().0; self.token = self.string_reader.next_token().0;
let mut buf = Vec::new(); let mut buf = Vec::new();
loop { loop {
match self.token.kind { match self.token.kind {
token::OpenDelim(delim) => buf.push(self.parse_token_tree_open_delim(delim)), token::OpenDelim(delim) => buf.push(self.parse_token_tree_open_delim(delim)),
token::CloseDelim(delim) => { token::CloseDelim(delim) => {
return if !is_top_level { return if is_delimited {
Ok(TokenStream::new(buf)) Ok(TokenStream::new(buf))
} else { } else {
Err(self.close_delim_err(delim)) Err(self.close_delim_err(delim))
}; };
} }
token::Eof => { token::Eof => {
if !is_top_level { if is_delimited {
self.eof_err().emit(); self.eof_err().emit();
} }
return Ok(TokenStream::new(buf)); return Ok(TokenStream::new(buf));
@ -133,7 +133,7 @@ impl<'a> TokenTreesReader<'a> {
// Parse the token trees within the delimiters. // Parse the token trees within the delimiters.
// We stop at any delimiter so we can try to recover if the user // We stop at any delimiter so we can try to recover if the user
// uses an incorrect delimiter. // uses an incorrect delimiter.
let tts = self.parse_token_trees(/* is_top_level */ false).unwrap(); let tts = self.parse_token_trees(/* is_delimited */ true).unwrap();
// Expand to cover the entire delimited token tree // Expand to cover the entire delimited token tree
let delim_span = DelimSpan::from_pair(pre_span, self.token.span); let delim_span = DelimSpan::from_pair(pre_span, self.token.span);