mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-28 05:53:45 +00:00
Auto merge of #17192 - roife:fix-issue-17179, r=lnicola
Fix source_range for INT_NUMBER in completion fix #17179. Previously r-a use `TextRange::empty(self.position.offset)` as `source_range` for `INT_NUMBER`, so the `text_edit` would always be an insertion, which results in #17179. This PR changed it by using `text_range` of `original_token` (same as `IDENT`).
This commit is contained in:
commit
9ec04ed43d
2 changed files with 46 additions and 1 deletions
|
@ -466,7 +466,7 @@ impl CompletionContext<'_> {
|
|||
cov_mark::hit!(completes_if_lifetime_without_idents);
|
||||
TextRange::at(self.original_token.text_range().start(), TextSize::from(1))
|
||||
}
|
||||
IDENT | LIFETIME_IDENT | UNDERSCORE => self.original_token.text_range(),
|
||||
IDENT | LIFETIME_IDENT | UNDERSCORE | INT_NUMBER => self.original_token.text_range(),
|
||||
_ if kind.is_keyword() => self.original_token.text_range(),
|
||||
_ => TextRange::empty(self.position.offset),
|
||||
}
|
||||
|
|
|
@ -1730,6 +1730,51 @@ fn foo(a: A) { B { bar: a.$0 }; }
|
|||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tuple_field_detail() {
|
||||
check(
|
||||
r#"
|
||||
struct S(i32);
|
||||
|
||||
fn f() -> i32 {
|
||||
let s = S(0);
|
||||
s.0$0
|
||||
}
|
||||
"#,
|
||||
SymbolKind::Field,
|
||||
expect![[r#"
|
||||
[
|
||||
CompletionItem {
|
||||
label: "0",
|
||||
source_range: 56..57,
|
||||
delete: 56..57,
|
||||
insert: "0",
|
||||
kind: SymbolKind(
|
||||
Field,
|
||||
),
|
||||
detail: "i32",
|
||||
relevance: CompletionRelevance {
|
||||
exact_name_match: false,
|
||||
type_match: Some(
|
||||
Exact,
|
||||
),
|
||||
is_local: false,
|
||||
is_item_from_trait: false,
|
||||
is_item_from_notable_trait: false,
|
||||
is_name_already_imported: false,
|
||||
requires_import: false,
|
||||
is_op_method: false,
|
||||
is_private_editable: false,
|
||||
postfix_match: None,
|
||||
is_definite: false,
|
||||
function: None,
|
||||
},
|
||||
},
|
||||
]
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn record_field_and_call_relevances() {
|
||||
check_relevance(
|
||||
|
|
Loading…
Reference in a new issue