fix rust ast tool
This commit is contained in:
+19
-1
@@ -90,7 +90,8 @@ fn main() {
|
||||
|
||||
for item in &syntax.items {
|
||||
if let Item::Use(item_use) = item {
|
||||
let path = path_to_string(&item_use.tree);
|
||||
let path = use_tree_to_string(&item_use.tree);
|
||||
|
||||
decls.push(RustDecl {
|
||||
name: path.clone(),
|
||||
type_: "import".to_string(),
|
||||
@@ -376,3 +377,20 @@ fn generic_param_to_string(param: &syn::GenericParam) -> String {
|
||||
syn::GenericParam::Const(cnst) => cnst.ident.to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
fn use_tree_to_string(tree: &syn::UseTree) -> String {
|
||||
match tree {
|
||||
syn::UseTree::Path(p) => {
|
||||
let base = p.ident.to_string();
|
||||
let nested = use_tree_to_string(&*p.tree);
|
||||
format!("{}::{}", base, nested)
|
||||
}
|
||||
syn::UseTree::Name(n) => n.ident.to_string(),
|
||||
syn::UseTree::Rename(r) => r.ident.to_string(),
|
||||
syn::UseTree::Glob(_) => "*".to_string(),
|
||||
syn::UseTree::Group(g) => {
|
||||
let items: Vec<String> = g.items.iter().map(use_tree_to_string).collect();
|
||||
items.join("::")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user