1
Fork 0

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.
This commit is contained in:
Nicholas Nethercote 2022-06-20 09:14:18 +10:00
parent 2b646bd533
commit ccd956aca6
2 changed files with 4 additions and 14 deletions

View file

@ -25,7 +25,7 @@ use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
use rustc_span::{Span, DUMMY_SP}; use rustc_span::{Span, DUMMY_SP};
use smallvec::{smallvec, SmallVec}; use smallvec::{smallvec, SmallVec};
use std::{fmt, iter, mem}; use std::{fmt, iter};
/// When the main Rust parser encounters a syntax-extension invocation, it /// 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 /// parses the arguments to the invocation as a token tree. This is a very
@ -683,16 +683,6 @@ impl Cursor {
self.index 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> { pub fn look_ahead(&self, n: usize) -> Option<&TokenTree> {
self.stream.0[self.index..].get(n).map(|(tree, _)| tree) self.stream.0[self.index..].get(n).map(|(tree, _)| tree)
} }

View file

@ -522,11 +522,11 @@ impl server::TokenStream for Rustc<'_, '_> {
// FIXME: It needs to be removed, but there are some // FIXME: It needs to be removed, but there are some
// compatibility issues (see #73345). // compatibility issues (see #73345).
if group.flatten { if group.flatten {
cursor.append(group.stream); tts.append(&mut self.into_trees(group.stream));
continue; } else {
}
tts.push(TokenTree::Group(group)); tts.push(TokenTree::Group(group));
} }
}
Some(tt) => tts.push(tt), Some(tt) => tts.push(tt),
None => return tts, None => return tts,
} }