aboutsummaryrefslogtreecommitdiff
path: root/mingling_macros/src/lib.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-04-20 14:06:38 +0800
committer魏曹先生 <1992414357@qq.com>2026-04-20 14:06:38 +0800
commit6f66a3158f4a4b2bca42ec385abefbf4011618cc (patch)
tree2f5193e9130c6477e413d90966babc2d60721182 /mingling_macros/src/lib.rs
parent2036fb58275d7fddad9c27bcceb780e8f715e5c0 (diff)
Move type registration to pack! and Groupped macros
Diffstat (limited to 'mingling_macros/src/lib.rs')
-rw-r--r--mingling_macros/src/lib.rs54
1 files changed, 16 insertions, 38 deletions
diff --git a/mingling_macros/src/lib.rs b/mingling_macros/src/lib.rs
index 4ae9e43..8df8ad7 100644
--- a/mingling_macros/src/lib.rs
+++ b/mingling_macros/src/lib.rs
@@ -116,11 +116,13 @@ pub fn gen_program(input: TokenStream) -> TokenStream {
#[cfg(feature = "comp")]
let out = TokenStream::from(quote! {
- ::mingling::macros::program_gen_completion!(#name);
+ ::mingling::macros::program_comp_gen!(#name);
+ ::mingling::macros::program_fallback_gen!(#name);
::mingling::macros::program_final_gen!(#name);
});
#[cfg(not(feature = "comp"))]
let out = TokenStream::from(quote! {
+ ::mingling::macros::program_fallback_gen!(#name);
::mingling::macros::program_final_gen!(#name);
});
@@ -129,7 +131,7 @@ pub fn gen_program(input: TokenStream) -> TokenStream {
#[proc_macro]
#[cfg(feature = "comp")]
-pub fn program_gen_completion(input: TokenStream) -> TokenStream {
+pub fn program_comp_gen(input: TokenStream) -> TokenStream {
let name = read_name(&input);
#[cfg(feature = "async")]
@@ -210,12 +212,21 @@ pub fn register_renderer(input: TokenStream) -> TokenStream {
}
#[proc_macro]
+pub fn program_fallback_gen(input: TokenStream) -> TokenStream {
+ let name = read_name(&input);
+
+ let expanded = quote! {
+ ::mingling::macros::pack!(#name, RendererNotFound = String);
+ ::mingling::macros::pack!(#name, DispatcherNotFound = Vec<String>);
+ };
+ TokenStream::from(expanded)
+}
+
+#[proc_macro]
pub fn program_final_gen(input: TokenStream) -> TokenStream {
let name = read_name(&input);
- let mut packed_types = PACKED_TYPES.lock().unwrap().clone();
- packed_types.insert("DispatcherNotFound".to_string());
- packed_types.insert("RendererNotFound".to_string());
+ let packed_types = PACKED_TYPES.lock().unwrap().clone();
let renderers = RENDERERS.lock().unwrap().clone();
let chains = CHAINS.lock().unwrap().clone();
@@ -295,9 +306,6 @@ pub fn program_final_gen(input: TokenStream) -> TokenStream {
let comp = quote! {};
let expanded = quote! {
- ::mingling::macros::pack!(#name, RendererNotFound = String);
- ::mingling::macros::pack!(#name, DispatcherNotFound = Vec<String>);
-
#[derive(Debug, Default, PartialEq, Eq, Clone)]
#[repr(u32)]
pub enum #name {
@@ -355,36 +363,6 @@ pub fn program_final_gen(input: TokenStream) -> TokenStream {
TokenStream::from(expanded)
}
-/// Internal macro for registering chains.
-///
-/// This macro is used internally by the `#[chain]` attribute macro
-/// and should not be used directly.
-#[doc(hidden)]
-#[proc_macro]
-pub fn __register_chain(input: TokenStream) -> TokenStream {
- let chain_entry = parse_macro_input!(input as syn::LitStr);
- let entry_str = chain_entry.value();
-
- CHAINS.lock().unwrap().insert(entry_str);
-
- TokenStream::new()
-}
-
-/// Internal macro for registering renderers.
-///
-/// This macro is used internally by the `#[renderer]` attribute macro
-/// and should not be used directly.
-#[doc(hidden)]
-#[proc_macro]
-pub fn __register_renderer(input: TokenStream) -> TokenStream {
- let renderer_entry = parse_macro_input!(input as syn::LitStr);
- let entry_str = renderer_entry.value();
-
- RENDERERS.lock().unwrap().insert(entry_str);
-
- TokenStream::new()
-}
-
#[cfg(feature = "comp")]
#[proc_macro]
pub fn suggest(input: TokenStream) -> TokenStream {