]> git.lizzy.rs Git - rust.git/commitdiff
Merge #11753
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>
Fri, 18 Mar 2022 14:37:59 +0000 (14:37 +0000)
committerGitHub <noreply@github.com>
Fri, 18 Mar 2022 14:37:59 +0000 (14:37 +0000)
11753: feat: Complete assoc const patterns on builtin types r=jonas-schievink a=jonas-schievink

followup to https://github.com/rust-analyzer/rust-analyzer/pull/11713

bors r+

Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
crates/ide_completion/src/completions/pattern.rs
crates/ide_completion/src/tests/pattern.rs

index dac777a69bc09c2e0af630ed00494edb2b5ab144..0d3a49c668d73d54fec1ae36c508150d77284bd1 100644 (file)
@@ -141,7 +141,8 @@ fn pattern_path_completion(
                 | hir::PathResolution::SelfType(_)
                 | hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Struct(_)))
                 | hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Enum(_)))
-                | hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Union(_)))) => {
+                | hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Union(_)))
+                | hir::PathResolution::Def(hir::ModuleDef::BuiltinType(_))) => {
                     let ty = match res {
                         hir::PathResolution::TypeParam(param) => param.ty(ctx.db),
                         hir::PathResolution::SelfType(impl_def) => impl_def.self_ty(ctx.db),
@@ -158,6 +159,13 @@ fn pattern_path_completion(
                         hir::PathResolution::Def(hir::ModuleDef::Adt(hir::Adt::Union(u))) => {
                             u.ty(ctx.db)
                         }
+                        hir::PathResolution::Def(hir::ModuleDef::BuiltinType(ty)) => {
+                            let module = match ctx.module {
+                                Some(m) => m,
+                                None => return,
+                            };
+                            ty.ty(ctx.db, module)
+                        }
                         _ => return,
                     };
 
index b2740d26ce0c653d9fe77d9708b4b6fb1e84454f..405a128b7e0f76c16965b536eb8eec9fa82dfcf0 100644 (file)
@@ -493,7 +493,6 @@ fn f(e: MyEnum) {
 
     check_empty(
         r#"
-#[repr(C)]
 union U {
     i: i32,
     f: f32,
@@ -515,5 +514,23 @@ fn f(u: U) {
             ct C pub const C: i32
             ct D pub const D: i32
         "#]],
-    )
+    );
+
+    check_empty(
+        r#"
+#[lang = "u32"]
+impl u32 {
+    pub const MIN: Self = 0;
+}
+
+fn f(v: u32) {
+    match v {
+        u32::$0
+    }
+}
+        "#,
+        expect![[r#"
+            ct MIN pub const MIN: Self
+        "#]],
+    );
 }