diff options
| author | Kartavya Vashishtha <sendtokartavya@gmail.com> | 2022-08-25 13:11:51 +0530 |
|---|---|---|
| committer | Kartavya Vashishtha <sendtokartavya@gmail.com> | 2022-08-25 13:11:51 +0530 |
| commit | 9480b38189f1246fc96a58036fcfbc5527ae6516 (patch) | |
| tree | af22f1c58fed3dc6610cc22c1e3539f444b1804c | |
| parent | 71c15f2a442df1760c535ebec51768187209cd10 (diff) | |
| download | rust-9480b38189f1246fc96a58036fcfbc5527ae6516.tar.gz rust-9480b38189f1246fc96a58036fcfbc5527ae6516.zip | |
extract const generic in ArrayType
| -rw-r--r-- | crates/ide-assists/src/handlers/extract_type_alias.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/extract_type_alias.rs b/crates/ide-assists/src/handlers/extract_type_alias.rs index c0586169bc9..0e031a793bf 100644 --- a/crates/ide-assists/src/handlers/extract_type_alias.rs +++ b/crates/ide-assists/src/handlers/extract_type_alias.rs @@ -171,6 +171,25 @@ fn collect_used_generics<'gp>( ast::Type::RefType(ref_) => generics.extend( ref_.lifetime().and_then(|lt| known_generics.iter().find(find_lifetime(<.text()))), ), + ast::Type::ArrayType(ar) => { + if let Some(expr) = ar.expr() { + if let ast::Expr::PathExpr(p) = expr { + if let Some(path) = p.path() { + if let Some(name_ref) = path.as_single_name_ref() { + if let Some(param) = known_generics.iter().find(|gp| { + if let ast::GenericParam::ConstParam(cp) = gp { + cp.name().map_or(false, |n| n.text() == name_ref.text()) + } else { + false + } + }) { + generics.push(param); + } + } + } + } + } + }, _ => (), }); // stable resort to lifetime, type, const |
