]> git.proxmox.com Git - rustc.git/blob - vendor/xflags-macros/src/lib.rs
New upstream version 1.66.0+dfsg1
[rustc.git] / vendor / xflags-macros / src / lib.rs
1 mod ast;
2 mod parse;
3 mod emit;
4 mod update;
5
6 #[proc_macro]
7 pub fn xflags(_ts: proc_macro::TokenStream) -> proc_macro::TokenStream {
8 // Stub out the code, but let rust-analyzer resolve the invocation
9 #[cfg(not(test))]
10 {
11 let text = match parse::xflags(_ts) {
12 Ok(cmd) => emit::emit(&cmd),
13 Err(err) => format!("compile_error!(\"invalid flags syntax, {err}\");"),
14 };
15 text.parse().unwrap()
16 }
17 #[cfg(test)]
18 unimplemented!()
19 }
20
21 #[proc_macro]
22 pub fn parse_or_exit(_ts: proc_macro::TokenStream) -> proc_macro::TokenStream {
23 // Stub out the code, but let rust-analyzer resolve the invocation
24 #[cfg(not(test))]
25 {
26 let text = match parse::parse_or_exit(_ts) {
27 Ok(cmd) => emit::emit(&cmd),
28 Err(err) => format!("compile_error!(\"invalid flags syntax, {err}\")"),
29 };
30 text.parse().unwrap()
31 }
32 #[cfg(test)]
33 {
34 let _ = parse::parse_or_exit;
35 unimplemented!();
36 }
37 }
38
39 #[cfg(test)]
40 pub fn compile(src: &str) -> String {
41 use proc_macro2::TokenStream;
42
43 let ts = src.parse::<TokenStream>().unwrap();
44 let cmd = parse::xflags(ts).unwrap();
45 emit::emit(&cmd)
46 }