Skip to content
This repository was archived by the owner on Oct 6, 2024. It is now read-only.

Commit 1b5c954

Browse files
authored
Merge pull request #39 from dtolnay/group
Fix none-delimited group as last token of other group
2 parents 63102a8 + ae0dc66 commit 1b5c954

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

impl/src/lib.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,11 @@ fn expand(input: TokenStream, contains_paste: &mut bool) -> Result<TokenStream>
4848
let (mut prev_colon, mut colon) = (false, false);
4949
let mut prev_none_group = None::<Group>;
5050
let mut tokens = input.into_iter().peekable();
51-
while let Some(token) = tokens.next() {
51+
loop {
52+
let token = tokens.next();
5253
if let Some(group) = prev_none_group.take() {
5354
if match (&token, tokens.peek()) {
54-
(TokenTree::Punct(fst), Some(TokenTree::Punct(snd))) => {
55+
(Some(TokenTree::Punct(fst)), Some(TokenTree::Punct(snd))) => {
5556
fst.as_char() == ':' && snd.as_char() == ':' && fst.spacing() == Spacing::Joint
5657
}
5758
_ => false,
@@ -63,7 +64,7 @@ fn expand(input: TokenStream, contains_paste: &mut bool) -> Result<TokenStream>
6364
}
6465
}
6566
match token {
66-
TokenTree::Group(group) => {
67+
Some(TokenTree::Group(group)) => {
6768
let delimiter = group.delimiter();
6869
let content = group.stream();
6970
let span = group.span();
@@ -98,7 +99,7 @@ fn expand(input: TokenStream, contains_paste: &mut bool) -> Result<TokenStream>
9899
prev_colon = false;
99100
colon = false;
100101
}
101-
other => {
102+
Some(other) => {
102103
match &other {
103104
TokenTree::Punct(punct) if punct.as_char() == ':' => {
104105
prev_colon = colon;
@@ -111,9 +112,9 @@ fn expand(input: TokenStream, contains_paste: &mut bool) -> Result<TokenStream>
111112
}
112113
expanded.extend(iter::once(other));
113114
}
115+
None => return Ok(expanded),
114116
}
115117
}
116-
Ok(expanded)
117118
}
118119

119120
// https://github.com/dtolnay/paste/issues/26

tests/test.rs

+23
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,29 @@ mod test_type_in_path {
373373
}
374374
}
375375

376+
mod test_type_in_fn_arg {
377+
// https://github.com/dtolnay/paste/issues/38
378+
379+
fn _jit_address(_node: ()) {}
380+
381+
macro_rules! jit_reexport {
382+
($fn:ident, $arg:ident : $typ:ty) => {
383+
paste::item! {
384+
pub fn $fn($arg: $typ) {
385+
[<_jit_ $fn>]($arg);
386+
}
387+
}
388+
};
389+
}
390+
391+
jit_reexport!(address, node: ());
392+
393+
#[test]
394+
fn test_type_in_fn_arg() {
395+
let _ = address;
396+
}
397+
}
398+
376399
mod test_pat_in_expr_position {
377400
// https://github.com/xiph/rav1e/pull/2324/files
378401

0 commit comments

Comments
 (0)