about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKartavya Vashishtha <sendtokartavya@gmail.com>2022-08-25 13:11:51 +0530
committerKartavya Vashishtha <sendtokartavya@gmail.com>2022-08-25 13:11:51 +0530
commit9480b38189f1246fc96a58036fcfbc5527ae6516 (patch)
treeaf22f1c58fed3dc6610cc22c1e3539f444b1804c
parent71c15f2a442df1760c535ebec51768187209cd10 (diff)
downloadrust-9480b38189f1246fc96a58036fcfbc5527ae6516.tar.gz
rust-9480b38189f1246fc96a58036fcfbc5527ae6516.zip
extract const generic in ArrayType
-rw-r--r--crates/ide-assists/src/handlers/extract_type_alias.rs19
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(&lt.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