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