aboutsummaryrefslogtreecommitdiff
path: root/mingling_pathf/src/patterns/grouped_derive.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-07-21 06:03:24 +0800
committer魏曹先生 <1992414357@qq.com>2026-07-21 06:03:24 +0800
commitd3abdd53e0cc86cb41c0793ce99dbb21b89a4361 (patch)
treee6d6eb1b674185d6a906a7940226a06f3b4cf50a /mingling_pathf/src/patterns/grouped_derive.rs
parent700c049f64b66f424cda5da3021dfce4462655ca (diff)
feat(pathf): add foreign item support with is_foreign flag
Add `AnalyzeItem::foreign()` and `AnalyzeItem::local()` constructors to distinguish items resolved via `use` imports from local definitions. Update `GroupPattern` to collect use imports at file and module levels, resolving `group!(TypeName)` against them. Migrate all pattern implementations to use the new constructors, and adjust `type_mapping_builder` to skip the file's own module prefix for foreign items.
Diffstat (limited to 'mingling_pathf/src/patterns/grouped_derive.rs')
-rw-r--r--mingling_pathf/src/patterns/grouped_derive.rs31
1 files changed, 11 insertions, 20 deletions
diff --git a/mingling_pathf/src/patterns/grouped_derive.rs b/mingling_pathf/src/patterns/grouped_derive.rs
index 9522c1f..56a87f9 100644
--- a/mingling_pathf/src/patterns/grouped_derive.rs
+++ b/mingling_pathf/src/patterns/grouped_derive.rs
@@ -30,38 +30,29 @@ impl AnalyzePattern for GroupedDerivePattern {
for item in &syntax.items {
match item {
Item::Struct(s) if has_grouped_derive(&s.attrs) => {
- items.push(AnalyzeItem {
- module: String::new(),
- item_name: s.ident.to_string(),
- });
+ items.push(AnalyzeItem::local(String::new(), s.ident.to_string()));
}
Item::Enum(e) if has_grouped_derive(&e.attrs) => {
- items.push(AnalyzeItem {
- module: String::new(),
- item_name: e.ident.to_string(),
- });
+ items.push(AnalyzeItem::local(String::new(), e.ident.to_string()));
}
Item::Union(u) if has_grouped_derive(&u.attrs) => {
- items.push(AnalyzeItem {
- module: String::new(),
- item_name: u.ident.to_string(),
- });
+ items.push(AnalyzeItem::local(String::new(), u.ident.to_string()));
}
Item::Mod(item_mod) => {
if let Some((_, nested)) = &item_mod.content {
for n in nested {
match n {
Item::Struct(s) if has_grouped_derive(&s.attrs) => {
- items.push(AnalyzeItem {
- module: item_mod.ident.to_string(),
- item_name: s.ident.to_string(),
- });
+ items.push(AnalyzeItem::local(
+ item_mod.ident.to_string(),
+ s.ident.to_string(),
+ ));
}
Item::Enum(e) if has_grouped_derive(&e.attrs) => {
- items.push(AnalyzeItem {
- module: item_mod.ident.to_string(),
- item_name: e.ident.to_string(),
- });
+ items.push(AnalyzeItem::local(
+ item_mod.ident.to_string(),
+ e.ident.to_string(),
+ ));
}
_ => {}
}