mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-28 21:05:13 +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);
|
cov_mark::hit!(completes_if_lifetime_without_idents);
|
||||||
TextRange::at(self.original_token.text_range().start(), TextSize::from(1))
|
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(),
|
_ if kind.is_keyword() => self.original_token.text_range(),
|
||||||
_ => TextRange::empty(self.position.offset),
|
_ => 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]
|
#[test]
|
||||||
fn record_field_and_call_relevances() {
|
fn record_field_and_call_relevances() {
|
||||||
check_relevance(
|
check_relevance(
|
||||||
|
|
Loading…
Reference in a new issue