Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ea5e5ca

Browse files
committed
Auto merge of #133546 - SomeoneToIgnore:beta, r=Mark-Simulacrum
[beta] Revert r-a completions breakage As suggested by `@cuviper` in https://rust-lang.zulipchat.com/#narrow/channel/185405-t-compiler.2Frust-analyzer/topic/Completion.20IDs/near/484770216 Repeats the revert to `stable` #133476 using https://patch-diff.githubusercontent.com/raw/rust-lang/rust/pull/133476.diff cc `@BoxyUwU` `@workingjubilee`
2 parents 0f13036 + 8d3b048 commit ea5e5ca

File tree

11 files changed

+74
-243
lines changed

11 files changed

+74
-243
lines changed

‎src/tools/rust-analyzer/crates/ide-completion/src/config.rs‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use hir::ImportPathConfig;
88
use ide_db::{imports::insert_use::InsertUseConfig, SnippetCap};
99

10-
use crate::{snippet::Snippet,CompletionFieldsToResolve};
10+
use crate::snippet::Snippet;
1111

1212
#[derive(Clone, Debug, PartialEq, Eq)]
1313
pub struct CompletionConfig {
@@ -27,7 +27,6 @@ pub struct CompletionConfig {
2727
pub prefer_absolute: bool,
2828
pub snippets: Vec<Snippet>,
2929
pub limit: Option<usize>,
30-
pub fields_to_resolve: CompletionFieldsToResolve,
3130
}
3231

3332
#[derive(Clone, Debug, PartialEq, Eq)]

‎src/tools/rust-analyzer/crates/ide-completion/src/lib.rs‎

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -38,31 +38,6 @@ pub use crate::{
3838
snippet::{Snippet, SnippetScope},
3939
};
4040

41-
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
42-
pub struct CompletionFieldsToResolve {
43-
pub resolve_label_details: bool,
44-
pub resolve_tags: bool,
45-
pub resolve_detail: bool,
46-
pub resolve_documentation: bool,
47-
pub resolve_filter_text: bool,
48-
pub resolve_text_edit: bool,
49-
pub resolve_command: bool,
50-
}
51-
52-
impl CompletionFieldsToResolve {
53-
pub const fn empty() -> Self {
54-
Self {
55-
resolve_label_details: false,
56-
resolve_tags: false,
57-
resolve_detail: false,
58-
resolve_documentation: false,
59-
resolve_filter_text: false,
60-
resolve_text_edit: false,
61-
resolve_command: false,
62-
}
63-
}
64-
}
65-
6641
//FIXME: split the following feature into fine-grained features.
6742

6843
// Feature: Magic Completions

‎src/tools/rust-analyzer/crates/ide-completion/src/tests.rs‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ use test_fixture::ChangeFixture;
3737
use test_utils::assert_eq_text;
3838

3939
use crate::{
40-
resolve_completion_edits, CallableSnippets, CompletionConfig, CompletionFieldsToResolve,
41-
CompletionItem,CompletionItemKind,
40+
resolve_completion_edits, CallableSnippets, CompletionConfig, CompletionItem,
41+
CompletionItemKind,
4242
};
4343

4444
/// Lots of basic item definitions
@@ -84,7 +84,6 @@ pub(crate) const TEST_CONFIG: CompletionConfig = CompletionConfig {
8484
prefer_absolute: false,
8585
snippets: Vec::new(),
8686
limit: None,
87-
fields_to_resolve: CompletionFieldsToResolve::empty(),
8887
};
8988

9089
pub(crate) fn completion_list(ra_fixture: &str) -> String {

‎src/tools/rust-analyzer/crates/ide/src/lib.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ pub use ide_assists::{
119119
Assist, AssistConfig, AssistId, AssistKind, AssistResolveStrategy, SingleResolve,
120120
};
121121
pub use ide_completion::{
122-
CallableSnippets, CompletionConfig, CompletionFieldsToResolve,CompletionItem,
123-
CompletionItemKind,CompletionRelevance,Snippet, SnippetScope,
122+
CallableSnippets, CompletionConfig, CompletionItem,CompletionItemKind,CompletionRelevance,
123+
Snippet, SnippetScope,
124124
};
125125
pub use ide_db::text_edit::{Indel, TextEdit};
126126
pub use ide_db::{

‎src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs‎

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use cfg::{CfgAtom, CfgDiff};
1313
use hir::Symbol;
1414
use ide::{
1515
AssistConfig, CallHierarchyConfig, CallableSnippets, CompletionConfig,
16-
CompletionFieldsToResolve, DiagnosticsConfig, ExprFillDefaultMode, GenericParameterHints,
16+
DiagnosticsConfig, ExprFillDefaultMode, GenericParameterHints,
1717
HighlightConfig, HighlightRelatedConfig, HoverConfig, HoverDocFormat, InlayFieldsToResolve,
1818
InlayHintsConfig, JoinLinesConfig, MemoryLayoutHoverConfig, MemoryLayoutHoverRenderKind,
1919
Snippet, SnippetScope, SourceRootId,
@@ -1418,7 +1418,6 @@ impl Config {
14181418
}
14191419

14201420
pub fn completion(&self, source_root: Option<SourceRootId>) -> CompletionConfig {
1421-
let client_capability_fields = self.completion_resolve_support_properties();
14221421
CompletionConfig {
14231422
enable_postfix_completions: self.completion_postfix_enable(source_root).to_owned(),
14241423
enable_imports_on_the_fly: self.completion_autoimport_enable(source_root).to_owned()
@@ -1443,15 +1442,6 @@ impl Config {
14431442
limit: self.completion_limit(source_root).to_owned(),
14441443
enable_term_search: self.completion_termSearch_enable(source_root).to_owned(),
14451444
term_search_fuel: self.completion_termSearch_fuel(source_root).to_owned() as u64,
1446-
fields_to_resolve: CompletionFieldsToResolve {
1447-
resolve_label_details: client_capability_fields.contains("labelDetails"),
1448-
resolve_tags: client_capability_fields.contains("tags"),
1449-
resolve_detail: client_capability_fields.contains("detail"),
1450-
resolve_documentation: client_capability_fields.contains("documentation"),
1451-
resolve_filter_text: client_capability_fields.contains("filterText"),
1452-
resolve_text_edit: client_capability_fields.contains("textEdit"),
1453-
resolve_command: client_capability_fields.contains("command"),
1454-
},
14551445
}
14561446
}
14571447

‎src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs‎

Lines changed: 29 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ use std::{
1111
use anyhow::Context;
1212

1313
use ide::{
14-
AnnotationConfig, AssistKind, AssistResolveStrategy, Cancellable, CompletionFieldsToResolve,
15-
FilePosition,FileRange,HoverAction, HoverGotoTypeData, InlayFieldsToResolve, Query,
16-
RangeInfo,ReferenceCategory,Runnable, RunnableKind, SingleResolve, SourceChange, TextEdit,
14+
AnnotationConfig, AssistKind, AssistResolveStrategy, Cancellable, FilePosition,FileRange,
15+
HoverAction, HoverGotoTypeData, InlayFieldsToResolve, Query,RangeInfo,ReferenceCategory,
16+
Runnable, RunnableKind, SingleResolve, SourceChange, TextEdit,
1717
};
1818
use ide_db::{FxHashMap, SymbolKind};
1919
use itertools::Itertools;
@@ -1086,11 +1086,9 @@ pub(crate) fn handle_completion(
10861086

10871087
let items = to_proto::completion_items(
10881088
&snap.config,
1089-
&completion_config.fields_to_resolve,
10901089
&line_index,
10911090
snap.file_version(position.file_id),
10921091
text_document_position,
1093-
completion_trigger_character,
10941092
items,
10951093
);
10961094

@@ -1123,68 +1121,36 @@ pub(crate) fn handle_completion_resolve(
11231121
};
11241122
let source_root = snap.analysis.source_root_id(file_id)?;
11251123

1126-
let mut forced_resolve_completions_config = snap.config.completion(Some(source_root));
1127-
forced_resolve_completions_config.fields_to_resolve = CompletionFieldsToResolve::empty();
1128-
1129-
let position = FilePosition { file_id, offset };
1130-
let Some(resolved_completions) = snap.analysis.completions(
1131-
&forced_resolve_completions_config,
1132-
position,
1133-
resolve_data.trigger_character,
1134-
)?
1135-
else {
1136-
return Ok(original_completion);
1137-
};
1138-
let mut resolved_completions = to_proto::completion_items(
1139-
&snap.config,
1140-
&forced_resolve_completions_config.fields_to_resolve,
1141-
&line_index,
1142-
snap.file_version(position.file_id),
1143-
resolve_data.position,
1144-
resolve_data.trigger_character,
1145-
resolved_completions,
1146-
);
1147-
1148-
let mut resolved_completion =
1149-
if resolved_completions.get(resolve_data.completion_item_index).is_some() {
1150-
resolved_completions.swap_remove(resolve_data.completion_item_index)
1151-
} else {
1152-
return Ok(original_completion);
1153-
};
1124+
let additional_edits = snap
1125+
.analysis
1126+
.resolve_completion_edits(
1127+
&snap.config.completion(Some(source_root)),
1128+
FilePosition { file_id, offset },
1129+
resolve_data
1130+
.imports
1131+
.into_iter()
1132+
.map(|import| (import.full_import_path, import.imported_name)),
1133+
)?
1134+
.into_iter()
1135+
.flat_map(|edit| edit.into_iter().map(|indel| to_proto::text_edit(&line_index, indel)))
1136+
.collect::<Vec<_>>();
11541137

1155-
if !resolve_data.imports.is_empty() {
1156-
let additional_edits = snap
1157-
.analysis
1158-
.resolve_completion_edits(
1159-
&forced_resolve_completions_config,
1160-
position,
1161-
resolve_data
1162-
.imports
1163-
.into_iter()
1164-
.map(|import| (import.full_import_path, import.imported_name)),
1165-
)?
1166-
.into_iter()
1167-
.flat_map(|edit| edit.into_iter().map(|indel| to_proto::text_edit(&line_index, indel)))
1168-
.collect::<Vec<_>>();
1169-
1170-
if !all_edits_are_disjoint(&resolved_completion, &additional_edits) {
1171-
return Err(LspError::new(
1172-
ErrorCode::InternalError as i32,
1173-
"Import edit overlaps with the original completion edits, this is not LSP-compliant"
1174-
.into(),
1175-
)
1176-
.into());
1177-
}
1138+
if !all_edits_are_disjoint(&original_completion, &additional_edits) {
1139+
return Err(LspError::new(
1140+
ErrorCode::InternalError as i32,
1141+
"Import edit overlaps with the original completion edits, this is not LSP-compliant"
1142+
.into(),
1143+
)
1144+
.into());
1145+
}
11781146

1179-
if let Some(original_additional_edits) = resolved_completion.additional_text_edits.as_mut()
1180-
{
1181-
original_additional_edits.extend(additional_edits)
1182-
} else {
1183-
resolved_completion.additional_text_edits = Some(additional_edits);
1184-
}
1147+
if let Some(original_additional_edits) = original_completion.additional_text_edits.as_mut() {
1148+
original_additional_edits.extend(additional_edits)
1149+
} else {
1150+
original_completion.additional_text_edits = Some(additional_edits);
11851151
}
11861152

1187-
Ok(resolved_completion)
1153+
Ok(original_completion)
11881154
}
11891155

11901156
pub(crate) fn handle_folding_range(

‎src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
1313
use hir::ChangeWithProcMacros;
1414
use ide::{
15-
AnalysisHost, CallableSnippets, CompletionConfig, CompletionFieldsToResolve, DiagnosticsConfig,
16-
FilePosition, TextSize,
15+
AnalysisHost, CallableSnippets, CompletionConfig, DiagnosticsConfig, FilePosition, TextSize,
1716
};
1817
use ide_db::{
1918
imports::insert_use::{ImportGranularity, InsertUseConfig},
@@ -173,7 +172,6 @@ fn integrated_completion_benchmark() {
173172
snippets: Vec::new(),
174173
limit: None,
175174
add_semicolon_to_unit: true,
176-
fields_to_resolve: CompletionFieldsToResolve::empty(),
177175
};
178176
let position =
179177
FilePosition { file_id, offset: TextSize::try_from(completion_offset).unwrap() };
@@ -221,7 +219,6 @@ fn integrated_completion_benchmark() {
221219
snippets: Vec::new(),
222220
limit: None,
223221
add_semicolon_to_unit: true,
224-
fields_to_resolve: CompletionFieldsToResolve::empty(),
225222
};
226223
let position =
227224
FilePosition { file_id, offset: TextSize::try_from(completion_offset).unwrap() };
@@ -267,7 +264,6 @@ fn integrated_completion_benchmark() {
267264
snippets: Vec::new(),
268265
limit: None,
269266
add_semicolon_to_unit: true,
270-
fields_to_resolve: CompletionFieldsToResolve::empty(),
271267
};
272268
let position =
273269
FilePosition { file_id, offset: TextSize::try_from(completion_offset).unwrap() };

‎src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/capabilities.rs‎

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ impl ClientCapabilities {
468468
.unwrap_or_default()
469469
}
470470

471-
pub fn inlay_hint_resolve_support_properties(&self) -> FxHashSet<&str> {
471+
pub fn inlay_hint_resolve_support_properties(&self) -> FxHashSet<String> {
472472
self.0
473473
.text_document
474474
.as_ref()
@@ -477,22 +477,8 @@ impl ClientCapabilities {
477477
.map(|inlay_resolve| inlay_resolve.properties.iter())
478478
.into_iter()
479479
.flatten()
480-
.map(|s| s.as_str())
481-
.collect()
482-
}
483-
484-
pub fn completion_resolve_support_properties(&self) -> FxHashSet<&str> {
485-
self.0
486-
.text_document
487-
.as_ref()
488-
.and_then(|text| text.completion.as_ref())
489-
.and_then(|completion_caps| completion_caps.completion_item.as_ref())
490-
.and_then(|completion_item_caps| completion_item_caps.resolve_support.as_ref())
491-
.map(|resolve_support| resolve_support.properties.iter())
492-
.into_iter()
493-
.flatten()
494-
.map(|s| s.as_str())
495-
.collect()
480+
.cloned()
481+
.collect::<FxHashSet<_>>()
496482
}
497483

498484
pub fn hover_markdown_support(&self) -> bool {

‎src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -825,8 +825,6 @@ pub struct CompletionResolveData {
825825
pub position: lsp_types::TextDocumentPositionParams,
826826
pub imports: Vec<CompletionImport>,
827827
pub version: Option<i32>,
828-
pub trigger_character: Option<char>,
829-
pub completion_item_index: usize,
830828
}
831829

832830
#[derive(Debug, Serialize, Deserialize)]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /