mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 11:31:15 +00:00
feat: Add an assist to extract an expression into a constant
This commit is contained in:
parent
17e482b1a9
commit
1979d3f9b5
File diff suppressed because it is too large
Load Diff
@ -363,6 +363,7 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
expect![[r#"
|
expect![[r#"
|
||||||
Convert integer base
|
Convert integer base
|
||||||
Extract into variable
|
Extract into variable
|
||||||
|
Extract into constant
|
||||||
Extract into function
|
Extract into function
|
||||||
Replace if let with match
|
Replace if let with match
|
||||||
"#]]
|
"#]]
|
||||||
@ -392,6 +393,7 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
expect![[r#"
|
expect![[r#"
|
||||||
Convert integer base
|
Convert integer base
|
||||||
Extract into variable
|
Extract into variable
|
||||||
|
Extract into constant
|
||||||
Extract into function
|
Extract into function
|
||||||
Replace if let with match
|
Replace if let with match
|
||||||
"#]]
|
"#]]
|
||||||
@ -406,6 +408,7 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
|
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
Extract into variable
|
Extract into variable
|
||||||
|
Extract into constant
|
||||||
Extract into function
|
Extract into function
|
||||||
"#]]
|
"#]]
|
||||||
.assert_eq(&expected);
|
.assert_eq(&expected);
|
||||||
@ -440,7 +443,7 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
|
|
||||||
{
|
{
|
||||||
let assists = assists(&db, &cfg, AssistResolveStrategy::None, frange.into());
|
let assists = assists(&db, &cfg, AssistResolveStrategy::None, frange.into());
|
||||||
assert_eq!(2, assists.len());
|
assert_eq!(3, assists.len());
|
||||||
let mut assists = assists.into_iter();
|
let mut assists = assists.into_iter();
|
||||||
|
|
||||||
let extract_into_variable_assist = assists.next().unwrap();
|
let extract_into_variable_assist = assists.next().unwrap();
|
||||||
@ -459,6 +462,22 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
"#]]
|
"#]]
|
||||||
.assert_debug_eq(&extract_into_variable_assist);
|
.assert_debug_eq(&extract_into_variable_assist);
|
||||||
|
|
||||||
|
let extract_into_constant_assist = assists.next().unwrap();
|
||||||
|
expect![[r#"
|
||||||
|
Assist {
|
||||||
|
id: AssistId(
|
||||||
|
"extract_constant",
|
||||||
|
RefactorExtract,
|
||||||
|
),
|
||||||
|
label: "Extract into constant",
|
||||||
|
group: None,
|
||||||
|
target: 59..60,
|
||||||
|
source_change: None,
|
||||||
|
command: None,
|
||||||
|
}
|
||||||
|
"#]]
|
||||||
|
.assert_debug_eq(&extract_into_constant_assist);
|
||||||
|
|
||||||
let extract_into_function_assist = assists.next().unwrap();
|
let extract_into_function_assist = assists.next().unwrap();
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
Assist {
|
Assist {
|
||||||
@ -486,7 +505,7 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
}),
|
}),
|
||||||
frange.into(),
|
frange.into(),
|
||||||
);
|
);
|
||||||
assert_eq!(2, assists.len());
|
assert_eq!(3, assists.len());
|
||||||
let mut assists = assists.into_iter();
|
let mut assists = assists.into_iter();
|
||||||
|
|
||||||
let extract_into_variable_assist = assists.next().unwrap();
|
let extract_into_variable_assist = assists.next().unwrap();
|
||||||
@ -505,6 +524,22 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
"#]]
|
"#]]
|
||||||
.assert_debug_eq(&extract_into_variable_assist);
|
.assert_debug_eq(&extract_into_variable_assist);
|
||||||
|
|
||||||
|
let extract_into_constant_assist = assists.next().unwrap();
|
||||||
|
expect![[r#"
|
||||||
|
Assist {
|
||||||
|
id: AssistId(
|
||||||
|
"extract_constant",
|
||||||
|
RefactorExtract,
|
||||||
|
),
|
||||||
|
label: "Extract into constant",
|
||||||
|
group: None,
|
||||||
|
target: 59..60,
|
||||||
|
source_change: None,
|
||||||
|
command: None,
|
||||||
|
}
|
||||||
|
"#]]
|
||||||
|
.assert_debug_eq(&extract_into_constant_assist);
|
||||||
|
|
||||||
let extract_into_function_assist = assists.next().unwrap();
|
let extract_into_function_assist = assists.next().unwrap();
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
Assist {
|
Assist {
|
||||||
@ -532,7 +567,7 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
}),
|
}),
|
||||||
frange.into(),
|
frange.into(),
|
||||||
);
|
);
|
||||||
assert_eq!(2, assists.len());
|
assert_eq!(3, assists.len());
|
||||||
let mut assists = assists.into_iter();
|
let mut assists = assists.into_iter();
|
||||||
|
|
||||||
let extract_into_variable_assist = assists.next().unwrap();
|
let extract_into_variable_assist = assists.next().unwrap();
|
||||||
@ -594,6 +629,22 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
"#]]
|
"#]]
|
||||||
.assert_debug_eq(&extract_into_variable_assist);
|
.assert_debug_eq(&extract_into_variable_assist);
|
||||||
|
|
||||||
|
let extract_into_constant_assist = assists.next().unwrap();
|
||||||
|
expect![[r#"
|
||||||
|
Assist {
|
||||||
|
id: AssistId(
|
||||||
|
"extract_constant",
|
||||||
|
RefactorExtract,
|
||||||
|
),
|
||||||
|
label: "Extract into constant",
|
||||||
|
group: None,
|
||||||
|
target: 59..60,
|
||||||
|
source_change: None,
|
||||||
|
command: None,
|
||||||
|
}
|
||||||
|
"#]]
|
||||||
|
.assert_debug_eq(&extract_into_constant_assist);
|
||||||
|
|
||||||
let extract_into_function_assist = assists.next().unwrap();
|
let extract_into_function_assist = assists.next().unwrap();
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
Assist {
|
Assist {
|
||||||
@ -613,7 +664,7 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
|
|
||||||
{
|
{
|
||||||
let assists = assists(&db, &cfg, AssistResolveStrategy::All, frange.into());
|
let assists = assists(&db, &cfg, AssistResolveStrategy::All, frange.into());
|
||||||
assert_eq!(2, assists.len());
|
assert_eq!(3, assists.len());
|
||||||
let mut assists = assists.into_iter();
|
let mut assists = assists.into_iter();
|
||||||
|
|
||||||
let extract_into_variable_assist = assists.next().unwrap();
|
let extract_into_variable_assist = assists.next().unwrap();
|
||||||
@ -675,6 +726,69 @@ pub fn test_some_range(a: int) -> bool {
|
|||||||
"#]]
|
"#]]
|
||||||
.assert_debug_eq(&extract_into_variable_assist);
|
.assert_debug_eq(&extract_into_variable_assist);
|
||||||
|
|
||||||
|
let extract_into_constant_assist = assists.next().unwrap();
|
||||||
|
expect![[r#"
|
||||||
|
Assist {
|
||||||
|
id: AssistId(
|
||||||
|
"extract_constant",
|
||||||
|
RefactorExtract,
|
||||||
|
),
|
||||||
|
label: "Extract into constant",
|
||||||
|
group: None,
|
||||||
|
target: 59..60,
|
||||||
|
source_change: Some(
|
||||||
|
SourceChange {
|
||||||
|
source_file_edits: {
|
||||||
|
FileId(
|
||||||
|
0,
|
||||||
|
): (
|
||||||
|
TextEdit {
|
||||||
|
indels: [
|
||||||
|
Indel {
|
||||||
|
insert: "const",
|
||||||
|
delete: 45..47,
|
||||||
|
},
|
||||||
|
Indel {
|
||||||
|
insert: "VAR_NAME:",
|
||||||
|
delete: 48..60,
|
||||||
|
},
|
||||||
|
Indel {
|
||||||
|
insert: "i32",
|
||||||
|
delete: 61..81,
|
||||||
|
},
|
||||||
|
Indel {
|
||||||
|
insert: "=",
|
||||||
|
delete: 82..86,
|
||||||
|
},
|
||||||
|
Indel {
|
||||||
|
insert: "5;\n if let 2..6 = VAR_NAME {\n true\n } else {\n false\n }",
|
||||||
|
delete: 87..108,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
Some(
|
||||||
|
SnippetEdit(
|
||||||
|
[
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
51..51,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
file_system_edits: [],
|
||||||
|
is_snippet: true,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
command: Some(
|
||||||
|
Rename,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
"#]]
|
||||||
|
.assert_debug_eq(&extract_into_constant_assist);
|
||||||
|
|
||||||
let extract_into_function_assist = assists.next().unwrap();
|
let extract_into_function_assist = assists.next().unwrap();
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
Assist {
|
Assist {
|
||||||
|
@ -932,6 +932,24 @@ enum TheEnum {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn doctest_extract_constant() {
|
||||||
|
check_doc_test(
|
||||||
|
"extract_constant",
|
||||||
|
r#####"
|
||||||
|
fn main() {
|
||||||
|
$0(1 + 2)$0 * 4;
|
||||||
|
}
|
||||||
|
"#####,
|
||||||
|
r#####"
|
||||||
|
fn main() {
|
||||||
|
const $0VAR_NAME: i32 = 1 + 2;
|
||||||
|
VAR_NAME * 4;
|
||||||
|
}
|
||||||
|
"#####,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn doctest_extract_expressions_from_format_string() {
|
fn doctest_extract_expressions_from_format_string() {
|
||||||
check_doc_test(
|
check_doc_test(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user