Skip to content

Commit 33516ac

Browse files
committed
[ui] Rearrange StringReader/TokenTreesReader creation.
`TokenTreesReader` wraps a `StringReader`, but the `into_token_trees` function obscures this. This commit moves to a more straightforward control flow.
1 parent 33ba277 commit 33516ac

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

compiler/rustc_parse/src/lexer/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ pub(crate) fn parse_token_trees<'a>(
4848
start_pos = start_pos + BytePos::from_usize(shebang_len);
4949
}
5050

51-
StringReader { sess, start_pos, pos: start_pos, src, override_span }.into_token_trees()
51+
let string_reader = StringReader { sess, start_pos, pos: start_pos, src, override_span };
52+
tokentrees::TokenTreesReader::parse_token_trees(string_reader)
5253
}
5354

5455
struct StringReader<'a> {

compiler/rustc_parse/src/lexer/tokentrees.rs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,12 @@
11
use super::{StringReader, UnmatchedBrace};
2-
32
use rustc_ast::token::{self, Delimiter, Token};
43
use rustc_ast::tokenstream::{DelimSpan, Spacing, TokenStream, TokenTree};
54
use rustc_ast_pretty::pprust::token_to_string;
65
use rustc_data_structures::fx::FxHashMap;
76
use rustc_errors::{PErr, PResult};
87
use rustc_span::Span;
98

10-
impl<'a> StringReader<'a> {
11-
pub(super) fn into_token_trees(self) -> (PResult<'a, TokenStream>, Vec<UnmatchedBrace>) {
12-
let mut tt_reader = TokenTreesReader {
13-
string_reader: self,
14-
token: Token::dummy(),
15-
open_braces: Vec::new(),
16-
unmatched_braces: Vec::new(),
17-
matching_delim_spans: Vec::new(),
18-
last_unclosed_found_span: None,
19-
last_delim_empty_block_spans: FxHashMap::default(),
20-
matching_block_spans: Vec::new(),
21-
};
22-
let res = tt_reader.parse_all_token_trees();
23-
(res, tt_reader.unmatched_braces)
24-
}
25-
}
26-
27-
struct TokenTreesReader<'a> {
9+
pub(super) struct TokenTreesReader<'a> {
2810
string_reader: StringReader<'a>,
2911
token: Token,
3012
/// Stack of open delimiters and their spans. Used for error message.
@@ -43,6 +25,23 @@ struct TokenTreesReader<'a> {
4325
}
4426

4527
impl<'a> TokenTreesReader<'a> {
28+
pub(super) fn parse_token_trees(
29+
string_reader: StringReader<'a>,
30+
) -> (PResult<'a, TokenStream>, Vec<UnmatchedBrace>) {
31+
let mut tt_reader = TokenTreesReader {
32+
string_reader,
33+
token: Token::dummy(),
34+
open_braces: Vec::new(),
35+
unmatched_braces: Vec::new(),
36+
matching_delim_spans: Vec::new(),
37+
last_unclosed_found_span: None,
38+
last_delim_empty_block_spans: FxHashMap::default(),
39+
matching_block_spans: Vec::new(),
40+
};
41+
let res = tt_reader.parse_all_token_trees();
42+
(res, tt_reader.unmatched_braces)
43+
}
44+
4645
// Parse a stream of tokens into a list of `TokenTree`s, up to an `Eof`.
4746
fn parse_all_token_trees(&mut self) -> PResult<'a, TokenStream> {
4847
self.token = self.string_reader.next_token().0;

0 commit comments

Comments
 (0)