@@ -10,9 +10,9 @@ use std::{
10
10
use anyhow:: Context ;
11
11
12
12
use 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 ,
16
16
} ;
17
17
use ide_db:: SymbolKind ;
18
18
use itertools:: Itertools ;
@@ -1056,43 +1056,12 @@ pub(crate) fn handle_completion_resolve(
1056
1056
} ;
1057
1057
let source_root = snap. analysis . source_root_id ( file_id) ?;
1058
1058
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
-
1090
1059
if !resolve_data. imports . is_empty ( ) {
1091
1060
let additional_edits = snap
1092
1061
. analysis
1093
1062
. resolve_completion_edits (
1094
- & forced_resolve_completions_config ,
1095
- position ,
1063
+ & snap . config . completion ( Some ( source_root ) ) ,
1064
+ FilePosition { file_id , offset } ,
1096
1065
resolve_data
1097
1066
. imports
1098
1067
. into_iter ( )
@@ -1102,7 +1071,7 @@ pub(crate) fn handle_completion_resolve(
1102
1071
. flat_map ( |edit| edit. into_iter ( ) . map ( |indel| to_proto:: text_edit ( & line_index, indel) ) )
1103
1072
. collect :: < Vec < _ > > ( ) ;
1104
1073
1105
- if !all_edits_are_disjoint ( & resolved_completion , & additional_edits) {
1074
+ if !all_edits_are_disjoint ( & original_completion , & additional_edits) {
1106
1075
return Err ( LspError :: new (
1107
1076
ErrorCode :: InternalError as i32 ,
1108
1077
"Import edit overlaps with the original completion edits, this is not LSP-compliant"
@@ -1111,15 +1080,15 @@ pub(crate) fn handle_completion_resolve(
1111
1080
. into ( ) ) ;
1112
1081
}
1113
1082
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 ( )
1115
1084
{
1116
1085
original_additional_edits. extend ( additional_edits)
1117
1086
} else {
1118
- resolved_completion . additional_text_edits = Some ( additional_edits) ;
1087
+ original_completion . additional_text_edits = Some ( additional_edits) ;
1119
1088
}
1120
1089
}
1121
1090
1122
- Ok ( resolved_completion )
1091
+ Ok ( original_completion )
1123
1092
}
1124
1093
1125
1094
pub ( crate ) fn handle_folding_range (
0 commit comments