@@ -10,9 +10,9 @@ use std::{
1010use anyhow:: Context ;
1111
1212use ide:: {
13- AnnotationConfig , AssistKind , AssistResolveStrategy , Cancellable , CompletionFieldsToResolve ,
14- FilePosition , FileRange , HoverAction , HoverGotoTypeData , InlayFieldsToResolve , Query ,
15- RangeInfo , ReferenceCategory , Runnable , RunnableKind , SingleResolve , SourceChange , TextEdit ,
13+ AnnotationConfig , AssistKind , AssistResolveStrategy , Cancellable , FilePosition , FileRange ,
14+ HoverAction , HoverGotoTypeData , InlayFieldsToResolve , Query , RangeInfo , ReferenceCategory ,
15+ Runnable , RunnableKind , SingleResolve , SourceChange , TextEdit ,
1616} ;
1717use ide_db:: SymbolKind ;
1818use itertools:: Itertools ;
@@ -1056,43 +1056,12 @@ pub(crate) fn handle_completion_resolve(
10561056 } ;
10571057 let source_root = snap. analysis . source_root_id ( file_id) ?;
10581058
1059- let mut forced_resolve_completions_config = snap. config . completion ( Some ( source_root) ) ;
1060- forced_resolve_completions_config. fields_to_resolve = CompletionFieldsToResolve :: empty ( ) ;
1061-
1062- let position = FilePosition { file_id, offset } ;
1063- let Some ( unresolved_completions) = snap. analysis . completions (
1064- & & forced_resolve_completions_config,
1065- position,
1066- resolve_data. trigger_character ,
1067- ) ?
1068- else {
1069- return Ok ( original_completion) ;
1070- } ;
1071- let resolved_completions = to_proto:: completion_items (
1072- & snap. config ,
1073- & forced_resolve_completions_config. fields_to_resolve ,
1074- & line_index,
1075- snap. file_version ( position. file_id ) ,
1076- resolve_data. position ,
1077- resolve_data. trigger_character ,
1078- unresolved_completions,
1079- ) ;
1080- let Some ( mut resolved_completion) = resolved_completions. into_iter ( ) . find ( |completion| {
1081- completion. label == original_completion. label
1082- && completion. kind == original_completion. kind
1083- && completion. deprecated == original_completion. deprecated
1084- && completion. preselect == original_completion. preselect
1085- && completion. sort_text == original_completion. sort_text
1086- } ) else {
1087- return Ok ( original_completion) ;
1088- } ;
1089-
10901059 if !resolve_data. imports . is_empty ( ) {
10911060 let additional_edits = snap
10921061 . analysis
10931062 . resolve_completion_edits (
1094- & forced_resolve_completions_config ,
1095- position ,
1063+ & snap . config . completion ( Some ( source_root ) ) ,
1064+ FilePosition { file_id , offset } ,
10961065 resolve_data
10971066 . imports
10981067 . into_iter ( )
@@ -1102,7 +1071,7 @@ pub(crate) fn handle_completion_resolve(
11021071 . flat_map ( |edit| edit. into_iter ( ) . map ( |indel| to_proto:: text_edit ( & line_index, indel) ) )
11031072 . collect :: < Vec < _ > > ( ) ;
11041073
1105- if !all_edits_are_disjoint ( & resolved_completion , & additional_edits) {
1074+ if !all_edits_are_disjoint ( & original_completion , & additional_edits) {
11061075 return Err ( LspError :: new (
11071076 ErrorCode :: InternalError as i32 ,
11081077 "Import edit overlaps with the original completion edits, this is not LSP-compliant"
@@ -1111,15 +1080,15 @@ pub(crate) fn handle_completion_resolve(
11111080 . into ( ) ) ;
11121081 }
11131082
1114- if let Some ( original_additional_edits) = resolved_completion . additional_text_edits . as_mut ( )
1083+ if let Some ( original_additional_edits) = original_completion . additional_text_edits . as_mut ( )
11151084 {
11161085 original_additional_edits. extend ( additional_edits)
11171086 } else {
1118- resolved_completion . additional_text_edits = Some ( additional_edits) ;
1087+ original_completion . additional_text_edits = Some ( additional_edits) ;
11191088 }
11201089 }
11211090
1122- Ok ( resolved_completion )
1091+ Ok ( original_completion )
11231092}
11241093
11251094pub ( crate ) fn handle_folding_range (
0 commit comments