|
2 | 2 |
|
3 | 3 | use proc_macro::{token_stream, Delimiter, Group, Literal, TokenStream, TokenTree};
|
4 | 4 |
|
5 |
| -fn try_ident(it: &mut token_stream::IntoIter) -> Option<String> { |
6 |
| - if let Some(TokenTree::Ident(ident)) = it.next() { |
7 |
| - Some(ident.to_string()) |
8 |
| - } else { |
9 |
| - None |
10 |
| - } |
11 |
| -} |
12 |
| - |
13 |
| -fn try_literal(it: &mut token_stream::IntoIter) -> Option<String> { |
14 |
| - if let Some(TokenTree::Literal(literal)) = it.next() { |
15 |
| - Some(literal.to_string()) |
16 |
| - } else { |
17 |
| - None |
18 |
| - } |
19 |
| -} |
20 |
| - |
21 |
| -fn try_byte_string(it: &mut token_stream::IntoIter) -> Option<String> { |
22 |
| - try_literal(it).and_then(|byte_string| { |
23 |
| - if byte_string.starts_with("b\"") && byte_string.ends_with('\"') { |
24 |
| - Some(byte_string[2..byte_string.len() - 1].to_string()) |
25 |
| - } else { |
26 |
| - None |
27 |
| - } |
28 |
| - }) |
29 |
| -} |
30 |
| - |
31 |
| -fn expect_ident(it: &mut token_stream::IntoIter) -> String { |
32 |
| - try_ident(it).expect("Expected Ident") |
33 |
| -} |
34 |
| - |
35 |
| -fn expect_punct(it: &mut token_stream::IntoIter) -> char { |
36 |
| - if let TokenTree::Punct(punct) = it.next().expect("Reached end of token stream for Punct") { |
37 |
| - punct.as_char() |
38 |
| - } else { |
39 |
| - panic!("Expected Punct"); |
40 |
| - } |
41 |
| -} |
42 |
| - |
43 |
| -fn expect_literal(it: &mut token_stream::IntoIter) -> String { |
44 |
| - try_literal(it).expect("Expected Literal") |
45 |
| -} |
46 |
| - |
47 |
| -fn expect_group(it: &mut token_stream::IntoIter) -> Group { |
48 |
| - if let TokenTree::Group(group) = it.next().expect("Reached end of token stream for Group") { |
49 |
| - group |
50 |
| - } else { |
51 |
| - panic!("Expected Group"); |
52 |
| - } |
53 |
| -} |
54 |
| - |
55 |
| -fn expect_byte_string(it: &mut token_stream::IntoIter) -> String { |
56 |
| - try_byte_string(it).expect("Expected byte string") |
57 |
| -} |
| 5 | +use crate::helpers::*; |
58 | 6 |
|
59 | 7 | #[derive(Clone, PartialEq)]
|
60 | 8 | enum ParamType {
|
@@ -88,28 +36,6 @@ fn expect_type(it: &mut token_stream::IntoIter) -> ParamType {
|
88 | 36 | }
|
89 | 37 | }
|
90 | 38 |
|
91 |
| -fn expect_end(it: &mut token_stream::IntoIter) { |
92 |
| - if it.next().is_some() { |
93 |
| - panic!("Expected end"); |
94 |
| - } |
95 |
| -} |
96 |
| - |
97 |
| -fn get_literal(it: &mut token_stream::IntoIter, expected_name: &str) -> String { |
98 |
| - assert_eq!(expect_ident(it), expected_name); |
99 |
| - assert_eq!(expect_punct(it), ':'); |
100 |
| - let literal = expect_literal(it); |
101 |
| - assert_eq!(expect_punct(it), ','); |
102 |
| - literal |
103 |
| -} |
104 |
| - |
105 |
| -fn get_byte_string(it: &mut token_stream::IntoIter, expected_name: &str) -> String { |
106 |
| - assert_eq!(expect_ident(it), expected_name); |
107 |
| - assert_eq!(expect_punct(it), ':'); |
108 |
| - let byte_string = expect_byte_string(it); |
109 |
| - assert_eq!(expect_punct(it), ','); |
110 |
| - byte_string |
111 |
| -} |
112 |
| - |
113 | 39 | struct ModInfoBuilder<'a> {
|
114 | 40 | module: &'a str,
|
115 | 41 | counter: usize,
|
|
0 commit comments