From 31af774254d1fb4e9105ba050546db16b9b54fb6 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Fri, 21 Feb 2020 15:34:06 +0100 Subject: Refactor how builtins are resolved This fixes autocompletion suggesting e.g. self::usize. --- crates/ra_ide/src/completion/complete_path.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'crates/ra_ide/src/completion') diff --git a/crates/ra_ide/src/completion/complete_path.rs b/crates/ra_ide/src/completion/complete_path.rs index af24e9f48..2d7f09a6c 100644 --- a/crates/ra_ide/src/completion/complete_path.rs +++ b/crates/ra_ide/src/completion/complete_path.rs @@ -1,4 +1,4 @@ -//! FIXME: write short doc here +//! Completion of paths, including when writing a single name. use hir::{Adt, PathResolution, ScopeDef}; use ra_syntax::AstNode; @@ -20,10 +20,6 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { let module_scope = module.scope(ctx.db); for (name, def) in module_scope { if ctx.use_item_syntax.is_some() { - if let hir::ScopeDef::ModuleDef(hir::ModuleDef::BuiltinType(..)) = def { - tested_by!(dont_complete_primitive_in_use); - continue; - } if let ScopeDef::Unknown = def { if let Some(name_ref) = ctx.name_ref_syntax.as_ref() { if name_ref.syntax().text() == name.to_string().as_str() { @@ -125,11 +121,16 @@ mod tests { #[test] fn dont_complete_primitive_in_use() { - covers!(dont_complete_primitive_in_use); let completions = do_completion(r"use self::<|>;", CompletionKind::BuiltinType); assert!(completions.is_empty()); } + #[test] + fn dont_complete_primitive_in_module_scope() { + let completions = do_completion(r"fn foo() { self::<|> }", CompletionKind::BuiltinType); + assert!(completions.is_empty()); + } + #[test] fn completes_primitives() { let completions = -- cgit v1.2.3