1fad3a1d3Sopenharmony_ciuse proc_macro2::{Ident, Span, TokenStream}; 2fad3a1d3Sopenharmony_ciuse std::str::FromStr; 3fad3a1d3Sopenharmony_ciuse syn::Result; 4fad3a1d3Sopenharmony_ci 5fad3a1d3Sopenharmony_cifn parse(s: &str) -> Result<Ident> { 6fad3a1d3Sopenharmony_ci syn::parse2(TokenStream::from_str(s).unwrap()) 7fad3a1d3Sopenharmony_ci} 8fad3a1d3Sopenharmony_ci 9fad3a1d3Sopenharmony_cifn new(s: &str) -> Ident { 10fad3a1d3Sopenharmony_ci Ident::new(s, Span::call_site()) 11fad3a1d3Sopenharmony_ci} 12fad3a1d3Sopenharmony_ci 13fad3a1d3Sopenharmony_ci#[test] 14fad3a1d3Sopenharmony_cifn ident_parse() { 15fad3a1d3Sopenharmony_ci parse("String").unwrap(); 16fad3a1d3Sopenharmony_ci} 17fad3a1d3Sopenharmony_ci 18fad3a1d3Sopenharmony_ci#[test] 19fad3a1d3Sopenharmony_cifn ident_parse_keyword() { 20fad3a1d3Sopenharmony_ci parse("abstract").unwrap_err(); 21fad3a1d3Sopenharmony_ci} 22fad3a1d3Sopenharmony_ci 23fad3a1d3Sopenharmony_ci#[test] 24fad3a1d3Sopenharmony_cifn ident_parse_empty() { 25fad3a1d3Sopenharmony_ci parse("").unwrap_err(); 26fad3a1d3Sopenharmony_ci} 27fad3a1d3Sopenharmony_ci 28fad3a1d3Sopenharmony_ci#[test] 29fad3a1d3Sopenharmony_cifn ident_parse_lifetime() { 30fad3a1d3Sopenharmony_ci parse("'static").unwrap_err(); 31fad3a1d3Sopenharmony_ci} 32fad3a1d3Sopenharmony_ci 33fad3a1d3Sopenharmony_ci#[test] 34fad3a1d3Sopenharmony_cifn ident_parse_underscore() { 35fad3a1d3Sopenharmony_ci parse("_").unwrap_err(); 36fad3a1d3Sopenharmony_ci} 37fad3a1d3Sopenharmony_ci 38fad3a1d3Sopenharmony_ci#[test] 39fad3a1d3Sopenharmony_cifn ident_parse_number() { 40fad3a1d3Sopenharmony_ci parse("255").unwrap_err(); 41fad3a1d3Sopenharmony_ci} 42fad3a1d3Sopenharmony_ci 43fad3a1d3Sopenharmony_ci#[test] 44fad3a1d3Sopenharmony_cifn ident_parse_invalid() { 45fad3a1d3Sopenharmony_ci parse("a#").unwrap_err(); 46fad3a1d3Sopenharmony_ci} 47fad3a1d3Sopenharmony_ci 48fad3a1d3Sopenharmony_ci#[test] 49fad3a1d3Sopenharmony_cifn ident_new() { 50fad3a1d3Sopenharmony_ci new("String"); 51fad3a1d3Sopenharmony_ci} 52fad3a1d3Sopenharmony_ci 53fad3a1d3Sopenharmony_ci#[test] 54fad3a1d3Sopenharmony_cifn ident_new_keyword() { 55fad3a1d3Sopenharmony_ci new("abstract"); 56fad3a1d3Sopenharmony_ci} 57fad3a1d3Sopenharmony_ci 58fad3a1d3Sopenharmony_ci#[test] 59fad3a1d3Sopenharmony_ci#[should_panic(expected = "use Option<Ident>")] 60fad3a1d3Sopenharmony_cifn ident_new_empty() { 61fad3a1d3Sopenharmony_ci new(""); 62fad3a1d3Sopenharmony_ci} 63fad3a1d3Sopenharmony_ci 64fad3a1d3Sopenharmony_ci#[test] 65fad3a1d3Sopenharmony_ci#[should_panic(expected = "not a valid Ident")] 66fad3a1d3Sopenharmony_cifn ident_new_lifetime() { 67fad3a1d3Sopenharmony_ci new("'static"); 68fad3a1d3Sopenharmony_ci} 69fad3a1d3Sopenharmony_ci 70fad3a1d3Sopenharmony_ci#[test] 71fad3a1d3Sopenharmony_cifn ident_new_underscore() { 72fad3a1d3Sopenharmony_ci new("_"); 73fad3a1d3Sopenharmony_ci} 74fad3a1d3Sopenharmony_ci 75fad3a1d3Sopenharmony_ci#[test] 76fad3a1d3Sopenharmony_ci#[should_panic(expected = "use Literal instead")] 77fad3a1d3Sopenharmony_cifn ident_new_number() { 78fad3a1d3Sopenharmony_ci new("255"); 79fad3a1d3Sopenharmony_ci} 80fad3a1d3Sopenharmony_ci 81fad3a1d3Sopenharmony_ci#[test] 82fad3a1d3Sopenharmony_ci#[should_panic(expected = "\"a#\" is not a valid Ident")] 83fad3a1d3Sopenharmony_cifn ident_new_invalid() { 84fad3a1d3Sopenharmony_ci new("a#"); 85fad3a1d3Sopenharmony_ci} 86