Lines Matching defs:TokenStream
13 pub(crate) enum TokenStream {
15 Fallback(fallback::TokenStream),
19 // In `impl Extend<TokenTree> for TokenStream` which is used heavily by quote,
20 // we hold on to the appended tokens and do proc_macro::TokenStream::extend as
24 stream: proc_macro::TokenStream,
51 fn new(stream: proc_macro::TokenStream) -> Self {
71 fn into_token_stream(mut self) -> proc_macro::TokenStream {
77 impl TokenStream {
80 TokenStream::Compiler(DeferredTokenStream::new(proc_macro::TokenStream::new()))
82 TokenStream::Fallback(fallback::TokenStream::new())
88 TokenStream::Compiler(tts) => tts.is_empty(),
89 TokenStream::Fallback(tts) => tts.is_empty(),
93 fn unwrap_nightly(self) -> proc_macro::TokenStream {
95 TokenStream::Compiler(s) => s.into_token_stream(),
96 TokenStream::Fallback(_) => mismatch(line!()),
100 fn unwrap_stable(self) -> fallback::TokenStream {
102 TokenStream::Compiler(_) => mismatch(line!()),
103 TokenStream::Fallback(s) => s,
108 impl FromStr for TokenStream {
111 fn from_str(src: &str) -> Result<TokenStream, LexError> {
113 Ok(TokenStream::Compiler(DeferredTokenStream::new(
117 Ok(TokenStream::Fallback(src.parse()?))
123 fn proc_macro_parse(src: &str) -> Result<proc_macro::TokenStream, LexError> {
128 impl Display for TokenStream {
131 TokenStream::Compiler(tts) => Display::fmt(&tts.clone().into_token_stream(), f),
132 TokenStream::Fallback(tts) => Display::fmt(tts, f),
137 impl From<proc_macro::TokenStream> for TokenStream {
138 fn from(inner: proc_macro::TokenStream) -> Self {
139 TokenStream::Compiler(DeferredTokenStream::new(inner))
143 impl From<TokenStream> for proc_macro::TokenStream {
144 fn from(inner: TokenStream) -> Self {
146 TokenStream::Compiler(inner) => inner.into_token_stream(),
147 TokenStream::Fallback(inner) => inner.to_string().parse().unwrap(),
152 impl From<fallback::TokenStream> for TokenStream {
153 fn from(inner: fallback::TokenStream) -> Self {
154 TokenStream::Fallback(inner)
176 impl From<TokenTree> for TokenStream {
179 TokenStream::Compiler(DeferredTokenStream::new(into_compiler_token(token).into()))
181 TokenStream::Fallback(token.into())
186 impl FromIterator<TokenTree> for TokenStream {
189 TokenStream::Compiler(DeferredTokenStream::new(
193 TokenStream::Fallback(trees.into_iter().collect())
198 impl FromIterator<TokenStream> for TokenStream {
199 fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self {
202 Some(TokenStream::Compiler(mut first)) => {
205 TokenStream::Compiler(s) => s.into_token_stream(),
206 TokenStream::Fallback(_) => mismatch(line!()),
208 TokenStream::Compiler(first)
210 Some(TokenStream::Fallback(mut first)) => {
212 TokenStream::Fallback(s) => s,
213 TokenStream::Compiler(_) => mismatch(line!()),
215 TokenStream::Fallback(first)
217 None => TokenStream::new(),
222 impl Extend<TokenTree> for TokenStream {
225 TokenStream::Compiler(tts) => {
231 TokenStream::Fallback(tts) => tts.extend(stream),
236 impl Extend<TokenStream> for TokenStream {
237 fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I) {
239 TokenStream::Compiler(tts) => {
242 .extend(streams.into_iter().map(TokenStream::unwrap_nightly));
244 TokenStream::Fallback(tts) => {
245 tts.extend(streams.into_iter().map(TokenStream::unwrap_stable));
251 impl Debug for TokenStream {
254 TokenStream::Compiler(tts) => Debug::fmt(&tts.clone().into_token_stream(), f),
255 TokenStream::Fallback(tts) => Debug::fmt(tts, f),
313 impl IntoIterator for TokenStream {
319 TokenStream::Compiler(tts) => {
322 TokenStream::Fallback(tts) => TokenTreeIter::Fallback(tts.into_iter()),
553 pub fn new(delimiter: Delimiter, stream: TokenStream) -> Self {
555 TokenStream::Compiler(tts) => {
564 TokenStream::Fallback(stream) => {
582 pub fn stream(&self) -> TokenStream {
584 Group::Compiler(g) => TokenStream::Compiler(DeferredTokenStream::new(g.stream())),
585 Group::Fallback(g) => TokenStream::Fallback(g.stream()),