From b184bfad7a2dc6a9bf6654a7eec6c68a27c49f70 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Sun, 20 Dec 2020 18:19:23 +0100 Subject: Add completions for patterns --- crates/completion/src/completions.rs | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'crates/completion/src/completions.rs') diff --git a/crates/completion/src/completions.rs b/crates/completion/src/completions.rs index 1ef6b5f48..d9fe13485 100644 --- a/crates/completion/src/completions.rs +++ b/crates/completion/src/completions.rs @@ -19,9 +19,14 @@ use hir::{ModPath, ScopeDef, Type}; use crate::{ item::Builder, render::{ - const_::render_const, enum_variant::render_variant, function::render_fn, - macro_::render_macro, render_field, render_resolution, render_tuple_field, - type_alias::render_type_alias, RenderContext, + const_::render_const, + enum_variant::render_variant, + function::render_fn, + macro_::render_macro, + pattern::{render_struct_pat, render_variant_pat}, + render_field, render_resolution, render_tuple_field, + type_alias::render_type_alias, + RenderContext, }, CompletionContext, CompletionItem, }; @@ -105,6 +110,28 @@ impl Completions { self.add(item) } + pub(crate) fn add_variant_pat( + &mut self, + ctx: &CompletionContext, + variant: hir::Variant, + local_name: Option, + ) { + if let Some(item) = render_variant_pat(RenderContext::new(ctx), variant, local_name) { + self.add(item); + } + } + + pub(crate) fn add_struct_pat( + &mut self, + ctx: &CompletionContext, + strukt: hir::Struct, + local_name: Option, + ) { + if let Some(item) = render_struct_pat(RenderContext::new(ctx), strukt, local_name) { + self.add(item); + } + } + pub(crate) fn add_const(&mut self, ctx: &CompletionContext, constant: hir::Const) { if let Some(item) = render_const(RenderContext::new(ctx), constant) { self.add(item); -- cgit v1.2.3