Inline snapshots for all tests in complete_scope.rs

This commit is contained in:
Phil Ellison 2019-07-28 11:24:29 +01:00
parent 164ba6092c
commit eb7d1b0fee
14 changed files with 396 additions and 434 deletions

View file

@ -121,172 +121,431 @@ impl ImportResolver {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::completion::{check_completion, CompletionKind}; use crate::completion::{do_completion, CompletionItem, CompletionKind};
use insta::assert_debug_snapshot_matches;
fn check_reference_completion(name: &str, code: &str) { fn do_reference_completion(code: &str) -> Vec<CompletionItem> {
check_completion(name, code, CompletionKind::Reference); do_completion(code, CompletionKind::Reference)
} }
#[test] #[test]
fn completes_bindings_from_let() { fn completes_bindings_from_let() {
check_reference_completion( assert_debug_snapshot_matches!(
"bindings_from_let", do_reference_completion(
r" r"
fn quux(x: i32) { fn quux(x: i32) {
let y = 92; let y = 92;
1 + <|>; 1 + <|>;
let z = (); let z = ();
} }
", "
),
@r###"
[
CompletionItem {
label: "quux",
source_range: [91; 91),
delete: [91; 91),
insert: "quux($0)",
kind: Function,
detail: "fn quux(x: i32)",
},
CompletionItem {
label: "x",
source_range: [91; 91),
delete: [91; 91),
insert: "x",
kind: Binding,
detail: "i32",
},
CompletionItem {
label: "y",
source_range: [91; 91),
delete: [91; 91),
insert: "y",
kind: Binding,
detail: "i32",
},
]
"###
); );
} }
#[test] #[test]
fn completes_bindings_from_if_let() { fn completes_bindings_from_if_let() {
check_reference_completion( assert_debug_snapshot_matches!(
"bindings_from_if_let", do_reference_completion(
r" r"
fn quux() { fn quux() {
if let Some(x) = foo() { if let Some(x) = foo() {
let y = 92; let y = 92;
}; };
if let Some(a) = bar() { if let Some(a) = bar() {
let b = 62; let b = 62;
1 + <|> 1 + <|>
}
} }
} "
", ),
@r###"
[
CompletionItem {
label: "a",
source_range: [242; 242),
delete: [242; 242),
insert: "a",
kind: Binding,
},
CompletionItem {
label: "b",
source_range: [242; 242),
delete: [242; 242),
insert: "b",
kind: Binding,
detail: "i32",
},
CompletionItem {
label: "quux",
source_range: [242; 242),
delete: [242; 242),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
]
"###
); );
} }
#[test] #[test]
fn completes_bindings_from_for() { fn completes_bindings_from_for() {
check_reference_completion( assert_debug_snapshot_matches!(
"bindings_from_for", do_reference_completion(
r" r"
fn quux() { fn quux() {
for x in &[1, 2, 3] { for x in &[1, 2, 3] {
<|> <|>
}
} }
} "
", ),
@r###"
[
CompletionItem {
label: "quux",
source_range: [95; 95),
delete: [95; 95),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
CompletionItem {
label: "x",
source_range: [95; 95),
delete: [95; 95),
insert: "x",
kind: Binding,
},
]
"###
); );
} }
#[test] #[test]
fn completes_generic_params() { fn completes_generic_params() {
check_reference_completion( assert_debug_snapshot_matches!(
"generic_params", do_reference_completion(
r" r"
fn quux<T>() { fn quux<T>() {
<|> <|>
} }
", "
),
@r###"
[
CompletionItem {
label: "T",
source_range: [52; 52),
delete: [52; 52),
insert: "T",
kind: TypeParam,
},
CompletionItem {
label: "quux",
source_range: [52; 52),
delete: [52; 52),
insert: "quux()$0",
kind: Function,
detail: "fn quux<T>()",
},
]
"###
); );
} }
#[test] #[test]
fn completes_generic_params_in_struct() { fn completes_generic_params_in_struct() {
check_reference_completion( assert_debug_snapshot_matches!(
"generic_params_in_struct", do_reference_completion(
r" r"
struct X<T> { struct X<T> {
x: <|> x: <|>
} }
", "
),
@r###"
[
CompletionItem {
label: "T",
source_range: [54; 54),
delete: [54; 54),
insert: "T",
kind: TypeParam,
},
CompletionItem {
label: "X",
source_range: [54; 54),
delete: [54; 54),
insert: "X",
kind: Struct,
},
]
"###
); );
} }
#[test] #[test]
fn completes_module_items() { fn completes_module_items() {
check_reference_completion( assert_debug_snapshot_matches!(
"module_items", do_reference_completion(
r" r"
struct Foo; struct Foo;
enum Baz {} enum Baz {}
fn quux() { fn quux() {
<|> <|>
} }
", "
),
@r###"
[
CompletionItem {
label: "Baz",
source_range: [105; 105),
delete: [105; 105),
insert: "Baz",
kind: Enum,
},
CompletionItem {
label: "Foo",
source_range: [105; 105),
delete: [105; 105),
insert: "Foo",
kind: Struct,
},
CompletionItem {
label: "quux",
source_range: [105; 105),
delete: [105; 105),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
]
"###
); );
} }
#[test] #[test]
fn completes_extern_prelude() { fn completes_extern_prelude() {
check_reference_completion( assert_debug_snapshot_matches!(
"extern_prelude", do_reference_completion(
r" r"
//- /lib.rs //- /lib.rs
use <|>; use <|>;
//- /other_crate/lib.rs //- /other_crate/lib.rs
// nothing here // nothing here
", "
),
@r#"[
CompletionItem {
label: "other_crate",
source_range: [4; 4),
delete: [4; 4),
insert: "other_crate",
kind: Module,
},
]"#
); );
} }
#[test] #[test]
fn completes_module_items_in_nested_modules() { fn completes_module_items_in_nested_modules() {
check_reference_completion( assert_debug_snapshot_matches!(
"module_items_in_nested_modules", do_reference_completion(
r" r"
struct Foo; struct Foo;
mod m { mod m {
struct Bar; struct Bar;
fn quux() { <|> } fn quux() { <|> }
} }
", "
),
@r###"
[
CompletionItem {
label: "Bar",
source_range: [117; 117),
delete: [117; 117),
insert: "Bar",
kind: Struct,
},
CompletionItem {
label: "quux",
source_range: [117; 117),
delete: [117; 117),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
]
"###
); );
} }
#[test] #[test]
fn completes_return_type() { fn completes_return_type() {
check_reference_completion( assert_debug_snapshot_matches!(
"return_type", do_reference_completion(
r" r"
struct Foo; struct Foo;
fn x() -> <|> fn x() -> <|>
", "
) ),
@r###"
[
CompletionItem {
label: "Foo",
source_range: [55; 55),
delete: [55; 55),
insert: "Foo",
kind: Struct,
},
CompletionItem {
label: "x",
source_range: [55; 55),
delete: [55; 55),
insert: "x()$0",
kind: Function,
detail: "fn x()",
},
]
"###
);
} }
#[test] #[test]
fn dont_show_both_completions_for_shadowing() { fn dont_show_both_completions_for_shadowing() {
check_reference_completion( assert_debug_snapshot_matches!(
"dont_show_both_completions_for_shadowing", do_reference_completion(
r" r"
fn foo() { fn foo() {
let bar = 92; let bar = 92;
{ {
let bar = 62; let bar = 62;
<|> <|>
}
} }
} "
", ),
) @r###"
[
CompletionItem {
label: "bar",
source_range: [146; 146),
delete: [146; 146),
insert: "bar",
kind: Binding,
detail: "i32",
},
CompletionItem {
label: "foo",
source_range: [146; 146),
delete: [146; 146),
insert: "foo()$0",
kind: Function,
detail: "fn foo()",
},
]
"###
);
} }
#[test] #[test]
fn completes_self_in_methods() { fn completes_self_in_methods() {
check_reference_completion("self_in_methods", r"impl S { fn foo(&self) { <|> } }") assert_debug_snapshot_matches!(
do_reference_completion(r"impl S { fn foo(&self) { <|> } }"),
@r#"[
CompletionItem {
label: "Self",
source_range: [25; 25),
delete: [25; 25),
insert: "Self",
kind: TypeParam,
},
CompletionItem {
label: "self",
source_range: [25; 25),
delete: [25; 25),
insert: "self",
kind: Binding,
detail: "&{unknown}",
},
]"#
);
} }
#[test] #[test]
fn completes_prelude() { fn completes_prelude() {
check_reference_completion( assert_debug_snapshot_matches!(
"completes_prelude", do_reference_completion(
" "
//- /main.rs //- /main.rs
fn foo() { let x: <|> } fn foo() { let x: <|> }
//- /std/lib.rs //- /std/lib.rs
#[prelude_import] #[prelude_import]
use prelude::*; use prelude::*;
mod prelude { mod prelude {
struct Option; struct Option;
} }
", "
),
@r#"[
CompletionItem {
label: "Option",
source_range: [18; 18),
delete: [18; 18),
insert: "Option",
kind: Struct,
},
CompletionItem {
label: "foo",
source_range: [18; 18),
delete: [18; 18),
insert: "foo()$0",
kind: Function,
detail: "fn foo()",
},
CompletionItem {
label: "std",
source_range: [18; 18),
delete: [18; 18),
insert: "std",
kind: Module,
},
]"#
); );
} }
} }

View file

@ -1,23 +0,0 @@
---
created: "2019-05-23T22:23:35.119822026Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "quux",
source_range: [83; 83),
delete: [83; 83),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
CompletionItem {
label: "x",
source_range: [83; 83),
delete: [83; 83),
insert: "x",
kind: Binding,
},
]

View file

@ -1,31 +0,0 @@
---
created: "2019-07-23T16:11:48.828805910Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "a",
source_range: [214; 214),
delete: [214; 214),
insert: "a",
kind: Binding,
},
CompletionItem {
label: "b",
source_range: [214; 214),
delete: [214; 214),
insert: "b",
kind: Binding,
detail: "i32",
},
CompletionItem {
label: "quux",
source_range: [214; 214),
delete: [214; 214),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
]

View file

@ -1,32 +0,0 @@
---
created: "2019-07-23T16:11:48.828811567Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "quux",
source_range: [79; 79),
delete: [79; 79),
insert: "quux($0)",
kind: Function,
detail: "fn quux(x: i32)",
},
CompletionItem {
label: "x",
source_range: [79; 79),
delete: [79; 79),
insert: "x",
kind: Binding,
detail: "i32",
},
CompletionItem {
label: "y",
source_range: [79; 79),
delete: [79; 79),
insert: "y",
kind: Binding,
detail: "i32",
},
]

View file

@ -1,30 +0,0 @@
---
created: "2019-05-23T22:23:35.139262926Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "Option",
source_range: [18; 18),
delete: [18; 18),
insert: "Option",
kind: Struct,
},
CompletionItem {
label: "foo",
source_range: [18; 18),
delete: [18; 18),
insert: "foo()$0",
kind: Function,
detail: "fn foo()",
},
CompletionItem {
label: "std",
source_range: [18; 18),
delete: [18; 18),
insert: "std",
kind: Module,
},
]

View file

@ -1,24 +0,0 @@
---
created: "2019-07-23T16:11:48.860949870Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "bar",
source_range: [126; 126),
delete: [126; 126),
insert: "bar",
kind: Binding,
detail: "i32",
},
CompletionItem {
label: "foo",
source_range: [126; 126),
delete: [126; 126),
insert: "foo()$0",
kind: Function,
detail: "fn foo()",
},
]

View file

@ -1,15 +0,0 @@
---
created: "2019-05-23T22:23:35.123197049Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "other_crate",
source_range: [4; 4),
delete: [4; 4),
insert: "other_crate",
kind: Module,
},
]

View file

@ -1,23 +0,0 @@
---
created: "2019-05-23T22:23:35.123825399Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "T",
source_range: [44; 44),
delete: [44; 44),
insert: "T",
kind: TypeParam,
},
CompletionItem {
label: "quux",
source_range: [44; 44),
delete: [44; 44),
insert: "quux()$0",
kind: Function,
detail: "fn quux<T>()",
},
]

View file

@ -1,22 +0,0 @@
---
created: "2019-05-23T22:23:35.130778739Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "T",
source_range: [46; 46),
delete: [46; 46),
insert: "T",
kind: TypeParam,
},
CompletionItem {
label: "X",
source_range: [46; 46),
delete: [46; 46),
insert: "X",
kind: Struct,
},
]

View file

@ -1,30 +0,0 @@
---
created: "2019-05-23T22:23:35.133106898Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "Baz",
source_range: [89; 89),
delete: [89; 89),
insert: "Baz",
kind: Enum,
},
CompletionItem {
label: "Foo",
source_range: [89; 89),
delete: [89; 89),
insert: "Foo",
kind: Struct,
},
CompletionItem {
label: "quux",
source_range: [89; 89),
delete: [89; 89),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
]

View file

@ -1,23 +0,0 @@
---
created: "2019-05-23T22:23:35.134417551Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "Bar",
source_range: [101; 101),
delete: [101; 101),
insert: "Bar",
kind: Struct,
},
CompletionItem {
label: "quux",
source_range: [101; 101),
delete: [101; 101),
insert: "quux()$0",
kind: Function,
detail: "fn quux()",
},
]

View file

@ -1,23 +0,0 @@
---
created: "2019-05-23T22:23:35.140648630Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "Foo",
source_range: [47; 47),
delete: [47; 47),
insert: "Foo",
kind: Struct,
},
CompletionItem {
label: "x",
source_range: [47; 47),
delete: [47; 47),
insert: "x()$0",
kind: Function,
detail: "fn x()",
},
]

View file

@ -1,23 +0,0 @@
---
created: "2019-07-23T16:11:48.859812318Z"
creator: insta@0.8.1
source: crates/ra_ide_api/src/completion/completion_item.rs
expression: kind_completions
---
[
CompletionItem {
label: "Self",
source_range: [25; 25),
delete: [25; 25),
insert: "Self",
kind: TypeParam,
},
CompletionItem {
label: "self",
source_range: [25; 25),
delete: [25; 25),
insert: "self",
kind: Binding,
detail: "&{unknown}",
},
]

View file

@ -357,38 +357,40 @@ mod tests {
let new_name = "foo2"; let new_name = "foo2";
let source_change = analysis.rename(position, new_name).unwrap(); let source_change = analysis.rename(position, new_name).unwrap();
assert_debug_snapshot_matches!(&source_change, assert_debug_snapshot_matches!(&source_change,
@r#"Some( @r###"
SourceChange { Some(
label: "rename", SourceChange {
source_file_edits: [ label: "rename",
SourceFileEdit { source_file_edits: [
file_id: FileId( SourceFileEdit {
1, file_id: FileId(
), 1,
edit: TextEdit { ),
atoms: [ edit: TextEdit {
AtomTextEdit { atoms: [
delete: [4; 7), AtomTextEdit {
insert: "foo2", delete: [4; 7),
}, insert: "foo2",
], },
}, ],
}, },
], },
file_system_edits: [ ],
MoveFile { file_system_edits: [
src: FileId( MoveFile {
2, src: FileId(
), 2,
dst_source_root: SourceRootId( ),
0, dst_source_root: SourceRootId(
), 0,
dst_path: "foo2/mod.rs", ),
}, dst_path: "foo2/mod.rs",
], },
cursor_position: None, ],
}, cursor_position: None,
)"#); },
)
"###);
} }
fn test_rename(text: &str, new_name: &str, expected: &str) { fn test_rename(text: &str, new_name: &str, expected: &str) {