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:
parent
2b646bd533
commit
ccd956aca6
2 changed files with 4 additions and 14 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue