diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-06-20 09:14:18 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-06-20 09:19:10 +1000 |
| commit | ccd956aca6d5b108a998fa13d4570f76dbff98a4 (patch) | |
| tree | 0e03e3752404aac9e85fcdab310f2738d3c09b62 | |
| parent | 2b646bd533e8a20c06a71d0b7837e15eb4c79fa8 (diff) | |
| download | rust-ccd956aca6d5b108a998fa13d4570f76dbff98a4.tar.gz rust-ccd956aca6d5b108a998fa13d4570f76dbff98a4.zip | |
Remove `Cursor::append`.
It's a weird function: it lets you modify the token stream in the middle of iteration. There is only one call site, and it is only used for the rare `ProceduralMasquerade` legacy case.
| -rw-r--r-- | compiler/rustc_ast/src/tokenstream.rs | 12 | ||||
| -rw-r--r-- | compiler/rustc_expand/src/proc_macro_server.rs | 6 |
2 files changed, 4 insertions, 14 deletions
diff --git a/compiler/rustc_ast/src/tokenstream.rs b/compiler/rustc_ast/src/tokenstream.rs index 84d8829c398..70d5e53d969 100644 --- a/compiler/rustc_ast/src/tokenstream.rs +++ b/compiler/rustc_ast/src/tokenstream.rs @@ -25,7 +25,7 @@ use rustc_serialize::{Decodable, Decoder, Encodable, Encoder}; use rustc_span::{Span, DUMMY_SP}; use smallvec::{smallvec, SmallVec}; -use std::{fmt, iter, mem}; +use std::{fmt, iter}; /// When the main Rust parser encounters a syntax-extension invocation, it /// parses the arguments to the invocation as a token tree. This is a very @@ -683,16 +683,6 @@ impl Cursor { self.index } - pub fn append(&mut self, new_stream: TokenStream) { - if new_stream.is_empty() { - return; - } - let index = self.index; - let stream = mem::take(&mut self.stream); - *self = TokenStream::from_streams(smallvec![stream, new_stream]).into_trees(); - self.index = index; - } - pub fn look_ahead(&self, n: usize) -> Option<&TokenTree> { self.stream.0[self.index..].get(n).map(|(tree, _)| tree) } diff --git a/compiler/rustc_expand/src/proc_macro_server.rs b/compiler/rustc_expand/src/proc_macro_server.rs index 093896c339d..7cb587f6fc4 100644 --- a/compiler/rustc_expand/src/proc_macro_server.rs +++ b/compiler/rustc_expand/src/proc_macro_server.rs @@ -522,10 +522,10 @@ impl server::TokenStream for Rustc<'_, '_> { // FIXME: It needs to be removed, but there are some // compatibility issues (see #73345). if group.flatten { - cursor.append(group.stream); - continue; + tts.append(&mut self.into_trees(group.stream)); + } else { + tts.push(TokenTree::Group(group)); } - tts.push(TokenTree::Group(group)); } Some(tt) => tts.push(tt), None => return tts, |
