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