]> git.proxmox.com Git - rustc.git/blobdiff - src/tools/rustfmt/config_proc_macro/src/lib.rs
New upstream version 1.52.1+dfsg1
[rustc.git] / src / tools / rustfmt / config_proc_macro / src / lib.rs
diff --git a/src/tools/rustfmt/config_proc_macro/src/lib.rs b/src/tools/rustfmt/config_proc_macro/src/lib.rs
new file mode 100644 (file)
index 0000000..66cfd3c
--- /dev/null
@@ -0,0 +1,27 @@
+//! This crate provides a derive macro for `ConfigType`.
+
+#![recursion_limit = "256"]
+
+extern crate proc_macro;
+
+mod attrs;
+mod config_type;
+mod item_enum;
+mod item_struct;
+mod utils;
+
+use proc_macro::TokenStream;
+use syn::parse_macro_input;
+
+#[proc_macro_attribute]
+pub fn config_type(_args: TokenStream, input: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(input as syn::Item);
+    let output = config_type::define_config_type(&input);
+
+    #[cfg(feature = "debug-with-rustfmt")]
+    {
+        utils::debug_with_rustfmt(&output);
+    }
+
+    TokenStream::from(output)
+}