Skip to content

Commit 8461682

Browse files
authored
Rollup merge of #151384 - pm-tokenstream-tests, r=Kivooeo
add basic `TokenStream` api tests There were none so far. Especially helpful for #130856.
2 parents 8221b5e + 60e488e commit 8461682

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

tests/ui/proc-macro/auxiliary/api/proc_macro_api_tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ extern crate proc_macro;
88
mod cmp;
99
mod ident;
1010
mod literal;
11+
mod tokenstream;
1112

1213
use proc_macro::TokenStream;
1314

@@ -18,6 +19,7 @@ pub fn run(input: TokenStream) -> TokenStream {
1819
cmp::test();
1920
ident::test();
2021
literal::test();
22+
tokenstream::test();
2123

2224
TokenStream::new()
2325
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
use proc_macro::*;
2+
3+
fn assert_eq(l: TokenStream, r: TokenStream) {
4+
assert_eq!(l.to_string(), r.to_string());
5+
for (lt, rt) in l.into_iter().zip(r) {
6+
assert_eq!(lt.to_string(), rt.to_string());
7+
}
8+
}
9+
10+
pub fn test() {
11+
assert_eq(TokenStream::new(), TokenStream::new());
12+
let mut stream = TokenStream::new();
13+
assert!(stream.is_empty());
14+
stream.extend(TokenStream::new());
15+
assert_eq(stream.clone(), TokenStream::new());
16+
17+
let old = stream.clone();
18+
stream.extend(vec![TokenTree::Ident(Ident::new("foo", Span::call_site()))]);
19+
assert!(!stream.is_empty());
20+
assert!(old.is_empty());
21+
22+
let stream2 = stream
23+
.clone()
24+
.into_iter()
25+
.inspect(|tree| assert_eq!(tree.to_string(), "foo"))
26+
.collect::<TokenStream>();
27+
assert_eq(stream.clone(), stream2);
28+
}

0 commit comments

Comments
 (0)