From ec9ef9c28325ca8d2c520d4316e2d82281c0cbf1 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 11 Jun 2021 23:12:30 +0200 Subject: Complete associated types in dyn and impl trait --- crates/ide_completion/src/patterns.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'crates/ide_completion/src/patterns.rs') diff --git a/crates/ide_completion/src/patterns.rs b/crates/ide_completion/src/patterns.rs index ee87bf461..81d7a1a1d 100644 --- a/crates/ide_completion/src/patterns.rs +++ b/crates/ide_completion/src/patterns.rs @@ -47,6 +47,9 @@ pub(crate) enum ImmediateLocation { receiver_is_ambiguous_float_literal: bool, }, // Original file ast node + // Only set from a type arg + GenericArgList(ast::GenericArgList), + // Original file ast node /// The record expr of the field name we are completing RecordExpr(ast::RecordExpr), // Original file ast node @@ -159,7 +162,6 @@ pub(crate) fn determine_location( } } }; - let res = match_ast! { match parent { ast::IdentPat(_it) => ImmediateLocation::IdentPat, @@ -174,6 +176,9 @@ pub(crate) fn determine_location( Some(TRAIT) => ImmediateLocation::Trait, _ => return None, }, + ast::GenericArgList(_it) => sema + .find_node_at_offset_with_macros(original_file, offset) + .map(ImmediateLocation::GenericArgList)?, ast::Module(it) => { if it.item_list().is_none() { ImmediateLocation::ModDeclaration(it) -- cgit v1.2.3