mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 22:01:37 +00:00
Auto merge of #18370 - duncpro:goto-def-ranges, r=Veykril
feat: resolve range patterns to their structs Closes #18367
This commit is contained in:
commit
d509449d7e
4 changed files with 124 additions and 8 deletions
|
@ -98,6 +98,7 @@ pub(crate) fn goto_definition(
|
|||
return Some(vec![x]);
|
||||
}
|
||||
}
|
||||
|
||||
Some(
|
||||
IdentClass::classify_node(sema, &parent)?
|
||||
.definitions()
|
||||
|
@ -460,7 +461,87 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_range() {
|
||||
fn goto_def_pat_range_to_inclusive() {
|
||||
check_name(
|
||||
"RangeToInclusive",
|
||||
r#"
|
||||
//- minicore: range
|
||||
fn f(ch: char) -> bool {
|
||||
match ch {
|
||||
..$0='z' => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_pat_range_to() {
|
||||
check_name(
|
||||
"RangeTo",
|
||||
r#"
|
||||
//- minicore: range
|
||||
fn f(ch: char) -> bool {
|
||||
match ch {
|
||||
.$0.'z' => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_pat_range() {
|
||||
check_name(
|
||||
"Range",
|
||||
r#"
|
||||
//- minicore: range
|
||||
fn f(ch: char) -> bool {
|
||||
match ch {
|
||||
'a'.$0.'z' => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_pat_range_inclusive() {
|
||||
check_name(
|
||||
"RangeInclusive",
|
||||
r#"
|
||||
//- minicore: range
|
||||
fn f(ch: char) -> bool {
|
||||
match ch {
|
||||
'a'..$0='z' => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_pat_range_from() {
|
||||
check_name(
|
||||
"RangeFrom",
|
||||
r#"
|
||||
//- minicore: range
|
||||
fn f(ch: char) -> bool {
|
||||
match ch {
|
||||
'a'..$0 => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_expr_range() {
|
||||
check_name(
|
||||
"Range",
|
||||
r#"
|
||||
|
@ -471,7 +552,7 @@ let x = 0.$0.1;
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_range_from() {
|
||||
fn goto_def_expr_range_from() {
|
||||
check_name(
|
||||
"RangeFrom",
|
||||
r#"
|
||||
|
@ -484,7 +565,7 @@ fn f(arr: &[i32]) -> &[i32] {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_range_inclusive() {
|
||||
fn goto_def_expr_range_inclusive() {
|
||||
check_name(
|
||||
"RangeInclusive",
|
||||
r#"
|
||||
|
@ -495,7 +576,7 @@ let x = 0.$0.=1;
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_range_full() {
|
||||
fn goto_def_expr_range_full() {
|
||||
check_name(
|
||||
"RangeFull",
|
||||
r#"
|
||||
|
@ -508,7 +589,7 @@ fn f(arr: &[i32]) -> &[i32] {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_range_to() {
|
||||
fn goto_def_expr_range_to() {
|
||||
check_name(
|
||||
"RangeTo",
|
||||
r#"
|
||||
|
@ -521,7 +602,7 @@ fn f(arr: &[i32]) -> &[i32] {
|
|||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_range_to_inclusive() {
|
||||
fn goto_def_expr_range_to_inclusive() {
|
||||
check_name(
|
||||
"RangeToInclusive",
|
||||
r#"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue