A build-time analyzer that computes full module paths for Mingling types, resolving path ambiguity in macros.
## Background Currently, `gen_program!` requires all involved types to be `use`d within their module. Mingling lacks a complete module path analyzer — waiting for `proc-macro-span` to stabilize is clearly not practical, so a solution for obtaining module paths is needed. ## Solution We plan to create an analyzer called `mingling-mod-pathf`, enabled via Mingling's `"pathf"` feature, to compute the full paths of all defined Mingling types. ### Behavior When Enabled **`mingling_core`**: If the `builds` feature is enabled, introduces the `mingling::build::analyze_and_build_type_mapping()` method (analysis completed at Build-Time) **`mingling_macros`**: Modifies the behavior of the `gen_program!()` macro — automatically loads the mapping table from the analysis file generated by `mingling::build::analyze_and_build_type_mapping()`, and directly uses the full `mod::path` instead of `TypeName` (injected at Compile-Time) ## Challenges `mingling-mod-pathf` needs to understand **all** Mingling syntax features. Fortunately, Mingling's type creation is almost always explicit: ```rust mod sub { mingling::macros::pack!(ResultMyName = String); // directly creates ..::sub::ResultMyName } ``` There are a few exceptions, such as the implicit Dispatcher provided by `extra_macros`, but these can be inferred from the node name: ```rust dispatcher!("remote.add"); // although the type is unknown, we can infer CMDRemoteAdd and EntryRemoteAdd ``` And also `#[program_setup]`: ```rust #[program_setup] // can infer CustomSetup from the function name `custom_setup` fn custom_setup(program: &mut Program