aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion/complete_path.rs
diff options
context:
space:
mode:
authorMarco Groppo <[email protected]>2019-04-14 23:03:54 +0100
committerMarco Groppo <[email protected]>2019-04-19 23:10:19 +0100
commite85ee60c42db57368e24ad9ac24840c2494d383c (patch)
treea94bb45556b404452e2ef282e6d11887f93601ca /crates/ra_ide_api/src/completion/complete_path.rs
parentd55f1136d6444b1f50b9092c36a976d0e1c26202 (diff)
Initial support for lang items.
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_path.rs')
-rw-r--r--crates/ra_ide_api/src/completion/complete_path.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs
index bc03a7095..c49147b9e 100644
--- a/crates/ra_ide_api/src/completion/complete_path.rs
+++ b/crates/ra_ide_api/src/completion/complete_path.rs
@@ -38,18 +38,21 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) {
38 } 38 }
39 hir::ModuleDef::Struct(s) => { 39 hir::ModuleDef::Struct(s) => {
40 let ty = s.ty(ctx.db); 40 let ty = s.ty(ctx.db);
41 ty.iterate_impl_items(ctx.db, |item| { 41 let krate = ctx.module.and_then(|m| m.krate(ctx.db));
42 match item { 42 krate.map_or((), |krate| {
43 hir::ImplItem::Method(func) => { 43 ty.iterate_impl_items(ctx.db, krate, |item| {
44 let sig = func.signature(ctx.db); 44 match item {
45 if !sig.has_self_param() { 45 hir::ImplItem::Method(func) => {
46 acc.add_function(ctx, func); 46 let sig = func.signature(ctx.db);
47 if !sig.has_self_param() {
48 acc.add_function(ctx, func);
49 }
47 } 50 }
51 hir::ImplItem::Const(ct) => acc.add_const(ctx, ct),
52 hir::ImplItem::TypeAlias(ty) => acc.add_type_alias(ctx, ty),
48 } 53 }
49 hir::ImplItem::Const(ct) => acc.add_const(ctx, ct), 54 None::<()>
50 hir::ImplItem::TypeAlias(ty) => acc.add_type_alias(ctx, ty), 55 });
51 }
52 None::<()>
53 }); 56 });
54 } 57 }
55 _ => return, 58 _ => return,