4 use proc_macro2
::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream, TokenTree}
;
6 use std
::iter
::FromIterator
;
11 syn
::parse_str
::<Type
>("fn(mut self)").unwrap();
12 syn
::parse_str
::<Type
>("fn(mut self: ())").unwrap();
13 syn
::parse_str
::<Type
>("fn(mut self: ...)").unwrap_err();
14 syn
::parse_str
::<Type
>("fn(mut self: mut self)").unwrap_err();
15 syn
::parse_str
::<Type
>("fn(mut self::T)").unwrap_err();
19 fn test_macro_variable_type() {
20 // mimics the token stream corresponding to `$ty<T>`
21 let tokens
= TokenStream
::from_iter(vec
![
22 TokenTree
::Group(Group
::new(Delimiter
::None
, quote
! { ty }
)),
23 TokenTree
::Punct(Punct
::new('
<'
, Spacing
::Alone
)),
24 TokenTree
::Ident(Ident
::new("T", Span
::call_site())),
25 TokenTree
::Punct(Punct
::new('
>'
, Spacing
::Alone
)),
28 snapshot
!(tokens
as Type
, @r
###"
34 arguments: PathArguments::AngleBracketed {