fix rust ast tool
This commit is contained in:
+19
-1
@@ -90,7 +90,8 @@ fn main() {
|
|||||||
|
|
||||||
for item in &syntax.items {
|
for item in &syntax.items {
|
||||||
if let Item::Use(item_use) = item {
|
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 {
|
decls.push(RustDecl {
|
||||||
name: path.clone(),
|
name: path.clone(),
|
||||||
type_: "import".to_string(),
|
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(),
|
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