diff --git a/crates/ra_ide/src/call_info.rs b/crates/ra_ide/src/call_info.rs index aa039e6fcdb..a6bdf1c9de7 100644 --- a/crates/ra_ide/src/call_info.rs +++ b/crates/ra_ide/src/call_info.rs @@ -215,7 +215,7 @@ impl CallInfo { mod tests { use test_utils::mark; - use crate::mock_analysis::single_file_with_position; + use crate::mock_analysis::analysis_and_position; use super::*; @@ -231,7 +231,7 @@ mod tests { } fn call_info_helper(text: &str) -> Option { - let (analysis, position) = single_file_with_position(text); + let (analysis, position) = analysis_and_position(text); analysis.call_info(position).unwrap() } @@ -530,7 +530,7 @@ By default this method stops actor's `Context`."# #[test] fn call_info_bad_offset() { mark::check!(call_info_bad_offset); - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( r#"fn foo(x: u32, y: u32) -> u32 {x + y} fn bar() { foo <|> (3, ); }"#, ); diff --git a/crates/ra_ide/src/completion/complete_attribute.rs b/crates/ra_ide/src/completion/complete_attribute.rs index ade17a1ff5e..6beeca457be 100644 --- a/crates/ra_ide/src/completion/complete_attribute.rs +++ b/crates/ra_ide/src/completion/complete_attribute.rs @@ -333,69 +333,69 @@ mod tests { [ CompletionItem { label: "Clone", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "Clone", kind: Attribute, }, CompletionItem { label: "Copy, Clone", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "Copy, Clone", kind: Attribute, }, CompletionItem { label: "Debug", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "Debug", kind: Attribute, }, CompletionItem { label: "Default", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "Default", kind: Attribute, }, CompletionItem { label: "Eq, PartialEq", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "Eq, PartialEq", kind: Attribute, }, CompletionItem { label: "Hash", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "Hash", kind: Attribute, }, CompletionItem { label: "Ord, PartialOrd, Eq, PartialEq", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "Ord, PartialOrd, Eq, PartialEq", kind: Attribute, }, CompletionItem { label: "PartialEq", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "PartialEq", kind: Attribute, }, CompletionItem { label: "PartialOrd, PartialEq", - source_range: 30..30, - delete: 30..30, + source_range: 9..9, + delete: 9..9, insert: "PartialOrd, PartialEq", kind: Attribute, }, ] - "### + "### ); } @@ -425,62 +425,62 @@ mod tests { [ CompletionItem { label: "Clone", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "Clone", kind: Attribute, }, CompletionItem { label: "Copy, Clone", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "Copy, Clone", kind: Attribute, }, CompletionItem { label: "Debug", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "Debug", kind: Attribute, }, CompletionItem { label: "Default", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "Default", kind: Attribute, }, CompletionItem { label: "Eq", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "Eq", kind: Attribute, }, CompletionItem { label: "Hash", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "Hash", kind: Attribute, }, CompletionItem { label: "Ord, PartialOrd, Eq", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "Ord, PartialOrd, Eq", kind: Attribute, }, CompletionItem { label: "PartialOrd", - source_range: 59..59, - delete: 59..59, + source_range: 38..38, + delete: 38..38, insert: "PartialOrd", kind: Attribute, }, ] - "### + "### ); } @@ -496,207 +496,207 @@ mod tests { [ CompletionItem { label: "allow(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "allow(${0:lint})", kind: Attribute, lookup: "allow", }, CompletionItem { label: "cfg(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "cfg(${0:predicate})", kind: Attribute, lookup: "cfg", }, CompletionItem { label: "cfg_attr(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "cfg_attr(${1:predicate}, ${0:attr})", kind: Attribute, lookup: "cfg_attr", }, CompletionItem { label: "deny(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "deny(${0:lint})", kind: Attribute, lookup: "deny", }, CompletionItem { label: "deprecated = \"…\"", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "deprecated = \"${0:reason}\"", kind: Attribute, lookup: "deprecated", }, CompletionItem { label: "derive(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "derive(${0:Debug})", kind: Attribute, lookup: "derive", }, CompletionItem { label: "doc = \"…\"", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "doc = \"${0:docs}\"", kind: Attribute, lookup: "doc", }, CompletionItem { label: "forbid(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "forbid(${0:lint})", kind: Attribute, lookup: "forbid", }, CompletionItem { label: "ignore(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "ignore(${0:lint})", kind: Attribute, lookup: "ignore", }, CompletionItem { label: "inline(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "inline(${0:lint})", kind: Attribute, lookup: "inline", }, CompletionItem { label: "link", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "link", kind: Attribute, }, CompletionItem { label: "link_name = \"…\"", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "link_name = \"${0:symbol_name}\"", kind: Attribute, lookup: "link_name", }, CompletionItem { label: "macro_export", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "macro_export", kind: Attribute, }, CompletionItem { label: "macro_use", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "macro_use", kind: Attribute, }, CompletionItem { label: "must_use = \"…\"", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "must_use = \"${0:reason}\"", kind: Attribute, lookup: "must_use", }, CompletionItem { label: "no_mangle", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "no_mangle", kind: Attribute, }, CompletionItem { label: "non_exhaustive", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "non_exhaustive", kind: Attribute, }, CompletionItem { label: "path = \"…\"", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "path =\"${0:path}\"", kind: Attribute, lookup: "path", }, CompletionItem { label: "proc_macro", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "proc_macro", kind: Attribute, }, CompletionItem { label: "proc_macro_attribute", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "proc_macro_attribute", kind: Attribute, }, CompletionItem { label: "proc_macro_derive(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "proc_macro_derive(${0:Trait})", kind: Attribute, lookup: "proc_macro_derive", }, CompletionItem { label: "repr(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "repr(${0:C})", kind: Attribute, lookup: "repr", }, CompletionItem { label: "should_panic(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "should_panic(expected = \"${0:reason}\")", kind: Attribute, lookup: "should_panic", }, CompletionItem { label: "target_feature = \"…\"", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "target_feature = \"${0:feature}\"", kind: Attribute, lookup: "target_feature", }, CompletionItem { label: "test", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "test", kind: Attribute, }, CompletionItem { label: "used", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "used", kind: Attribute, }, CompletionItem { label: "warn(…)", - source_range: 19..19, - delete: 19..19, + source_range: 2..2, + delete: 2..2, insert: "warn(${0:lint})", kind: Attribute, lookup: "warn", @@ -732,252 +732,252 @@ mod tests { [ CompletionItem { label: "allow(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "allow(${0:lint})", kind: Attribute, lookup: "allow", }, CompletionItem { label: "cfg(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "cfg(${0:predicate})", kind: Attribute, lookup: "cfg", }, CompletionItem { label: "cfg_attr(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "cfg_attr(${1:predicate}, ${0:attr})", kind: Attribute, lookup: "cfg_attr", }, CompletionItem { label: "deny(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "deny(${0:lint})", kind: Attribute, lookup: "deny", }, CompletionItem { label: "deprecated = \"…\"", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "deprecated = \"${0:reason}\"", kind: Attribute, lookup: "deprecated", }, CompletionItem { label: "derive(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "derive(${0:Debug})", kind: Attribute, lookup: "derive", }, CompletionItem { label: "doc = \"…\"", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "doc = \"${0:docs}\"", kind: Attribute, lookup: "doc", }, CompletionItem { label: "feature(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "feature(${0:flag})", kind: Attribute, lookup: "feature", }, CompletionItem { label: "forbid(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "forbid(${0:lint})", kind: Attribute, lookup: "forbid", }, CompletionItem { label: "global_allocator", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "global_allocator", kind: Attribute, }, CompletionItem { label: "ignore(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "ignore(${0:lint})", kind: Attribute, lookup: "ignore", }, CompletionItem { label: "inline(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "inline(${0:lint})", kind: Attribute, lookup: "inline", }, CompletionItem { label: "link", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "link", kind: Attribute, }, CompletionItem { label: "link_name = \"…\"", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "link_name = \"${0:symbol_name}\"", kind: Attribute, lookup: "link_name", }, CompletionItem { label: "macro_export", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "macro_export", kind: Attribute, }, CompletionItem { label: "macro_use", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "macro_use", kind: Attribute, }, CompletionItem { label: "must_use = \"…\"", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "must_use = \"${0:reason}\"", kind: Attribute, lookup: "must_use", }, CompletionItem { label: "no_mangle", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "no_mangle", kind: Attribute, }, CompletionItem { label: "no_std", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "no_std", kind: Attribute, }, CompletionItem { label: "non_exhaustive", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "non_exhaustive", kind: Attribute, }, CompletionItem { label: "panic_handler", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "panic_handler", kind: Attribute, }, CompletionItem { label: "path = \"…\"", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "path =\"${0:path}\"", kind: Attribute, lookup: "path", }, CompletionItem { label: "proc_macro", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "proc_macro", kind: Attribute, }, CompletionItem { label: "proc_macro_attribute", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "proc_macro_attribute", kind: Attribute, }, CompletionItem { label: "proc_macro_derive(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "proc_macro_derive(${0:Trait})", kind: Attribute, lookup: "proc_macro_derive", }, CompletionItem { label: "recursion_limit = …", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "recursion_limit = ${0:128}", kind: Attribute, lookup: "recursion_limit", }, CompletionItem { label: "repr(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "repr(${0:C})", kind: Attribute, lookup: "repr", }, CompletionItem { label: "should_panic(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "should_panic(expected = \"${0:reason}\")", kind: Attribute, lookup: "should_panic", }, CompletionItem { label: "target_feature = \"…\"", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "target_feature = \"${0:feature}\"", kind: Attribute, lookup: "target_feature", }, CompletionItem { label: "test", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "test", kind: Attribute, }, CompletionItem { label: "used", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "used", kind: Attribute, }, CompletionItem { label: "warn(…)", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "warn(${0:lint})", kind: Attribute, lookup: "warn", }, CompletionItem { label: "windows_subsystem = \"…\"", - source_range: 20..20, - delete: 20..20, + source_range: 3..3, + delete: 3..3, insert: "windows_subsystem = \"${0:subsystem}\"", kind: Attribute, lookup: "windows_subsystem", diff --git a/crates/ra_ide/src/completion/complete_dot.rs b/crates/ra_ide/src/completion/complete_dot.rs index 05f825c6fe2..ee4e24fcab5 100644 --- a/crates/ra_ide/src/completion/complete_dot.rs +++ b/crates/ra_ide/src/completion/complete_dot.rs @@ -94,8 +94,8 @@ mod tests { [ CompletionItem { label: "the_field", - source_range: 94..94, - delete: 94..94, + source_range: 45..45, + delete: 45..45, insert: "the_field", kind: Field, detail: "u32", @@ -125,8 +125,8 @@ mod tests { [ CompletionItem { label: "foo()", - source_range: 187..187, - delete: 187..187, + source_range: 102..102, + delete: 102..102, insert: "foo()$0", kind: Method, lookup: "foo", @@ -134,8 +134,8 @@ mod tests { }, CompletionItem { label: "the_field", - source_range: 187..187, - delete: 187..187, + source_range: 102..102, + delete: 102..102, insert: "the_field", kind: Field, detail: "(u32,)", @@ -165,8 +165,8 @@ mod tests { [ CompletionItem { label: "foo()", - source_range: 126..126, - delete: 126..126, + source_range: 77..77, + delete: 77..77, insert: "foo()$0", kind: Method, lookup: "foo", @@ -174,8 +174,8 @@ mod tests { }, CompletionItem { label: "the_field", - source_range: 126..126, - delete: 126..126, + source_range: 77..77, + delete: 77..77, insert: "the_field", kind: Field, detail: "(u32, i32)", @@ -222,24 +222,24 @@ mod tests { [ CompletionItem { label: "crate_field", - source_range: 313..313, - delete: 313..313, + source_range: 192..192, + delete: 192..192, insert: "crate_field", kind: Field, detail: "u32", }, CompletionItem { label: "pub_field", - source_range: 313..313, - delete: 313..313, + source_range: 192..192, + delete: 192..192, insert: "pub_field", kind: Field, detail: "u32", }, CompletionItem { label: "super_field", - source_range: 313..313, - delete: 313..313, + source_range: 192..192, + delete: 192..192, insert: "super_field", kind: Field, detail: "u32", @@ -268,16 +268,16 @@ mod tests { [ CompletionItem { label: "field", - source_range: 140..140, - delete: 140..140, + source_range: 67..67, + delete: 67..67, insert: "field", kind: Field, detail: "u8", }, CompletionItem { label: "other", - source_range: 140..140, - delete: 140..140, + source_range: 67..67, + delete: 67..67, insert: "other", kind: Field, detail: "u16", @@ -305,8 +305,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 144..144, - delete: 144..144, + source_range: 71..71, + delete: 71..71, insert: "the_method()$0", kind: Method, lookup: "the_method", @@ -338,8 +338,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 243..243, - delete: 243..243, + source_range: 134..134, + delete: 134..134, insert: "the_method()$0", kind: Method, lookup: "the_method", @@ -371,8 +371,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 256..256, - delete: 256..256, + source_range: 147..147, + delete: 147..147, insert: "the_method()$0", kind: Method, lookup: "the_method", @@ -400,8 +400,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 151..151, - delete: 151..151, + source_range: 90..90, + delete: 90..90, insert: "the_method()$0", kind: Method, lookup: "the_method", @@ -429,8 +429,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 155..155, - delete: 155..155, + source_range: 94..94, + delete: 94..94, insert: "the_method()$0", kind: Method, lookup: "the_method", @@ -461,8 +461,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 219..219, - delete: 219..219, + source_range: 122..122, + delete: 122..122, insert: "the_method()$0", kind: Method, lookup: "the_method", @@ -513,8 +513,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 249..249, - delete: 249..249, + source_range: 128..128, + delete: 128..128, insert: "the_method()$0", kind: Method, lookup: "the_method", @@ -540,16 +540,16 @@ mod tests { [ CompletionItem { label: "0", - source_range: 75..75, - delete: 75..75, + source_range: 38..38, + delete: 38..38, insert: "0", kind: Field, detail: "i32", }, CompletionItem { label: "1", - source_range: 75..75, - delete: 75..75, + source_range: 38..38, + delete: 38..38, insert: "1", kind: Field, detail: "f64", @@ -583,8 +583,8 @@ mod tests { [ CompletionItem { label: "blah()", - source_range: 299..300, - delete: 299..300, + source_range: 190..191, + delete: 190..191, insert: "blah()$0", kind: Method, lookup: "blah", @@ -610,8 +610,8 @@ mod tests { [ CompletionItem { label: "the_field", - source_range: 106..106, - delete: 106..106, + source_range: 69..69, + delete: 69..69, insert: "the_field", kind: Field, detail: "u32", @@ -676,15 +676,15 @@ mod tests { [ CompletionItem { label: "A", - source_range: 217..217, - delete: 217..217, + source_range: 120..120, + delete: 120..120, insert: "A", kind: Const, }, CompletionItem { label: "b", - source_range: 217..217, - delete: 217..217, + source_range: 120..120, + delete: 120..120, insert: "b", kind: Module, }, @@ -709,8 +709,8 @@ mod tests { [ CompletionItem { label: "the_field", - source_range: 156..157, - delete: 156..157, + source_range: 91..92, + delete: 91..92, insert: "the_field", kind: Field, detail: "u32", @@ -736,8 +736,8 @@ mod tests { [ CompletionItem { label: "the_field", - source_range: 156..157, - delete: 156..157, + source_range: 91..92, + delete: 91..92, insert: "the_field", kind: Field, detail: "u32", @@ -764,8 +764,8 @@ mod tests { [ CompletionItem { label: "the_field", - source_range: 156..156, - delete: 156..156, + source_range: 91..91, + delete: 91..91, insert: "the_field", kind: Field, detail: "u32", @@ -791,8 +791,8 @@ mod tests { [ CompletionItem { label: "the_field", - source_range: 162..163, - delete: 162..163, + source_range: 97..98, + delete: 97..98, insert: "the_field", kind: Field, detail: "u32", @@ -828,8 +828,8 @@ mod tests { [ CompletionItem { label: "the_field", - source_range: 552..552, - delete: 552..552, + source_range: 327..327, + delete: 327..327, insert: "the_field", kind: Field, detail: "u32", @@ -858,8 +858,8 @@ mod tests { [ CompletionItem { label: "the_method()", - source_range: 201..201, - delete: 201..201, + source_range: 116..116, + delete: 116..116, insert: "the_method()$0", kind: Method, lookup: "the_method", diff --git a/crates/ra_ide/src/completion/complete_fn_param.rs b/crates/ra_ide/src/completion/complete_fn_param.rs index a661932a311..f5573ddf7cd 100644 --- a/crates/ra_ide/src/completion/complete_fn_param.rs +++ b/crates/ra_ide/src/completion/complete_fn_param.rs @@ -75,8 +75,8 @@ mod tests { [ CompletionItem { label: "file_id: FileId", - source_range: 110..114, - delete: 110..114, + source_range: 61..65, + delete: 61..65, insert: "file_id: FileId", lookup: "file_id", }, @@ -99,8 +99,8 @@ mod tests { [ CompletionItem { label: "file_id: FileId", - source_range: 110..114, - delete: 110..114, + source_range: 61..65, + delete: 61..65, insert: "file_id: FileId", lookup: "file_id", }, @@ -126,8 +126,8 @@ mod tests { [ CompletionItem { label: "file_id: FileId", - source_range: 289..293, - delete: 289..293, + source_range: 208..212, + delete: 208..212, insert: "file_id: FileId", lookup: "file_id", }, diff --git a/crates/ra_ide/src/completion/complete_pattern.rs b/crates/ra_ide/src/completion/complete_pattern.rs index fdd9e928b27..367e2bbce38 100644 --- a/crates/ra_ide/src/completion/complete_pattern.rs +++ b/crates/ra_ide/src/completion/complete_pattern.rs @@ -63,37 +63,37 @@ mod tests { [ CompletionItem { label: "Bar", - source_range: 246..246, - delete: 246..246, + source_range: 137..137, + delete: 137..137, insert: "Bar", kind: Struct, }, CompletionItem { label: "E", - source_range: 246..246, - delete: 246..246, + source_range: 137..137, + delete: 137..137, insert: "E", kind: Enum, }, CompletionItem { label: "X", - source_range: 246..246, - delete: 246..246, + source_range: 137..137, + delete: 137..137, insert: "X", kind: EnumVariant, detail: "()", }, CompletionItem { label: "Z", - source_range: 246..246, - delete: 246..246, + source_range: 137..137, + delete: 137..137, insert: "Z", kind: Const, }, CompletionItem { label: "m", - source_range: 246..246, - delete: 246..246, + source_range: 137..137, + delete: 137..137, insert: "m", kind: Module, }, @@ -119,15 +119,15 @@ mod tests { [ CompletionItem { label: "E", - source_range: 151..151, - delete: 151..151, + source_range: 90..90, + delete: 90..90, insert: "E", kind: Enum, }, CompletionItem { label: "m!(…)", - source_range: 151..151, - delete: 151..151, + source_range: 90..90, + delete: 90..90, insert: "m!($0)", kind: Macro, detail: "macro_rules! m", diff --git a/crates/ra_ide/src/completion/complete_postfix.rs b/crates/ra_ide/src/completion/complete_postfix.rs index b878aeb0ac0..3bd64804f45 100644 --- a/crates/ra_ide/src/completion/complete_postfix.rs +++ b/crates/ra_ide/src/completion/complete_postfix.rs @@ -260,64 +260,64 @@ mod tests { [ CompletionItem { label: "box", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "Box::new(bar)", detail: "Box::new(expr)", }, CompletionItem { label: "call", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "${1}(bar)", detail: "function(expr)", }, CompletionItem { label: "dbg", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "dbg!(bar)", detail: "dbg!(expr)", }, CompletionItem { label: "if", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "if bar {\n $0\n}", detail: "if expr {}", }, CompletionItem { label: "match", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "match bar {\n ${1:_} => {$0\\},\n}", detail: "match expr {}", }, CompletionItem { label: "not", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "!bar", detail: "!expr", }, CompletionItem { label: "ref", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "&bar", detail: "&expr", }, CompletionItem { label: "refm", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "&mut bar", detail: "&mut expr", }, CompletionItem { label: "while", - source_range: 89..89, - delete: 85..89, + source_range: 40..40, + delete: 36..40, insert: "while bar {\n $0\n}", detail: "while expr {}", }, @@ -346,64 +346,64 @@ mod tests { [ CompletionItem { label: "box", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "Box::new(bar)", detail: "Box::new(expr)", }, CompletionItem { label: "call", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "${1}(bar)", detail: "function(expr)", }, CompletionItem { label: "dbg", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "dbg!(bar)", detail: "dbg!(expr)", }, CompletionItem { label: "ifl", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "if let Some($1) = bar {\n $0\n}", detail: "if let Some {}", }, CompletionItem { label: "match", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "match bar {\n Some(${1:_}) => {$2\\},\n None => {$0\\},\n}", detail: "match expr {}", }, CompletionItem { label: "not", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "!bar", detail: "!expr", }, CompletionItem { label: "ref", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "&bar", detail: "&expr", }, CompletionItem { label: "refm", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "&mut bar", detail: "&mut expr", }, CompletionItem { label: "while", - source_range: 210..210, - delete: 206..210, + source_range: 97..97, + delete: 93..97, insert: "while let Some($1) = bar {\n $0\n}", detail: "while let Some {}", }, @@ -432,64 +432,64 @@ mod tests { [ CompletionItem { label: "box", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "Box::new(bar)", detail: "Box::new(expr)", }, CompletionItem { label: "call", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "${1}(bar)", detail: "function(expr)", }, CompletionItem { label: "dbg", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "dbg!(bar)", detail: "dbg!(expr)", }, CompletionItem { label: "ifl", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "if let Ok($1) = bar {\n $0\n}", detail: "if let Ok {}", }, CompletionItem { label: "match", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "match bar {\n Ok(${1:_}) => {$2\\},\n Err(${3:_}) => {$0\\},\n}", detail: "match expr {}", }, CompletionItem { label: "not", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "!bar", detail: "!expr", }, CompletionItem { label: "ref", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "&bar", detail: "&expr", }, CompletionItem { label: "refm", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "&mut bar", detail: "&mut expr", }, CompletionItem { label: "while", - source_range: 211..211, - delete: 207..211, + source_range: 98..98, + delete: 94..98, insert: "while let Ok($1) = bar {\n $0\n}", detail: "while let Ok {}", }, @@ -513,50 +513,50 @@ mod tests { [ CompletionItem { label: "box", - source_range: 91..91, - delete: 87..91, + source_range: 42..42, + delete: 38..42, insert: "Box::new(bar)", detail: "Box::new(expr)", }, CompletionItem { label: "call", - source_range: 91..91, - delete: 87..91, + source_range: 42..42, + delete: 38..42, insert: "${1}(bar)", detail: "function(expr)", }, CompletionItem { label: "dbg", - source_range: 91..91, - delete: 87..91, + source_range: 42..42, + delete: 38..42, insert: "dbg!(bar)", detail: "dbg!(expr)", }, CompletionItem { label: "match", - source_range: 91..91, - delete: 87..91, + source_range: 42..42, + delete: 38..42, insert: "match bar {\n ${1:_} => {$0\\},\n}", detail: "match expr {}", }, CompletionItem { label: "not", - source_range: 91..91, - delete: 87..91, + source_range: 42..42, + delete: 38..42, insert: "!bar", detail: "!expr", }, CompletionItem { label: "ref", - source_range: 91..91, - delete: 87..91, + source_range: 42..42, + delete: 38..42, insert: "&bar", detail: "&expr", }, CompletionItem { label: "refm", - source_range: 91..91, - delete: 87..91, + source_range: 42..42, + delete: 38..42, insert: "&mut bar", detail: "&mut expr", }, @@ -579,50 +579,50 @@ mod tests { [ CompletionItem { label: "box", - source_range: 52..52, - delete: 49..52, + source_range: 19..19, + delete: 16..19, insert: "Box::new(42)", detail: "Box::new(expr)", }, CompletionItem { label: "call", - source_range: 52..52, - delete: 49..52, + source_range: 19..19, + delete: 16..19, insert: "${1}(42)", detail: "function(expr)", }, CompletionItem { label: "dbg", - source_range: 52..52, - delete: 49..52, + source_range: 19..19, + delete: 16..19, insert: "dbg!(42)", detail: "dbg!(expr)", }, CompletionItem { label: "match", - source_range: 52..52, - delete: 49..52, + source_range: 19..19, + delete: 16..19, insert: "match 42 {\n ${1:_} => {$0\\},\n}", detail: "match expr {}", }, CompletionItem { label: "not", - source_range: 52..52, - delete: 49..52, + source_range: 19..19, + delete: 16..19, insert: "!42", detail: "!expr", }, CompletionItem { label: "ref", - source_range: 52..52, - delete: 49..52, + source_range: 19..19, + delete: 16..19, insert: "&42", detail: "&expr", }, CompletionItem { label: "refm", - source_range: 52..52, - delete: 49..52, + source_range: 19..19, + delete: 16..19, insert: "&mut 42", detail: "&mut expr", }, @@ -647,50 +647,50 @@ mod tests { [ CompletionItem { label: "box", - source_range: 149..150, - delete: 145..150, + source_range: 84..85, + delete: 80..85, insert: "Box::new(bar)", detail: "Box::new(expr)", }, CompletionItem { label: "call", - source_range: 149..150, - delete: 145..150, + source_range: 84..85, + delete: 80..85, insert: "${1}(bar)", detail: "function(expr)", }, CompletionItem { label: "dbg", - source_range: 149..150, - delete: 145..150, + source_range: 84..85, + delete: 80..85, insert: "dbg!(bar)", detail: "dbg!(expr)", }, CompletionItem { label: "match", - source_range: 149..150, - delete: 145..150, + source_range: 84..85, + delete: 80..85, insert: "match bar {\n ${1:_} => {$0\\},\n}", detail: "match expr {}", }, CompletionItem { label: "not", - source_range: 149..150, - delete: 145..150, + source_range: 84..85, + delete: 80..85, insert: "!bar", detail: "!expr", }, CompletionItem { label: "ref", - source_range: 149..150, - delete: 145..150, + source_range: 84..85, + delete: 80..85, insert: "&bar", detail: "&expr", }, CompletionItem { label: "refm", - source_range: 149..150, - delete: 145..150, + source_range: 84..85, + delete: 80..85, insert: "&mut bar", detail: "&mut expr", }, @@ -713,50 +713,50 @@ mod tests { [ CompletionItem { label: "box", - source_range: 56..56, - delete: 49..56, + source_range: 23..23, + delete: 16..23, insert: "Box::new(&&&&42)", detail: "Box::new(expr)", }, CompletionItem { label: "call", - source_range: 56..56, - delete: 49..56, + source_range: 23..23, + delete: 16..23, insert: "${1}(&&&&42)", detail: "function(expr)", }, CompletionItem { label: "dbg", - source_range: 56..56, - delete: 49..56, + source_range: 23..23, + delete: 16..23, insert: "dbg!(&&&&42)", detail: "dbg!(expr)", }, CompletionItem { label: "match", - source_range: 56..56, - delete: 49..56, + source_range: 23..23, + delete: 16..23, insert: "match &&&&42 {\n ${1:_} => {$0\\},\n}", detail: "match expr {}", }, CompletionItem { label: "not", - source_range: 56..56, - delete: 53..56, + source_range: 23..23, + delete: 20..23, insert: "!42", detail: "!expr", }, CompletionItem { label: "ref", - source_range: 56..56, - delete: 53..56, + source_range: 23..23, + delete: 20..23, insert: "&42", detail: "&expr", }, CompletionItem { label: "refm", - source_range: 56..56, - delete: 53..56, + source_range: 23..23, + delete: 20..23, insert: "&mut 42", detail: "&mut expr", }, diff --git a/crates/ra_ide/src/completion/complete_qualified_path.rs b/crates/ra_ide/src/completion/complete_qualified_path.rs index d3a1cbc1da7..f133ce3cece 100644 --- a/crates/ra_ide/src/completion/complete_qualified_path.rs +++ b/crates/ra_ide/src/completion/complete_qualified_path.rs @@ -212,8 +212,8 @@ mod tests { [ CompletionItem { label: "my", - source_range: 27..29, - delete: 27..29, + source_range: 10..12, + delete: 10..12, insert: "my", kind: Module, documentation: Documentation( @@ -243,8 +243,8 @@ mod tests { [ CompletionItem { label: "Bar", - source_range: 31..31, - delete: 31..31, + source_range: 14..14, + delete: 14..14, insert: "Bar", kind: Struct, }, @@ -271,15 +271,15 @@ mod tests { [ CompletionItem { label: "Foo", - source_range: 31..31, - delete: 31..31, + source_range: 14..14, + delete: 14..14, insert: "Foo", kind: Struct, }, CompletionItem { label: "PublicBar", - source_range: 31..31, - delete: 31..31, + source_range: 14..14, + delete: 14..14, insert: "PublicBar", kind: Struct, }, @@ -304,8 +304,8 @@ mod tests { [ CompletionItem { label: "Bar", - source_range: 30..30, - delete: 30..30, + source_range: 13..13, + delete: 13..13, insert: "Bar", kind: Struct, }, @@ -1145,8 +1145,8 @@ mod tests { [ CompletionItem { label: "bar()", - source_range: 185..185, - delete: 185..185, + source_range: 88..88, + delete: 88..88, insert: "bar()$0", kind: Function, lookup: "bar", @@ -1154,8 +1154,8 @@ mod tests { }, CompletionItem { label: "foo()", - source_range: 185..185, - delete: 185..185, + source_range: 88..88, + delete: 88..88, insert: "foo()$0", kind: Function, lookup: "foo", @@ -1185,16 +1185,16 @@ mod tests { [ CompletionItem { label: "foo!(…)", - source_range: 179..179, - delete: 179..179, + source_range: 82..82, + delete: 82..82, insert: "foo!($0)", kind: Macro, detail: "#[macro_export]\nmacro_rules! foo", }, CompletionItem { label: "main()", - source_range: 179..179, - delete: 179..179, + source_range: 82..82, + delete: 82..82, insert: "main()$0", kind: Function, lookup: "main", @@ -1230,22 +1230,22 @@ mod tests { [ CompletionItem { label: "RIGHT_CONST", - source_range: 57..57, - delete: 57..57, + source_range: 24..24, + delete: 24..24, insert: "RIGHT_CONST", kind: Const, }, CompletionItem { label: "RightType", - source_range: 57..57, - delete: 57..57, + source_range: 24..24, + delete: 24..24, insert: "RightType", kind: Struct, }, CompletionItem { label: "right_fn()", - source_range: 57..57, - delete: 57..57, + source_range: 24..24, + delete: 24..24, insert: "right_fn()$0", kind: Function, lookup: "right_fn", @@ -1269,8 +1269,8 @@ mod tests { [ CompletionItem { label: "foo()", - source_range: 93..94, - delete: 93..94, + source_range: 60..61, + delete: 60..61, insert: "foo()$0", kind: Function, lookup: "foo", @@ -1278,8 +1278,8 @@ mod tests { }, CompletionItem { label: "main()", - source_range: 93..94, - delete: 93..94, + source_range: 60..61, + delete: 60..61, insert: "main()$0", kind: Function, lookup: "main", @@ -1308,15 +1308,15 @@ mod tests { [ CompletionItem { label: "z", - source_range: 57..57, - delete: 57..57, + source_range: 24..24, + delete: 24..24, insert: "z", kind: Module, }, CompletionItem { label: "z()", - source_range: 57..57, - delete: 57..57, + source_range: 24..24, + delete: 24..24, insert: "z()$0", kind: Function, lookup: "z", @@ -1347,8 +1347,8 @@ mod tests { [ CompletionItem { label: "new()", - source_range: 292..292, - delete: 292..292, + source_range: 179..179, + delete: 179..179, insert: "new()$0", kind: Function, lookup: "new", diff --git a/crates/ra_ide/src/completion/complete_record.rs b/crates/ra_ide/src/completion/complete_record.rs index b7ab654c527..13eb2f79fa5 100644 --- a/crates/ra_ide/src/completion/complete_record.rs +++ b/crates/ra_ide/src/completion/complete_record.rs @@ -41,17 +41,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "foo", - source_range: 117..118, - delete: 117..118, - insert: "foo", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "foo", + source_range: 68..69, + delete: 68..69, + insert: "foo", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -70,25 +70,25 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "bar", - source_range: 161..161, - delete: 161..161, - insert: "bar", - kind: Field, - detail: "()", - }, - CompletionItem { - label: "foo", - source_range: 161..161, - delete: 161..161, - insert: "foo", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "bar", + source_range: 88..88, + delete: 88..88, + insert: "bar", + kind: Field, + detail: "()", + }, + CompletionItem { + label: "foo", + source_range: 88..88, + delete: 88..88, + insert: "foo", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -106,17 +106,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "foo", - source_range: 171..172, - delete: 171..172, - insert: "foo", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "foo", + source_range: 110..111, + delete: 110..111, + insert: "foo", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -142,25 +142,25 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "bar", - source_range: 372..372, - delete: 372..372, - insert: "bar", - kind: Field, - detail: "u32", - }, - CompletionItem { - label: "baz", - source_range: 372..372, - delete: 372..372, - insert: "baz", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "bar", + source_range: 203..203, + delete: 203..203, + insert: "bar", + kind: Field, + detail: "u32", + }, + CompletionItem { + label: "baz", + source_range: 203..203, + delete: 203..203, + insert: "baz", + kind: Field, + detail: "u32", + }, + ] + "###); } } @@ -187,18 +187,18 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "the_field", - source_range: 142..145, - delete: 142..145, - insert: "the_field", - kind: Field, - detail: "u32", - deprecated: true, - }, - ] - "###); + [ + CompletionItem { + label: "the_field", + source_range: 69..72, + delete: 69..72, + insert: "the_field", + kind: Field, + detail: "u32", + deprecated: true, + }, + ] + "###); } #[test] @@ -212,17 +212,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "the_field", - source_range: 83..86, - delete: 83..86, - insert: "the_field", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "the_field", + source_range: 46..49, + delete: 46..49, + insert: "the_field", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -238,17 +238,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "a", - source_range: 119..119, - delete: 119..119, - insert: "a", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "a", + source_range: 58..58, + delete: 58..58, + insert: "a", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -264,17 +264,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "b", - source_range: 119..119, - delete: 119..119, - insert: "b", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "b", + source_range: 70..70, + delete: 70..70, + insert: "b", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -289,17 +289,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "a", - source_range: 93..93, - delete: 93..93, - insert: "a", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "a", + source_range: 56..56, + delete: 56..56, + insert: "a", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -314,17 +314,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "the_field", - source_range: 137..140, - delete: 137..140, - insert: "the_field", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "the_field", + source_range: 88..91, + delete: 88..91, + insert: "the_field", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -349,25 +349,25 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "bar", - source_range: 302..302, - delete: 302..302, - insert: "bar", - kind: Field, - detail: "u32", - }, - CompletionItem { - label: "baz", - source_range: 302..302, - delete: 302..302, - insert: "baz", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "bar", + source_range: 157..157, + delete: 157..157, + insert: "bar", + kind: Field, + detail: "u32", + }, + CompletionItem { + label: "baz", + source_range: 157..157, + delete: 157..157, + insert: "baz", + kind: Field, + detail: "u32", + }, + ] + "###); } #[test] @@ -390,17 +390,17 @@ mod tests { ", ); assert_debug_snapshot!(completions, @r###" - [ - CompletionItem { - label: "foo2", - source_range: 221..221, - delete: 221..221, - insert: "foo2", - kind: Field, - detail: "u32", - }, - ] - "###); + [ + CompletionItem { + label: "foo2", + source_range: 112..112, + delete: 112..112, + insert: "foo2", + kind: Field, + detail: "u32", + }, + ] + "###); } } } diff --git a/crates/ra_ide/src/completion/complete_snippet.rs b/crates/ra_ide/src/completion/complete_snippet.rs index 0568d9ccf39..52aaa70f06f 100644 --- a/crates/ra_ide/src/completion/complete_snippet.rs +++ b/crates/ra_ide/src/completion/complete_snippet.rs @@ -129,31 +129,31 @@ mod tests { [ CompletionItem { label: "Test function", - source_range: 78..78, - delete: 78..78, + source_range: 29..29, + delete: 29..29, insert: "#[test]\nfn ${1:feature}() {\n $0\n}", kind: Snippet, lookup: "tfn", }, CompletionItem { label: "Test module", - source_range: 78..78, - delete: 78..78, + source_range: 29..29, + delete: 29..29, insert: "#[cfg(test)]\nmod tests {\n use super::*;\n\n #[test]\n fn ${1:test_name}() {\n $0\n }\n}", kind: Snippet, lookup: "tmod", }, CompletionItem { label: "macro_rules", - source_range: 78..78, - delete: 78..78, + source_range: 29..29, + delete: 29..29, insert: "macro_rules! $1 {\n\t($2) => {\n\t\t$0\n\t};\n}", kind: Snippet, }, CompletionItem { label: "pub(crate)", - source_range: 78..78, - delete: 78..78, + source_range: 29..29, + delete: 29..29, insert: "pub(crate) $0", kind: Snippet, }, diff --git a/crates/ra_ide/src/completion/complete_trait_impl.rs b/crates/ra_ide/src/completion/complete_trait_impl.rs index 21c9316e666..23e42928dd6 100644 --- a/crates/ra_ide/src/completion/complete_trait_impl.rs +++ b/crates/ra_ide/src/completion/complete_trait_impl.rs @@ -256,24 +256,24 @@ mod tests { [ CompletionItem { label: "const TEST_CONST: u16 = ", - source_range: 209..210, - delete: 209..210, + source_range: 112..113, + delete: 112..113, insert: "const TEST_CONST: u16 = ", kind: Const, lookup: "TEST_CONST", }, CompletionItem { label: "fn test()", - source_range: 209..210, - delete: 209..210, + source_range: 112..113, + delete: 112..113, insert: "fn test() {\n $0\n}", kind: Function, lookup: "test", }, CompletionItem { label: "type TestType = ", - source_range: 209..210, - delete: 209..210, + source_range: 112..113, + delete: 112..113, insert: "type TestType = ", kind: TypeAlias, lookup: "TestType", @@ -322,8 +322,8 @@ mod tests { [ CompletionItem { label: "fn test()", - source_range: 139..140, - delete: 139..140, + source_range: 66..67, + delete: 66..67, insert: "fn test() {\n $0\n}", kind: Function, lookup: "test", @@ -351,8 +351,8 @@ mod tests { [ CompletionItem { label: "fn foo()", - source_range: 141..142, - delete: 138..142, + source_range: 68..69, + delete: 65..69, insert: "fn foo() {\n $0\n}", kind: Function, lookup: "foo", @@ -383,8 +383,8 @@ mod tests { [ CompletionItem { label: "fn foo_bar()", - source_range: 200..201, - delete: 197..201, + source_range: 103..104, + delete: 100..104, insert: "fn foo_bar() {\n $0\n}", kind: Function, lookup: "foo_bar", @@ -434,8 +434,8 @@ mod tests { [ CompletionItem { label: "fn foo()", - source_range: 144..145, - delete: 141..145, + source_range: 71..72, + delete: 68..72, insert: "fn foo() {\n $0\n}", kind: Function, lookup: "foo", @@ -463,8 +463,8 @@ mod tests { [ CompletionItem { label: "fn foo()", - source_range: 166..167, - delete: 163..167, + source_range: 93..94, + delete: 90..94, insert: "fn foo()\nwhere T: Into {\n $0\n}", kind: Function, lookup: "foo", @@ -490,8 +490,8 @@ mod tests { [ CompletionItem { label: "type SomeType = ", - source_range: 124..125, - delete: 119..125, + source_range: 63..64, + delete: 58..64, insert: "type SomeType = ", kind: TypeAlias, lookup: "SomeType", @@ -517,8 +517,8 @@ mod tests { [ CompletionItem { label: "const SOME_CONST: u16 = ", - source_range: 133..134, - delete: 127..134, + source_range: 72..73, + delete: 66..73, insert: "const SOME_CONST: u16 = ", kind: Const, lookup: "SOME_CONST", @@ -544,8 +544,8 @@ mod tests { [ CompletionItem { label: "const SOME_CONST: u16 = ", - source_range: 138..139, - delete: 132..139, + source_range: 77..78, + delete: 71..78, insert: "const SOME_CONST: u16 = ", kind: Const, lookup: "SOME_CONST", diff --git a/crates/ra_ide/src/completion/complete_unqualified_path.rs b/crates/ra_ide/src/completion/complete_unqualified_path.rs index aa2b07a2f1f..a0a04bb5808 100644 --- a/crates/ra_ide/src/completion/complete_unqualified_path.rs +++ b/crates/ra_ide/src/completion/complete_unqualified_path.rs @@ -85,15 +85,15 @@ mod tests { "#, ), @r###" - [ - CompletionItem { - label: "collections", - source_range: 21..24, - delete: 21..24, - insert: "collections", - }, - ] - "### + [ + CompletionItem { + label: "collections", + source_range: 4..7, + delete: 4..7, + insert: "collections", + }, + ] + "### ); } @@ -157,16 +157,16 @@ mod tests { " ), @r###" - [ - CompletionItem { - label: "Enum", - source_range: 231..233, - delete: 231..233, - insert: "Enum", - kind: Enum, - }, - ] - "### + [ + CompletionItem { + label: "Enum", + source_range: 102..104, + delete: 102..104, + insert: "Enum", + kind: Enum, + }, + ] + "### ); } @@ -186,8 +186,8 @@ mod tests { [ CompletionItem { label: "quux(…)", - source_range: 91..91, - delete: 91..91, + source_range: 42..42, + delete: 42..42, insert: "quux(${1:x})$0", kind: Function, lookup: "quux", @@ -196,16 +196,16 @@ mod tests { }, CompletionItem { label: "x", - source_range: 91..91, - delete: 91..91, + source_range: 42..42, + delete: 42..42, insert: "x", kind: Binding, detail: "i32", }, CompletionItem { label: "y", - source_range: 91..91, - delete: 91..91, + source_range: 42..42, + delete: 42..42, insert: "y", kind: Binding, detail: "i32", @@ -235,23 +235,23 @@ mod tests { [ CompletionItem { label: "a", - source_range: 242..242, - delete: 242..242, + source_range: 129..129, + delete: 129..129, insert: "a", kind: Binding, }, CompletionItem { label: "b", - source_range: 242..242, - delete: 242..242, + source_range: 129..129, + delete: 129..129, insert: "b", kind: Binding, detail: "i32", }, CompletionItem { label: "quux()", - source_range: 242..242, - delete: 242..242, + source_range: 129..129, + delete: 129..129, insert: "quux()$0", kind: Function, lookup: "quux", @@ -278,8 +278,8 @@ mod tests { [ CompletionItem { label: "quux()", - source_range: 95..95, - delete: 95..95, + source_range: 46..46, + delete: 46..46, insert: "quux()$0", kind: Function, lookup: "quux", @@ -287,8 +287,8 @@ mod tests { }, CompletionItem { label: "x", - source_range: 95..95, - delete: 95..95, + source_range: 46..46, + delete: 46..46, insert: "x", kind: Binding, }, @@ -314,15 +314,15 @@ mod tests { [ CompletionItem { label: "index", - source_range: 107..107, - delete: 107..107, + source_range: 58..58, + delete: 58..58, insert: "index", kind: Binding, }, CompletionItem { label: "test()", - source_range: 107..107, - delete: 107..107, + source_range: 58..58, + delete: 58..58, insert: "test()$0", kind: Function, lookup: "test", @@ -347,15 +347,15 @@ mod tests { [ CompletionItem { label: "T", - source_range: 52..52, - delete: 52..52, + source_range: 19..19, + delete: 19..19, insert: "T", kind: TypeParam, }, CompletionItem { label: "quux()", - source_range: 52..52, - delete: 52..52, + source_range: 19..19, + delete: 19..19, insert: "quux()$0", kind: Function, lookup: "quux", @@ -380,22 +380,22 @@ mod tests { [ CompletionItem { label: "Self", - source_range: 54..54, - delete: 54..54, + source_range: 21..21, + delete: 21..21, insert: "Self", kind: TypeParam, }, CompletionItem { label: "T", - source_range: 54..54, - delete: 54..54, + source_range: 21..21, + delete: 21..21, insert: "T", kind: TypeParam, }, CompletionItem { label: "X<…>", - source_range: 54..54, - delete: 54..54, + source_range: 21..21, + delete: 21..21, insert: "X<$0>", kind: Struct, lookup: "X", @@ -419,15 +419,15 @@ mod tests { [ CompletionItem { label: "Self", - source_range: 48..48, - delete: 48..48, + source_range: 15..15, + delete: 15..15, insert: "Self", kind: TypeParam, }, CompletionItem { label: "X", - source_range: 48..48, - delete: 48..48, + source_range: 15..15, + delete: 15..15, insert: "X", kind: Enum, }, @@ -452,22 +452,22 @@ mod tests { [ CompletionItem { label: "Baz", - source_range: 105..105, - delete: 105..105, + source_range: 40..40, + delete: 40..40, insert: "Baz", kind: Enum, }, CompletionItem { label: "Foo", - source_range: 105..105, - delete: 105..105, + source_range: 40..40, + delete: 40..40, insert: "Foo", kind: Struct, }, CompletionItem { label: "quux()", - source_range: 105..105, - delete: 105..105, + source_range: 40..40, + delete: 40..40, insert: "quux()$0", kind: Function, lookup: "quux", @@ -520,15 +520,15 @@ mod tests { [ CompletionItem { label: "Bar", - source_range: 117..117, - delete: 117..117, + source_range: 52..52, + delete: 52..52, insert: "Bar", kind: Struct, }, CompletionItem { label: "quux()", - source_range: 117..117, - delete: 117..117, + source_range: 52..52, + delete: 52..52, insert: "quux()$0", kind: Function, lookup: "quux", @@ -552,15 +552,15 @@ mod tests { [ CompletionItem { label: "Foo", - source_range: 55..55, - delete: 55..55, + source_range: 22..22, + delete: 22..22, insert: "Foo", kind: Struct, }, CompletionItem { label: "x()", - source_range: 55..55, - delete: 55..55, + source_range: 22..22, + delete: 22..22, insert: "x()$0", kind: Function, lookup: "x", @@ -589,16 +589,16 @@ mod tests { [ CompletionItem { label: "bar", - source_range: 146..146, - delete: 146..146, + source_range: 65..65, + delete: 65..65, insert: "bar", kind: Binding, detail: "i32", }, CompletionItem { label: "foo()", - source_range: 146..146, - delete: 146..146, + source_range: 65..65, + delete: 65..65, insert: "foo()$0", kind: Function, lookup: "foo", @@ -1001,16 +1001,16 @@ mod tests { [ CompletionItem { label: "m!(…)", - source_range: 145..145, - delete: 145..145, + source_range: 80..80, + delete: 80..80, insert: "m!($0)", kind: Macro, detail: "macro_rules! m", }, CompletionItem { label: "quux(…)", - source_range: 145..145, - delete: 145..145, + source_range: 80..80, + delete: 80..80, insert: "quux(${1:x})$0", kind: Function, lookup: "quux", @@ -1019,16 +1019,16 @@ mod tests { }, CompletionItem { label: "x", - source_range: 145..145, - delete: 145..145, + source_range: 80..80, + delete: 80..80, insert: "x", kind: Binding, detail: "i32", }, CompletionItem { label: "y", - source_range: 145..145, - delete: 145..145, + source_range: 80..80, + delete: 80..80, insert: "y", kind: Binding, detail: "i32", @@ -1054,16 +1054,16 @@ mod tests { [ CompletionItem { label: "m!(…)", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "m!($0)", kind: Macro, detail: "macro_rules! m", }, CompletionItem { label: "quux(…)", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "quux(${1:x})$0", kind: Function, lookup: "quux", @@ -1072,16 +1072,16 @@ mod tests { }, CompletionItem { label: "x", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "x", kind: Binding, detail: "i32", }, CompletionItem { label: "y", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "y", kind: Binding, detail: "i32", @@ -1107,16 +1107,16 @@ mod tests { [ CompletionItem { label: "m!(…)", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "m!($0)", kind: Macro, detail: "macro_rules! m", }, CompletionItem { label: "quux(…)", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "quux(${1:x})$0", kind: Function, lookup: "quux", @@ -1125,16 +1125,16 @@ mod tests { }, CompletionItem { label: "x", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "x", kind: Binding, detail: "i32", }, CompletionItem { label: "y", - source_range: 145..146, - delete: 145..146, + source_range: 80..81, + delete: 80..81, insert: "y", kind: Binding, detail: "i32", @@ -1160,14 +1160,14 @@ mod tests { [ CompletionItem { label: "Quux", - source_range: 82..82, - delete: 82..82, + source_range: 33..33, + delete: 33..33, insert: "Quux", }, CompletionItem { label: "main()", - source_range: 82..82, - delete: 82..82, + source_range: 33..33, + delete: 33..33, insert: "main()$0", kind: Function, lookup: "main", @@ -1201,15 +1201,15 @@ mod tests { [ CompletionItem { label: "Foo", - source_range: 248..250, - delete: 248..250, + source_range: 103..105, + delete: 103..105, insert: "Foo", kind: Enum, }, CompletionItem { label: "Foo::Bar", - source_range: 248..250, - delete: 248..250, + source_range: 103..105, + delete: 103..105, insert: "Foo::Bar", kind: EnumVariant, lookup: "Bar", @@ -1217,8 +1217,8 @@ mod tests { }, CompletionItem { label: "Foo::Baz", - source_range: 248..250, - delete: 248..250, + source_range: 103..105, + delete: 103..105, insert: "Foo::Baz", kind: EnumVariant, lookup: "Baz", @@ -1226,8 +1226,8 @@ mod tests { }, CompletionItem { label: "Foo::Quux", - source_range: 248..250, - delete: 248..250, + source_range: 103..105, + delete: 103..105, insert: "Foo::Quux", kind: EnumVariant, lookup: "Quux", @@ -1262,15 +1262,15 @@ mod tests { [ CompletionItem { label: "Foo", - source_range: 219..221, - delete: 219..221, + source_range: 90..92, + delete: 90..92, insert: "Foo", kind: Enum, }, CompletionItem { label: "Foo::Bar", - source_range: 219..221, - delete: 219..221, + source_range: 90..92, + delete: 90..92, insert: "Foo::Bar", kind: EnumVariant, lookup: "Bar", @@ -1278,8 +1278,8 @@ mod tests { }, CompletionItem { label: "Foo::Baz", - source_range: 219..221, - delete: 219..221, + source_range: 90..92, + delete: 90..92, insert: "Foo::Baz", kind: EnumVariant, lookup: "Baz", @@ -1287,8 +1287,8 @@ mod tests { }, CompletionItem { label: "Foo::Quux", - source_range: 219..221, - delete: 219..221, + source_range: 90..92, + delete: 90..92, insert: "Foo::Quux", kind: EnumVariant, lookup: "Quux", @@ -1319,15 +1319,15 @@ mod tests { [ CompletionItem { label: "Foo", - source_range: 185..186, - delete: 185..186, + source_range: 72..73, + delete: 72..73, insert: "Foo", kind: Enum, }, CompletionItem { label: "Foo::Bar", - source_range: 185..186, - delete: 185..186, + source_range: 72..73, + delete: 72..73, insert: "Foo::Bar", kind: EnumVariant, lookup: "Bar", @@ -1335,8 +1335,8 @@ mod tests { }, CompletionItem { label: "Foo::Baz", - source_range: 185..186, - delete: 185..186, + source_range: 72..73, + delete: 72..73, insert: "Foo::Baz", kind: EnumVariant, lookup: "Baz", @@ -1344,8 +1344,8 @@ mod tests { }, CompletionItem { label: "Foo::Quux", - source_range: 185..186, - delete: 185..186, + source_range: 72..73, + delete: 72..73, insert: "Foo::Quux", kind: EnumVariant, lookup: "Quux", @@ -1353,8 +1353,8 @@ mod tests { }, CompletionItem { label: "main()", - source_range: 185..186, - delete: 185..186, + source_range: 72..73, + delete: 72..73, insert: "main()$0", kind: Function, lookup: "main", @@ -1381,8 +1381,8 @@ mod tests { [ CompletionItem { label: "f()", - source_range: 98..99, - delete: 98..99, + source_range: 49..50, + delete: 49..50, insert: "f()$0", kind: Function, lookup: "f", @@ -1390,15 +1390,15 @@ mod tests { }, CompletionItem { label: "m", - source_range: 98..99, - delete: 98..99, + source_range: 49..50, + delete: 49..50, insert: "m", kind: Module, }, CompletionItem { label: "m::E::V", - source_range: 98..99, - delete: 98..99, + source_range: 49..50, + delete: 49..50, insert: "m::E::V", kind: EnumVariant, lookup: "V", diff --git a/crates/ra_ide/src/completion/presentation.rs b/crates/ra_ide/src/completion/presentation.rs index 61565c84fe2..4fdc2f0bbca 100644 --- a/crates/ra_ide/src/completion/presentation.rs +++ b/crates/ra_ide/src/completion/presentation.rs @@ -491,13 +491,14 @@ mod tests { [ CompletionItem { label: "Foo", - source_range: 121..123, - delete: 121..123, + source_range: 56..58, + delete: 56..58, insert: "Foo", kind: EnumVariant, detail: "{ x: i32, y: i32 }", }, - ]"### + ] + "### ); } @@ -517,15 +518,16 @@ mod tests { [ CompletionItem { label: "Foo(…)", - source_range: 115..117, - delete: 115..117, + source_range: 50..52, + delete: 50..52, insert: "Foo($0)", kind: EnumVariant, lookup: "Foo", detail: "(i32, i32)", trigger_call_info: true, }, - ]"### + ] + "### ); } @@ -545,13 +547,14 @@ mod tests { [ CompletionItem { label: "Foo", - source_range: 104..106, - delete: 104..106, + source_range: 39..41, + delete: 39..41, insert: "Foo", kind: EnumVariant, detail: "()", }, - ]"### + ] + "### ); } @@ -573,8 +576,8 @@ mod tests { [ CompletionItem { label: "main()", - source_range: 203..206, - delete: 203..206, + source_range: 122..125, + delete: 122..125, insert: "main()$0", kind: Function, lookup: "main", @@ -582,8 +585,8 @@ mod tests { }, CompletionItem { label: "something_deprecated()", - source_range: 203..206, - delete: 203..206, + source_range: 122..125, + delete: 122..125, insert: "something_deprecated()$0", kind: Function, lookup: "something_deprecated", @@ -592,8 +595,8 @@ mod tests { }, CompletionItem { label: "something_else_deprecated()", - source_range: 203..206, - delete: 203..206, + source_range: 122..125, + delete: 122..125, insert: "something_else_deprecated()$0", kind: Function, lookup: "something_else_deprecated", @@ -619,8 +622,8 @@ mod tests { [ CompletionItem { label: "main()", - source_range: 61..64, - delete: 61..64, + source_range: 28..31, + delete: 28..31, insert: "main()$0", kind: Function, lookup: "main", @@ -628,8 +631,8 @@ mod tests { }, CompletionItem { label: "no_args()", - source_range: 61..64, - delete: 61..64, + source_range: 28..31, + delete: 28..31, insert: "no_args()$0", kind: Function, lookup: "no_args", @@ -649,8 +652,8 @@ mod tests { [ CompletionItem { label: "main()", - source_range: 80..85, - delete: 80..85, + source_range: 47..52, + delete: 47..52, insert: "main()$0", kind: Function, lookup: "main", @@ -658,8 +661,8 @@ mod tests { }, CompletionItem { label: "with_args(…)", - source_range: 80..85, - delete: 80..85, + source_range: 47..52, + delete: 47..52, insert: "with_args(${1:x}, ${2:y})$0", kind: Function, lookup: "with_args", @@ -680,8 +683,8 @@ mod tests { [ CompletionItem { label: "main()", - source_range: 110..115, - delete: 110..115, + source_range: 77..82, + delete: 77..82, insert: "main()$0", kind: Function, lookup: "main", @@ -689,8 +692,8 @@ mod tests { }, CompletionItem { label: "with_ignored_args(…)", - source_range: 110..115, - delete: 110..115, + source_range: 77..82, + delete: 77..82, insert: "with_ignored_args(${1:foo}, ${2:bar}, ${3:ho_ge_})$0", kind: Function, lookup: "with_ignored_args", @@ -716,8 +719,8 @@ mod tests { [ CompletionItem { label: "foo()", - source_range: 163..164, - delete: 163..164, + source_range: 66..67, + delete: 66..67, insert: "foo()$0", kind: Method, lookup: "foo", @@ -742,8 +745,8 @@ mod tests { [ CompletionItem { label: "foo_ignored_args(…)", - source_range: 194..195, - delete: 194..195, + source_range: 97..98, + delete: 97..98, insert: "foo_ignored_args(${1:a}, ${2:b})$0", kind: Method, lookup: "foo_ignored_args", @@ -771,23 +774,23 @@ mod tests { [ CompletionItem { label: "None", - source_range: 144..147, - delete: 144..147, + source_range: 79..82, + delete: 79..82, insert: "None", kind: EnumVariant, detail: "()", }, CompletionItem { label: "Option", - source_range: 144..147, - delete: 144..147, + source_range: 79..82, + delete: 79..82, insert: "Option", kind: Enum, }, CompletionItem { label: "Some(…)", - source_range: 144..147, - delete: 144..147, + source_range: 79..82, + delete: 79..82, insert: "Some($0)", kind: EnumVariant, lookup: "Some", @@ -796,8 +799,8 @@ mod tests { }, CompletionItem { label: "main()", - source_range: 144..147, - delete: 144..147, + source_range: 79..82, + delete: 79..82, insert: "main()$0", kind: Function, lookup: "main", @@ -822,23 +825,23 @@ mod tests { [ CompletionItem { label: "None", - source_range: 185..188, - delete: 185..188, + source_range: 104..107, + delete: 104..107, insert: "None", kind: EnumVariant, detail: "()", }, CompletionItem { label: "Option", - source_range: 185..188, - delete: 185..188, + source_range: 104..107, + delete: 104..107, insert: "Option", kind: Enum, }, CompletionItem { label: "Some(…)", - source_range: 185..188, - delete: 185..188, + source_range: 104..107, + delete: 104..107, insert: "Some($0)", kind: EnumVariant, lookup: "Some", @@ -872,23 +875,23 @@ mod tests { [ CompletionItem { label: "ManualVtable", - source_range: 295..299, - delete: 295..299, + source_range: 182..186, + delete: 182..186, insert: "ManualVtable", kind: Struct, }, CompletionItem { label: "main", - source_range: 295..299, - delete: 295..299, + source_range: 182..186, + delete: 182..186, insert: "main", kind: Function, detail: "fn main() -> ManualVtable", }, CompletionItem { label: "somefn", - source_range: 295..299, - delete: 295..299, + source_range: 182..186, + delete: 182..186, insert: "somefn", kind: Function, detail: "fn somefn(with: u8, a: u8, lot: u8, of: u8, args: u8)", @@ -916,8 +919,8 @@ mod tests { [ CompletionItem { label: "foo(…)", - source_range: 171..172, - delete: 171..172, + source_range: 74..75, + delete: 74..75, insert: "foo(${1:x})$0", kind: Method, lookup: "foo", @@ -951,8 +954,8 @@ mod tests { [ CompletionItem { label: "foo(…)", - source_range: 171..172, - delete: 171..172, + source_range: 74..75, + delete: 74..75, insert: "foo($0)", kind: Method, lookup: "foo", @@ -1062,16 +1065,16 @@ mod tests { [ CompletionItem { label: "Vec<…>", - source_range: 61..63, - delete: 61..63, + source_range: 28..30, + delete: 28..30, insert: "Vec<$0>", kind: Struct, lookup: "Vec", }, CompletionItem { label: "foo(…)", - source_range: 61..63, - delete: 61..63, + source_range: 28..30, + delete: 28..30, insert: "foo(${1:xs})$0", kind: Function, lookup: "foo", @@ -1092,16 +1095,16 @@ mod tests { [ CompletionItem { label: "Vec<…>", - source_range: 64..66, - delete: 64..66, + source_range: 31..33, + delete: 31..33, insert: "Vec<$0>", kind: TypeAlias, lookup: "Vec", }, CompletionItem { label: "foo(…)", - source_range: 64..66, - delete: 64..66, + source_range: 31..33, + delete: 31..33, insert: "foo(${1:xs})$0", kind: Function, lookup: "foo", @@ -1122,15 +1125,15 @@ mod tests { [ CompletionItem { label: "Vec", - source_range: 68..70, - delete: 68..70, + source_range: 35..37, + delete: 35..37, insert: "Vec", kind: Struct, }, CompletionItem { label: "foo(…)", - source_range: 68..70, - delete: 68..70, + source_range: 35..37, + delete: 35..37, insert: "foo(${1:xs})$0", kind: Function, lookup: "foo", @@ -1151,15 +1154,15 @@ mod tests { [ CompletionItem { label: "Vec", - source_range: 61..63, - delete: 61..63, + source_range: 28..30, + delete: 28..30, insert: "Vec", kind: Struct, }, CompletionItem { label: "foo(…)", - source_range: 61..63, - delete: 61..63, + source_range: 28..30, + delete: 28..30, insert: "foo(${1:xs})$0", kind: Function, lookup: "foo", @@ -1254,24 +1257,24 @@ mod tests { [ CompletionItem { label: "another_field", - source_range: 201..201, - delete: 201..201, + source_range: 136..136, + delete: 136..136, insert: "another_field", kind: Field, detail: "i64", }, CompletionItem { label: "my_string", - source_range: 201..201, - delete: 201..201, + source_range: 136..136, + delete: 136..136, insert: "my_string", kind: Field, detail: "{unknown}", }, CompletionItem { label: "the_field", - source_range: 201..201, - delete: 201..201, + source_range: 136..136, + delete: 136..136, insert: "the_field", kind: Field, detail: "u32", @@ -1298,16 +1301,16 @@ mod tests { [ CompletionItem { label: "another_field", - source_range: 208..208, - delete: 208..208, + source_range: 143..143, + delete: 143..143, insert: "another_field", kind: Field, detail: "i64", }, CompletionItem { label: "another_good_type", - source_range: 208..208, - delete: 208..208, + source_range: 143..143, + delete: 143..143, insert: "another_good_type", kind: Field, detail: "u32", @@ -1315,8 +1318,8 @@ mod tests { }, CompletionItem { label: "the_field", - source_range: 208..208, - delete: 208..208, + source_range: 143..143, + delete: 143..143, insert: "the_field", kind: Field, detail: "u32", @@ -1346,16 +1349,16 @@ mod tests { [ CompletionItem { label: "another_field", - source_range: 270..270, - delete: 270..270, + source_range: 189..189, + delete: 189..189, insert: "another_field", kind: Field, detail: "i64", }, CompletionItem { label: "another_good_type", - source_range: 270..270, - delete: 270..270, + source_range: 189..189, + delete: 189..189, insert: "another_good_type", kind: Field, detail: "u32", @@ -1363,8 +1366,8 @@ mod tests { }, CompletionItem { label: "the_field", - source_range: 270..270, - delete: 270..270, + source_range: 189..189, + delete: 189..189, insert: "the_field", kind: Field, detail: "u32", @@ -1394,8 +1397,8 @@ mod tests { [ CompletionItem { label: "another_field", - source_range: 336..336, - delete: 336..336, + source_range: 239..239, + delete: 239..239, insert: "another_field", kind: Field, detail: "i64", @@ -1403,16 +1406,16 @@ mod tests { }, CompletionItem { label: "another_good_type", - source_range: 336..336, - delete: 336..336, + source_range: 239..239, + delete: 239..239, insert: "another_good_type", kind: Field, detail: "u32", }, CompletionItem { label: "the_field", - source_range: 336..336, - delete: 336..336, + source_range: 239..239, + delete: 239..239, insert: "the_field", kind: Field, detail: "u32", @@ -1441,16 +1444,16 @@ mod tests { [ CompletionItem { label: "another_field", - source_range: 328..328, - delete: 328..328, + source_range: 231..231, + delete: 231..231, insert: "another_field", kind: Field, detail: "i64", }, CompletionItem { label: "another_good_type", - source_range: 328..328, - delete: 328..328, + source_range: 231..231, + delete: 231..231, insert: "another_good_type", kind: Field, detail: "u32", @@ -1458,8 +1461,8 @@ mod tests { }, CompletionItem { label: "the_field", - source_range: 328..328, - delete: 328..328, + source_range: 231..231, + delete: 231..231, insert: "the_field", kind: Field, detail: "u32", @@ -1485,15 +1488,15 @@ mod tests { [ CompletionItem { label: "WorldSnapshot", - source_range: 132..133, - delete: 132..133, + source_range: 71..72, + delete: 71..72, insert: "WorldSnapshot", kind: Struct, }, CompletionItem { label: "go(…)", - source_range: 132..133, - delete: 132..133, + source_range: 71..72, + delete: 71..72, insert: "go(${1:world})$0", kind: Function, lookup: "go", @@ -1502,8 +1505,8 @@ mod tests { }, CompletionItem { label: "world", - source_range: 132..133, - delete: 132..133, + source_range: 71..72, + delete: 71..72, insert: "world", kind: Binding, detail: "&WorldSnapshot", diff --git a/crates/ra_ide/src/completion/test_utils.rs b/crates/ra_ide/src/completion/test_utils.rs index 1e16a43cabe..a1b7c119340 100644 --- a/crates/ra_ide/src/completion/test_utils.rs +++ b/crates/ra_ide/src/completion/test_utils.rs @@ -2,7 +2,7 @@ use crate::{ completion::{completion_item::CompletionKind, CompletionConfig}, - mock_analysis::{analysis_and_position, single_file_with_position}, + mock_analysis::analysis_and_position, CompletionItem, }; use hir::Semantics; @@ -33,7 +33,7 @@ fn get_all_completion_items(code: &str, options: &CompletionConfig) -> Vec bool) { - let (analysis, pos) = single_file_with_position(code); + let (analysis, pos) = analysis_and_position(code); analysis .with_db(|db| { let sema = Semantics::new(db); diff --git a/crates/ra_ide/src/diagnostics.rs b/crates/ra_ide/src/diagnostics.rs index 8cb0700b942..8a18bc18c72 100644 --- a/crates/ra_ide/src/diagnostics.rs +++ b/crates/ra_ide/src/diagnostics.rs @@ -348,8 +348,10 @@ mod tests { ); } - fn check_apply_diagnostic_fix(before: &str, after: &str) { - let (analysis, file_id) = single_file(before); + fn check_apply_diagnostic_fix(ra_fixture_before: &str, ra_fixture_after: &str) { + let ra_fixture_after = &trim_indent(ra_fixture_after); + let (analysis, file_id) = single_file(ra_fixture_before); + let before = analysis.file_text(file_id).unwrap(); let diagnostic = analysis.diagnostics(file_id).unwrap().pop().unwrap(); let mut fix = diagnostic.fix.unwrap(); let edit = fix.source_change.source_file_edits.pop().unwrap().edit; @@ -358,7 +360,7 @@ mod tests { edit.apply(&mut actual); actual }; - assert_eq_text!(after, &actual); + assert_eq_text!(ra_fixture_after, &actual); } /// Takes a multi-file input fixture with annotated cursor position and checks that no diagnostics @@ -709,7 +711,7 @@ mod tests { [ Diagnostic { message: "Missing structure fields:\n- b\n", - range: 224..233, + range: 127..136, severity: Error, fix: Some( Fix { @@ -855,22 +857,22 @@ fn main() { fn test_add_field_from_usage() { check_apply_diagnostic_fix( r" - fn main() { - Foo { bar: 3, baz: false}; - } - struct Foo { - bar: i32 - } - ", +fn main() { + Foo { bar: 3, baz: false}; +} +struct Foo { + bar: i32 +} +", r" - fn main() { - Foo { bar: 3, baz: false}; - } - struct Foo { - bar: i32, - baz: bool - } - ", +fn main() { + Foo { bar: 3, baz: false}; +} +struct Foo { + bar: i32, + baz: bool +} +", ) } } diff --git a/crates/ra_ide/src/extend_selection.rs b/crates/ra_ide/src/extend_selection.rs index a4bc93cdbaa..8a6b3ea9904 100644 --- a/crates/ra_ide/src/extend_selection.rs +++ b/crates/ra_ide/src/extend_selection.rs @@ -315,17 +315,15 @@ fn adj_comments(comment: &ast::Comment, dir: Direction) -> ast::Comment { #[cfg(test)] mod tests { - use test_utils::extract_offset; - - use crate::mock_analysis::single_file; + use crate::mock_analysis::analysis_and_position; use super::*; fn do_check(before: &str, afters: &[&str]) { - let (cursor, before) = extract_offset(before); - let (analysis, file_id) = single_file(&before); - let range = TextRange::empty(cursor); - let mut frange = FileRange { file_id, range }; + let (analysis, position) = analysis_and_position(&before); + let before = analysis.file_text(position.file_id).unwrap(); + let range = TextRange::empty(position.offset); + let mut frange = FileRange { file_id: position.file_id, range }; for &after in afters { frange.range = analysis.extend_selection(frange).unwrap(); diff --git a/crates/ra_ide/src/hover.rs b/crates/ra_ide/src/hover.rs index a898f2e4a0e..c3e36a387a5 100644 --- a/crates/ra_ide/src/hover.rs +++ b/crates/ra_ide/src/hover.rs @@ -399,7 +399,7 @@ mod tests { use ra_db::FileLoader; use ra_syntax::TextRange; - use crate::mock_analysis::{analysis_and_position, single_file_with_position}; + use crate::mock_analysis::analysis_and_position; fn trim_markup(s: &str) -> &str { s.trim_start_matches("```rust\n").trim_end_matches("\n```") @@ -442,17 +442,17 @@ mod tests { #[test] fn hover_shows_type_of_an_expression() { - let (analysis, position) = single_file_with_position( - " - pub fn foo() -> u32 { 1 } + let (analysis, position) = analysis_and_position( + r#" +pub fn foo() -> u32 { 1 } - fn main() { - let foo_test = foo()<|>; - } - ", +fn main() { + let foo_test = foo()<|>; +} +"#, ); let hover = analysis.hover(position).unwrap().unwrap(); - assert_eq!(hover.range, TextRange::new(95.into(), 100.into())); + assert_eq!(hover.range, TextRange::new(58.into(), 63.into())); assert_eq!(trim_markup_opt(hover.info.first()), Some("u32")); } @@ -641,7 +641,7 @@ fn main() { #[test] fn hover_some() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " enum Option { Some(T) } use Option::Some; @@ -654,7 +654,7 @@ fn main() { let hover = analysis.hover(position).unwrap().unwrap(); assert_eq!(trim_markup_opt(hover.info.first()), Some("Option\n```\n\n```rust\nSome")); - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " enum Option { Some(T) } use Option::Some; @@ -720,21 +720,21 @@ The Some variant #[test] fn hover_for_local_variable() { - let (analysis, position) = single_file_with_position("fn func(foo: i32) { fo<|>o; }"); + let (analysis, position) = analysis_and_position("fn func(foo: i32) { fo<|>o; }"); let hover = analysis.hover(position).unwrap().unwrap(); assert_eq!(trim_markup_opt(hover.info.first()), Some("i32")); } #[test] fn hover_for_local_variable_pat() { - let (analysis, position) = single_file_with_position("fn func(fo<|>o: i32) {}"); + let (analysis, position) = analysis_and_position("fn func(fo<|>o: i32) {}"); let hover = analysis.hover(position).unwrap().unwrap(); assert_eq!(trim_markup_opt(hover.info.first()), Some("i32")); } #[test] fn hover_local_var_edge() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " fn func(foo: i32) { if true { <|>foo; }; } ", @@ -745,14 +745,14 @@ fn func(foo: i32) { if true { <|>foo; }; } #[test] fn hover_for_param_edge() { - let (analysis, position) = single_file_with_position("fn func(<|>foo: i32) {}"); + let (analysis, position) = analysis_and_position("fn func(<|>foo: i32) {}"); let hover = analysis.hover(position).unwrap().unwrap(); assert_eq!(trim_markup_opt(hover.info.first()), Some("i32")); } #[test] fn test_hover_infer_associated_method_result() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " struct Thing { x: u32 } @@ -773,7 +773,7 @@ fn func(foo: i32) { if true { <|>foo; }; } #[test] fn test_hover_infer_associated_method_exact() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " mod wrapper { struct Thing { x: u32 } @@ -799,7 +799,7 @@ fn func(foo: i32) { if true { <|>foo; }; } #[test] fn test_hover_infer_associated_const_in_pattern() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " struct X; impl X { @@ -821,7 +821,7 @@ fn func(foo: i32) { if true { <|>foo; }; } #[test] fn test_hover_self() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " struct Thing { x: u32 } impl Thing { @@ -835,7 +835,7 @@ fn func(foo: i32) { if true { <|>foo; }; } assert_eq!(trim_markup_opt(hover.info.first()), Some("Thing")); /* FIXME: revive these tests - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " struct Thing { x: u32 } impl Thing { @@ -849,7 +849,7 @@ fn func(foo: i32) { if true { <|>foo; }; } let hover = analysis.hover(position).unwrap().unwrap(); assert_eq!(trim_markup_opt(hover.info.first()), Some("Thing")); - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " enum Thing { A } impl Thing { @@ -862,7 +862,7 @@ fn func(foo: i32) { if true { <|>foo; }; } let hover = analysis.hover(position).unwrap().unwrap(); assert_eq!(trim_markup_opt(hover.info.first()), Some("enum Thing")); - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " enum Thing { A } impl Thing { @@ -878,7 +878,7 @@ fn func(foo: i32) { if true { <|>foo; }; } #[test] fn test_hover_shadowing_pat() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " fn x() {} @@ -894,7 +894,7 @@ fn func(foo: i32) { if true { <|>foo; }; } #[test] fn test_hover_macro_invocation() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " macro_rules! foo { () => {} @@ -911,7 +911,7 @@ fn func(foo: i32) { if true { <|>foo; }; } #[test] fn test_hover_tuple_field() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " struct TS(String, i32<|>); ", diff --git a/crates/ra_ide/src/inlay_hints.rs b/crates/ra_ide/src/inlay_hints.rs index 7eb2cef735f..3fd08b1e804 100644 --- a/crates/ra_ide/src/inlay_hints.rs +++ b/crates/ra_ide/src/inlay_hints.rs @@ -363,16 +363,17 @@ mod tests { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig{ parameter_hints: true, type_hints: false, chaining_hints: false, max_length: None}).unwrap(), @r###" [ InlayHint { - range: 106..107, + range: 69..70, kind: ParameterHint, label: "a", }, InlayHint { - range: 109..110, + range: 72..73, kind: ParameterHint, label: "b", }, - ]"###); + ] + "###); } #[test] @@ -399,11 +400,12 @@ mod tests { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig{ type_hints: true, parameter_hints: false, chaining_hints: false, max_length: None}).unwrap(), @r###" [ InlayHint { - range: 97..99, + range: 60..62, kind: TypeHint, label: "i32", }, - ]"###); + ] + "###); } #[test] fn default_generic_types_should_not_be_displayed() { @@ -423,12 +425,12 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 69..71, + range: 68..70, kind: TypeHint, label: "Test", }, InlayHint { - range: 107..113, + range: 106..112, kind: TypeHint, label: "&Test", }, @@ -480,57 +482,57 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 193..197, + range: 192..196, kind: TypeHint, label: "i32", }, InlayHint { - range: 236..244, + range: 235..243, kind: TypeHint, label: "i32", }, InlayHint { - range: 275..279, + range: 274..278, kind: TypeHint, label: "&str", }, InlayHint { - range: 539..543, + range: 538..542, kind: TypeHint, label: "(i32, char)", }, InlayHint { - range: 566..567, + range: 565..566, kind: TypeHint, label: "i32", }, InlayHint { - range: 570..571, + range: 569..570, kind: TypeHint, label: "i32", }, InlayHint { - range: 573..574, + range: 572..573, kind: TypeHint, label: "i32", }, InlayHint { - range: 577..578, + range: 576..577, kind: TypeHint, label: "f64", }, InlayHint { - range: 580..581, + range: 579..580, kind: TypeHint, label: "f64", }, InlayHint { - range: 584..585, + range: 583..584, kind: TypeHint, label: "i32", }, InlayHint { - range: 627..628, + range: 626..627, kind: TypeHint, label: "i32", }, @@ -560,47 +562,47 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 21..30, + range: 20..29, kind: TypeHint, label: "i32", }, InlayHint { - range: 57..66, + range: 56..65, kind: TypeHint, label: "i32", }, InlayHint { - range: 115..123, + range: 114..122, kind: TypeHint, label: "|…| -> i32", }, InlayHint { - range: 127..128, + range: 126..127, kind: TypeHint, label: "i32", }, InlayHint { - range: 130..131, + range: 129..130, kind: TypeHint, label: "i32", }, InlayHint { - range: 133..134, + range: 132..133, kind: TypeHint, label: "i32", }, InlayHint { - range: 136..137, + range: 135..136, kind: TypeHint, label: "i32", }, InlayHint { - range: 201..213, + range: 200..212, kind: TypeHint, label: "&|…| -> i32", }, InlayHint { - range: 236..245, + range: 235..244, kind: TypeHint, label: "|| -> i32", }, @@ -624,12 +626,12 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 21..30, + range: 20..29, kind: TypeHint, label: "i32", }, InlayHint { - range: 44..53, + range: 43..52, kind: TypeHint, label: "i32", }, @@ -674,57 +676,57 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 188..192, + range: 187..191, kind: TypeHint, label: "CustomOption", }, InlayHint { - range: 267..271, + range: 266..270, kind: TypeHint, label: "&CustomOption", }, InlayHint { - range: 300..304, + range: 299..303, kind: TypeHint, label: "&Test", }, InlayHint { - range: 341..342, + range: 340..341, kind: TypeHint, label: "&CustomOption", }, InlayHint { - range: 344..345, + range: 343..344, kind: TypeHint, label: "&u8", }, InlayHint { - range: 387..388, + range: 386..387, kind: TypeHint, label: "&CustomOption", }, InlayHint { - range: 393..394, + range: 392..393, kind: TypeHint, label: "&u8", }, InlayHint { - range: 441..442, + range: 440..441, kind: TypeHint, label: "&u32", }, InlayHint { - range: 448..449, + range: 447..448, kind: TypeHint, label: "&u8", }, InlayHint { - range: 500..501, + range: 499..500, kind: TypeHint, label: "&u8", }, InlayHint { - range: 543..544, + range: 542..543, kind: TypeHint, label: "&u8", }, @@ -769,57 +771,57 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 188..192, + range: 187..191, kind: TypeHint, label: "CustomOption", }, InlayHint { - range: 273..277, + range: 272..276, kind: TypeHint, label: "&CustomOption", }, InlayHint { - range: 309..313, + range: 308..312, kind: TypeHint, label: "&Test", }, InlayHint { - range: 353..354, + range: 352..353, kind: TypeHint, label: "&CustomOption", }, InlayHint { - range: 356..357, + range: 355..356, kind: TypeHint, label: "&u8", }, InlayHint { - range: 402..403, + range: 401..402, kind: TypeHint, label: "&CustomOption", }, InlayHint { - range: 408..409, + range: 407..408, kind: TypeHint, label: "&u8", }, InlayHint { - range: 459..460, + range: 458..459, kind: TypeHint, label: "&u32", }, InlayHint { - range: 466..467, + range: 465..466, kind: TypeHint, label: "&u8", }, InlayHint { - range: 521..522, + range: 520..521, kind: TypeHint, label: "&u8", }, InlayHint { - range: 567..568, + range: 566..567, kind: TypeHint, label: "&u8", }, @@ -864,52 +866,52 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 252..256, + range: 251..255, kind: TypeHint, label: "CustomOption", }, InlayHint { - range: 277..281, + range: 276..280, kind: TypeHint, label: "Test", }, InlayHint { - range: 310..311, + range: 309..310, kind: TypeHint, label: "CustomOption", }, InlayHint { - range: 313..314, + range: 312..313, kind: TypeHint, label: "u8", }, InlayHint { - range: 348..349, + range: 347..348, kind: TypeHint, label: "CustomOption", }, InlayHint { - range: 354..355, + range: 353..354, kind: TypeHint, label: "u8", }, InlayHint { - range: 394..395, + range: 393..394, kind: TypeHint, label: "u32", }, InlayHint { - range: 401..402, + range: 400..401, kind: TypeHint, label: "u8", }, InlayHint { - range: 445..446, + range: 444..445, kind: TypeHint, label: "u8", }, InlayHint { - range: 480..481, + range: 479..480, kind: TypeHint, label: "u8", }, @@ -936,17 +938,17 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig { max_length: Some(8), ..Default::default() }).unwrap(), @r###" [ InlayHint { - range: 74..75, + range: 73..74, kind: TypeHint, label: "Smol", }, InlayHint { - range: 98..99, + range: 97..98, kind: TypeHint, label: "VeryLongOuterName<…>", }, InlayHint { - range: 137..138, + range: 136..137, kind: TypeHint, label: "Smol>", }, @@ -1024,77 +1026,77 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig::default()).unwrap(), @r###" [ InlayHint { - range: 798..809, + range: 797..808, kind: TypeHint, label: "i32", }, InlayHint { - range: 842..843, + range: 841..842, kind: ParameterHint, label: "foo", }, InlayHint { - range: 845..846, + range: 844..845, kind: ParameterHint, label: "bar", }, InlayHint { - range: 848..855, + range: 847..854, kind: ParameterHint, label: "msg", }, InlayHint { - range: 860..871, + range: 859..870, kind: ParameterHint, label: "last", }, InlayHint { - range: 914..917, + range: 913..916, kind: ParameterHint, label: "param", }, InlayHint { - range: 937..939, + range: 936..938, kind: ParameterHint, label: "&self", }, InlayHint { - range: 941..945, + range: 940..944, kind: ParameterHint, label: "param", }, InlayHint { - range: 980..989, + range: 979..988, kind: ParameterHint, label: "file_id", }, InlayHint { - range: 999..1012, + range: 998..1011, kind: ParameterHint, label: "name", }, InlayHint { - range: 1022..1026, + range: 1021..1025, kind: ParameterHint, label: "focus_range", }, InlayHint { - range: 1036..1048, + range: 1035..1047, kind: ParameterHint, label: "full_range", }, InlayHint { - range: 1058..1071, + range: 1057..1070, kind: ParameterHint, label: "kind", }, InlayHint { - range: 1081..1085, + range: 1080..1084, kind: ParameterHint, label: "docs", }, InlayHint { - range: 1095..1099, + range: 1094..1098, kind: ParameterHint, label: "description", }, @@ -1239,16 +1241,17 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig{ parameter_hints: false, type_hints: false, chaining_hints: true, max_length: None}).unwrap(), @r###" [ InlayHint { - range: 232..269, + range: 147..172, kind: ChainingHint, label: "B", }, InlayHint { - range: 232..239, + range: 147..154, kind: ChainingHint, label: "A", }, - ]"###); + ] + "###); } #[test] @@ -1293,12 +1296,12 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig{ parameter_hints: false, type_hints: false, chaining_hints: true, max_length: None}).unwrap(), @r###" [ InlayHint { - range: 252..323, + range: 143..190, kind: ChainingHint, label: "C", }, InlayHint { - range: 252..300, + range: 143..179, kind: ChainingHint, label: "B", }, @@ -1331,15 +1334,16 @@ fn main() { assert_debug_snapshot!(analysis.inlay_hints(file_id, &InlayHintsConfig{ parameter_hints: false, type_hints: false, chaining_hints: true, max_length: None}).unwrap(), @r###" [ InlayHint { - range: 403..452, + range: 246..283, kind: ChainingHint, label: "B>", }, InlayHint { - range: 403..422, + range: 246..265, kind: ChainingHint, label: "A>", }, - ]"###); + ] + "###); } } diff --git a/crates/ra_ide/src/mock_analysis.rs b/crates/ra_ide/src/mock_analysis.rs index 981bdf924d6..e99c2b0a334 100644 --- a/crates/ra_ide/src/mock_analysis.rs +++ b/crates/ra_ide/src/mock_analysis.rs @@ -117,13 +117,13 @@ impl MockAnalysis { (res, position) } - pub fn add_file_fixture(&mut self, fixture: Fixture) -> FileId { + fn add_file_fixture(&mut self, fixture: Fixture) -> FileId { let file_id = self.next_id(); self.files.push(MockFileData::from(fixture)); file_id } - pub fn add_file_fixture_with_position(&mut self, mut fixture: Fixture) -> FilePosition { + fn add_file_fixture_with_position(&mut self, mut fixture: Fixture) -> FilePosition { let (offset, text) = extract_offset(&fixture.text); fixture.text = text; let file_id = self.next_id(); @@ -136,13 +136,7 @@ impl MockAnalysis { self.files.push(MockFileData::new(path.to_string(), text.to_string())); file_id } - pub fn add_file_with_position(&mut self, path: &str, text: &str) -> FilePosition { - let (offset, text) = extract_offset(text); - let file_id = self.next_id(); - self.files.push(MockFileData::new(path.to_string(), text)); - FilePosition { file_id, offset } - } - pub fn add_file_with_range(&mut self, path: &str, text: &str) -> FileRange { + fn add_file_with_range(&mut self, path: &str, text: &str) -> FileRange { let (range, text) = extract_range(text); let file_id = self.next_id(); self.files.push(MockFileData::new(path.to_string(), text)); @@ -222,18 +216,11 @@ pub fn analysis_and_position(ra_fixture: &str) -> (Analysis, FilePosition) { /// Creates analysis for a single file. pub fn single_file(ra_fixture: &str) -> (Analysis, FileId) { - let mut mock = MockAnalysis::new(); - let file_id = mock.add_file("/main.rs", ra_fixture); + let mock = MockAnalysis::with_files(ra_fixture); + let file_id = mock.id_of("/main.rs"); (mock.analysis(), file_id) } -/// Creates analysis for a single file, returns position marked with <|>. -pub fn single_file_with_position(ra_fixture: &str) -> (Analysis, FilePosition) { - let mut mock = MockAnalysis::new(); - let pos = mock.add_file_with_position("/main.rs", ra_fixture); - (mock.analysis(), pos) -} - /// Creates analysis for a single file, returns range marked with a pair of <|>. pub fn single_file_with_range(ra_fixture: &str) -> (Analysis, FileRange) { let mut mock = MockAnalysis::new(); diff --git a/crates/ra_ide/src/references.rs b/crates/ra_ide/src/references.rs index 4a96d65056d..3433fdae390 100644 --- a/crates/ra_ide/src/references.rs +++ b/crates/ra_ide/src/references.rs @@ -191,239 +191,244 @@ fn get_struct_def_name_for_struct_literal_search( #[cfg(test)] mod tests { use crate::{ - mock_analysis::{analysis_and_position, single_file_with_position, MockAnalysis}, + mock_analysis::{analysis_and_position, MockAnalysis}, Declaration, Reference, ReferenceSearchResult, SearchScope, }; #[test] fn test_struct_literal_after_space() { - let code = r#" - struct Foo <|>{ - a: i32, - } - impl Foo { - fn f() -> i32 { 42 } - } - fn main() { - let f: Foo; - f = Foo {a: Foo::f()}; - }"#; - - let refs = get_all_refs(code); + let refs = get_all_refs( + r#" +struct Foo <|>{ + a: i32, +} +impl Foo { + fn f() -> i32 { 42 } +} +fn main() { + let f: Foo; + f = Foo {a: Foo::f()}; +} +"#, + ); check_result( refs, - "Foo STRUCT_DEF FileId(1) 5..39 12..15 Other", - &["FileId(1) 138..141 StructLiteral"], + "Foo STRUCT_DEF FileId(1) 0..26 7..10 Other", + &["FileId(1) 101..104 StructLiteral"], ); } #[test] - fn test_struct_literal_befor_space() { - let code = r#" - struct Foo<|> {} - fn main() { - let f: Foo; - f = Foo {}; - }"#; - - let refs = get_all_refs(code); + fn test_struct_literal_before_space() { + let refs = get_all_refs( + r#" +struct Foo<|> {} + fn main() { + let f: Foo; + f = Foo {}; +} +"#, + ); check_result( refs, - "Foo STRUCT_DEF FileId(1) 5..18 12..15 Other", - &["FileId(1) 54..57 Other", "FileId(1) 71..74 StructLiteral"], + "Foo STRUCT_DEF FileId(1) 0..13 7..10 Other", + &["FileId(1) 41..44 Other", "FileId(1) 54..57 StructLiteral"], ); } #[test] fn test_struct_literal_with_generic_type() { - let code = r#" - struct Foo <|>{} - fn main() { - let f: Foo::; - f = Foo {}; - }"#; - - let refs = get_all_refs(code); + let refs = get_all_refs( + r#" +struct Foo <|>{} + fn main() { + let f: Foo::; + f = Foo {}; +} +"#, + ); check_result( refs, - "Foo STRUCT_DEF FileId(1) 5..21 12..15 Other", - &["FileId(1) 81..84 StructLiteral"], + "Foo STRUCT_DEF FileId(1) 0..16 7..10 Other", + &["FileId(1) 64..67 StructLiteral"], ); } #[test] fn test_struct_literal_for_tuple() { - let code = r#" - struct Foo<|>(i32); + let refs = get_all_refs( + r#" +struct Foo<|>(i32); - fn main() { - let f: Foo; - f = Foo(1); - }"#; - - let refs = get_all_refs(code); +fn main() { + let f: Foo; + f = Foo(1); +} +"#, + ); check_result( refs, - "Foo STRUCT_DEF FileId(1) 5..21 12..15 Other", - &["FileId(1) 71..74 StructLiteral"], + "Foo STRUCT_DEF FileId(1) 0..16 7..10 Other", + &["FileId(1) 54..57 StructLiteral"], ); } #[test] fn test_find_all_refs_for_local() { - let code = r#" - fn main() { - let mut i = 1; - let j = 1; - i = i<|> + j; + let refs = get_all_refs( + r#" +fn main() { + let mut i = 1; + let j = 1; + i = i<|> + j; - { - i = 0; - } + { + i = 0; + } - i = 5; - }"#; - - let refs = get_all_refs(code); + i = 5; +}"#, + ); check_result( refs, - "i BIND_PAT FileId(1) 33..34 Other Write", + "i BIND_PAT FileId(1) 24..25 Other Write", &[ - "FileId(1) 67..68 Other Write", - "FileId(1) 71..72 Other Read", - "FileId(1) 101..102 Other Write", - "FileId(1) 127..128 Other Write", + "FileId(1) 50..51 Other Write", + "FileId(1) 54..55 Other Read", + "FileId(1) 76..77 Other Write", + "FileId(1) 94..95 Other Write", ], ); } #[test] fn search_filters_by_range() { - let code = r#" - fn foo() { - let spam<|> = 92; - spam + spam - } - fn bar() { - let spam = 92; - spam + spam - } - "#; - let refs = get_all_refs(code); + let refs = get_all_refs( + r#" +fn foo() { + let spam<|> = 92; + spam + spam +} +fn bar() { + let spam = 92; + spam + spam +} +"#, + ); check_result( refs, - "spam BIND_PAT FileId(1) 44..48 Other", - &["FileId(1) 71..75 Other Read", "FileId(1) 78..82 Other Read"], + "spam BIND_PAT FileId(1) 19..23 Other", + &["FileId(1) 34..38 Other Read", "FileId(1) 41..45 Other Read"], ); } #[test] fn test_find_all_refs_for_param_inside() { - let code = r#" - fn foo(i : u32) -> u32 { - i<|> - }"#; - - let refs = get_all_refs(code); - check_result(refs, "i BIND_PAT FileId(1) 12..13 Other", &["FileId(1) 38..39 Other Read"]); + let refs = get_all_refs( + r#" +fn foo(i : u32) -> u32 { + i<|> +} +"#, + ); + check_result(refs, "i BIND_PAT FileId(1) 7..8 Other", &["FileId(1) 29..30 Other Read"]); } #[test] fn test_find_all_refs_for_fn_param() { - let code = r#" - fn foo(i<|> : u32) -> u32 { - i - }"#; - - let refs = get_all_refs(code); - check_result(refs, "i BIND_PAT FileId(1) 12..13 Other", &["FileId(1) 38..39 Other Read"]); + let refs = get_all_refs( + r#" +fn foo(i<|> : u32) -> u32 { + i +} +"#, + ); + check_result(refs, "i BIND_PAT FileId(1) 7..8 Other", &["FileId(1) 29..30 Other Read"]); } #[test] fn test_find_all_refs_field_name() { - let code = r#" - //- /lib.rs - struct Foo { - pub spam<|>: u32, - } + let refs = get_all_refs( + r#" +//- /lib.rs +struct Foo { + pub spam<|>: u32, +} - fn main(s: Foo) { - let f = s.spam; - } - "#; - - let refs = get_all_refs(code); +fn main(s: Foo) { + let f = s.spam; +} +"#, + ); check_result( refs, - "spam RECORD_FIELD_DEF FileId(1) 66..79 70..74 Other", - &["FileId(1) 152..156 Other Read"], + "spam RECORD_FIELD_DEF FileId(1) 17..30 21..25 Other", + &["FileId(1) 67..71 Other Read"], ); } #[test] fn test_find_all_refs_impl_item_name() { - let code = r#" - //- /lib.rs - struct Foo; - impl Foo { - fn f<|>(&self) { } - } - "#; - - let refs = get_all_refs(code); - check_result(refs, "f FN_DEF FileId(1) 88..104 91..92 Other", &[]); + let refs = get_all_refs( + r#" +struct Foo; +impl Foo { + fn f<|>(&self) { } +} +"#, + ); + check_result(refs, "f FN_DEF FileId(1) 27..43 30..31 Other", &[]); } #[test] fn test_find_all_refs_enum_var_name() { - let code = r#" - //- /lib.rs - enum Foo { - A, - B<|>, - C, - } - "#; - - let refs = get_all_refs(code); - check_result(refs, "B ENUM_VARIANT FileId(1) 83..84 83..84 Other", &[]); + let refs = get_all_refs( + r#" +enum Foo { + A, + B<|>, + C, +} +"#, + ); + check_result(refs, "B ENUM_VARIANT FileId(1) 22..23 22..23 Other", &[]); } #[test] fn test_find_all_refs_two_modules() { - let code = r#" - //- /lib.rs - pub mod foo; - pub mod bar; + let (analysis, pos) = analysis_and_position( + r#" +//- /lib.rs +pub mod foo; +pub mod bar; - fn f() { - let i = foo::Foo { n: 5 }; - } +fn f() { + let i = foo::Foo { n: 5 }; +} - //- /foo.rs - use crate::bar; +//- /foo.rs +use crate::bar; - pub struct Foo { - pub n: u32, - } +pub struct Foo { + pub n: u32, +} - fn f() { - let i = bar::Bar { n: 5 }; - } +fn f() { + let i = bar::Bar { n: 5 }; +} - //- /bar.rs - use crate::foo; +//- /bar.rs +use crate::foo; - pub struct Bar { - pub n: u32, - } +pub struct Bar { + pub n: u32, +} - fn f() { - let i = foo::Foo<|> { n: 5 }; - } - "#; - - let (analysis, pos) = analysis_and_position(code); +fn f() { + let i = foo::Foo<|> { n: 5 }; +} +"#, + ); let refs = analysis.find_all_refs(pos, None).unwrap().unwrap(); check_result( refs, @@ -437,48 +442,48 @@ mod tests { // which is the whole `foo.rs`, and the second one is in `use foo::Foo`. #[test] fn test_find_all_refs_decl_module() { - let code = r#" - //- /lib.rs - mod foo<|>; + let (analysis, pos) = analysis_and_position( + r#" +//- /lib.rs +mod foo<|>; - use foo::Foo; +use foo::Foo; - fn f() { - let i = Foo { n: 5 }; - } +fn f() { + let i = Foo { n: 5 }; +} - //- /foo.rs - pub struct Foo { - pub n: u32, - } - "#; - - let (analysis, pos) = analysis_and_position(code); +//- /foo.rs +pub struct Foo { + pub n: u32, +} +"#, + ); let refs = analysis.find_all_refs(pos, None).unwrap().unwrap(); check_result(refs, "foo SOURCE_FILE FileId(2) 0..35 Other", &["FileId(1) 14..17 Other"]); } #[test] fn test_find_all_refs_super_mod_vis() { - let code = r#" - //- /lib.rs - mod foo; + let (analysis, pos) = analysis_and_position( + r#" +//- /lib.rs +mod foo; - //- /foo.rs - mod some; - use some::Foo; +//- /foo.rs +mod some; +use some::Foo; - fn f() { - let i = Foo { n: 5 }; - } +fn f() { + let i = Foo { n: 5 }; +} - //- /foo/some.rs - pub(super) struct Foo<|> { - pub n: u32, - } - "#; - - let (analysis, pos) = analysis_and_position(code); +//- /foo/some.rs +pub(super) struct Foo<|> { + pub n: u32, +} +"#, + ); let refs = analysis.find_all_refs(pos, None).unwrap().unwrap(); check_result( refs, @@ -525,93 +530,98 @@ mod tests { #[test] fn test_find_all_refs_macro_def() { - let code = r#" - #[macro_export] - macro_rules! m1<|> { () => (()) } + let refs = get_all_refs( + r#" +#[macro_export] +macro_rules! m1<|> { () => (()) } - fn foo() { - m1(); - m1(); - }"#; - - let refs = get_all_refs(code); +fn foo() { + m1(); + m1(); +} +"#, + ); check_result( refs, - "m1 MACRO_CALL FileId(1) 9..63 46..48 Other", - &["FileId(1) 96..98 StructLiteral", "FileId(1) 114..116 StructLiteral"], + "m1 MACRO_CALL FileId(1) 0..46 29..31 Other", + &["FileId(1) 63..65 StructLiteral", "FileId(1) 73..75 StructLiteral"], ); } #[test] fn test_basic_highlight_read_write() { - let code = r#" - fn foo() { - let mut i<|> = 0; - i = i + 1; - }"#; - - let refs = get_all_refs(code); + let refs = get_all_refs( + r#" +fn foo() { + let mut i<|> = 0; + i = i + 1; +} +"#, + ); check_result( refs, - "i BIND_PAT FileId(1) 40..41 Other Write", - &["FileId(1) 59..60 Other Write", "FileId(1) 63..64 Other Read"], + "i BIND_PAT FileId(1) 23..24 Other Write", + &["FileId(1) 34..35 Other Write", "FileId(1) 38..39 Other Read"], ); } #[test] fn test_basic_highlight_field_read_write() { - let code = r#" - struct S { - f: u32, - } + let refs = get_all_refs( + r#" +struct S { + f: u32, +} - fn foo() { - let mut s = S{f: 0}; - s.f<|> = 0; - }"#; - - let refs = get_all_refs(code); +fn foo() { + let mut s = S{f: 0}; + s.f<|> = 0; +} +"#, + ); check_result( refs, - "f RECORD_FIELD_DEF FileId(1) 32..38 32..33 Other", - &["FileId(1) 96..97 Other Read", "FileId(1) 117..118 Other Write"], + "f RECORD_FIELD_DEF FileId(1) 15..21 15..16 Other", + &["FileId(1) 55..56 Other Read", "FileId(1) 68..69 Other Write"], ); } #[test] fn test_basic_highlight_decl_no_write() { - let code = r#" - fn foo() { - let i<|>; - i = 1; - }"#; - - let refs = get_all_refs(code); - check_result(refs, "i BIND_PAT FileId(1) 36..37 Other", &["FileId(1) 51..52 Other Write"]); + let refs = get_all_refs( + r#" +fn foo() { + let i<|>; + i = 1; +} +"#, + ); + check_result(refs, "i BIND_PAT FileId(1) 19..20 Other", &["FileId(1) 26..27 Other Write"]); } #[test] fn test_find_struct_function_refs_outside_module() { - let code = r#" - mod foo { - pub struct Foo; + let refs = get_all_refs( + r#" +mod foo { + pub struct Foo; - impl Foo { - pub fn new<|>() -> Foo { - Foo - } - } + impl Foo { + pub fn new<|>() -> Foo { + Foo } + } +} - fn main() { - let _f = foo::Foo::new(); - }"#; - - let refs = get_all_refs(code); +fn main() { + let _f = foo::Foo::new(); +} +"#, + ); check_result( refs, - "new FN_DEF FileId(1) 87..150 94..97 Other", - &["FileId(1) 227..230 StructLiteral"], + "new FN_DEF FileId(1) 54..101 61..64 Other", + &["FileId(1) 146..149 StructLiteral"], ); } @@ -642,8 +652,8 @@ mod tests { ); } - fn get_all_refs(text: &str) -> ReferenceSearchResult { - let (analysis, position) = single_file_with_position(text); + fn get_all_refs(ra_fixture: &str) -> ReferenceSearchResult { + let (analysis, position) = analysis_and_position(ra_fixture); analysis.find_all_refs(position, None).unwrap().unwrap() } diff --git a/crates/ra_ide/src/references/rename.rs b/crates/ra_ide/src/references/rename.rs index 6edf565b536..7ebc0adcf9b 100644 --- a/crates/ra_ide/src/references/rename.rs +++ b/crates/ra_ide/src/references/rename.rs @@ -271,11 +271,10 @@ fn rename_reference( mod tests { use insta::assert_debug_snapshot; use ra_text_edit::TextEditBuilder; + use stdx::trim_indent; use test_utils::{assert_eq_text, mark}; - use crate::{ - mock_analysis::analysis_and_position, mock_analysis::single_file_with_position, FileId, - }; + use crate::{mock_analysis::analysis_and_position, FileId}; #[test] fn test_rename_to_underscore() { @@ -309,7 +308,7 @@ mod tests { #[test] fn test_rename_to_invalid_identifier() { - let (analysis, position) = single_file_with_position( + let (analysis, position) = analysis_and_position( " fn main() { let i<|> = 1; @@ -1053,8 +1052,9 @@ pub mod foo<|>; ); } - fn test_rename(text: &str, new_name: &str, expected: &str) { - let (analysis, position) = single_file_with_position(text); + fn test_rename(ra_fixture_before: &str, new_name: &str, ra_fixture_after: &str) { + let ra_fixture_after = &trim_indent(ra_fixture_after); + let (analysis, position) = analysis_and_position(ra_fixture_before); let source_change = analysis.rename(position, new_name).unwrap(); let mut text_edit_builder = TextEditBuilder::default(); let mut file_id: Option = None; @@ -1068,6 +1068,6 @@ pub mod foo<|>; } let mut result = analysis.file_text(file_id.unwrap()).unwrap().to_string(); text_edit_builder.finish().apply(&mut result); - assert_eq_text!(expected, &*result); + assert_eq_text!(ra_fixture_after, &*result); } } diff --git a/crates/ra_ide/src/syntax_highlighting/tests.rs b/crates/ra_ide/src/syntax_highlighting/tests.rs index b1f48f03bc1..c8943816f3b 100644 --- a/crates/ra_ide/src/syntax_highlighting/tests.rs +++ b/crates/ra_ide/src/syntax_highlighting/tests.rs @@ -140,16 +140,17 @@ fn accidentally_quadratic() { fn test_ranges() { let (analysis, file_id) = single_file( r#" - #[derive(Clone, Debug)] - struct Foo { - pub x: i32, - pub y: i32, - }"#, +#[derive(Clone, Debug)] +struct Foo { + pub x: i32, + pub y: i32, +} +"#, ); // The "x" let highlights = &analysis - .highlight_range(FileRange { file_id, range: TextRange::at(82.into(), 1.into()) }) + .highlight_range(FileRange { file_id, range: TextRange::at(45.into(), 1.into()) }) .unwrap(); assert_eq!(&highlights[0].highlight.to_string(), "field.declaration"); diff --git a/crates/ra_ide/src/typing/on_enter.rs b/crates/ra_ide/src/typing/on_enter.rs index a40d8af9c43..2faaa8ff071 100644 --- a/crates/ra_ide/src/typing/on_enter.rs +++ b/crates/ra_ide/src/typing/on_enter.rs @@ -75,23 +75,22 @@ fn node_indent(file: &SourceFile, token: &SyntaxToken) -> Option { #[cfg(test)] mod tests { - use test_utils::{assert_eq_text, extract_offset}; + use test_utils::assert_eq_text; - use crate::mock_analysis::single_file; - - use super::*; + use crate::mock_analysis::analysis_and_position; + use stdx::trim_indent; fn apply_on_enter(before: &str) -> Option { - let (offset, before) = extract_offset(before); - let (analysis, file_id) = single_file(&before); - let result = analysis.on_enter(FilePosition { offset, file_id }).unwrap()?; + let (analysis, position) = analysis_and_position(&before); + let result = analysis.on_enter(position).unwrap()?; - let mut actual = before.to_string(); + let mut actual = analysis.file_text(position.file_id).unwrap().to_string(); result.apply(&mut actual); Some(actual) } fn do_check(ra_fixture_before: &str, ra_fixture_after: &str) { + let ra_fixture_after = &trim_indent(ra_fixture_after); let actual = apply_on_enter(ra_fixture_before).unwrap(); assert_eq_text!(ra_fixture_after, &actual); }