rust/tests/ui/proc-macro/auxiliary/api/tokenstream.rs
2026-01-19 21:46:52 +00:00

28 lines
827 B
Rust

use proc_macro::*;
fn assert_eq(l: TokenStream, r: TokenStream) {
assert_eq!(l.to_string(), r.to_string());
for (lt, rt) in l.into_iter().zip(r) {
assert_eq!(lt.to_string(), rt.to_string());
}
}
pub fn test() {
assert_eq(TokenStream::new(), TokenStream::new());
let mut stream = TokenStream::new();
assert!(stream.is_empty());
stream.extend(TokenStream::new());
assert_eq(stream.clone(), TokenStream::new());
let old = stream.clone();
stream.extend(vec![TokenTree::Ident(Ident::new("foo", Span::call_site()))]);
assert!(!stream.is_empty());
assert!(old.is_empty());
let stream2 = stream
.clone()
.into_iter()
.inspect(|tree| assert_eq!(tree.to_string(), "foo"))
.collect::<TokenStream>();
assert_eq(stream.clone(), stream2);
}