From bce3b6370036ba5ab0b0e29b3fe94b8f62020c00 Mon Sep 17 00:00:00 2001 From: Allan Brondum Rasmussen Date: Fri, 2 Dec 2022 23:50:39 +0100 Subject: [PATCH 1/3] check reference is a NameRef (and not Name) --- crates/ide/src/call_hierarchy.rs | 147 ++++++++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 1 deletion(-) diff --git a/crates/ide/src/call_hierarchy.rs b/crates/ide/src/call_hierarchy.rs index 5a8cda8fb3dd..1506e44a7180 100644 --- a/crates/ide/src/call_hierarchy.rs +++ b/crates/ide/src/call_hierarchy.rs @@ -57,7 +57,8 @@ pub(crate) fn incoming_calls( .flat_map(|func| func.usages(sema).all()); for (_, references) in references { - let references = references.into_iter().map(|FileReference { name, .. }| name); + let references = + references.iter().filter_map(|FileReference { name, .. }| name.as_name_ref()); for name in references { // This target is the containing function let nav = sema.ancestors_with_macros(name.syntax().clone()).find_map(|node| { @@ -457,4 +458,148 @@ fn caller$0() { expect![[]], ); } + + #[test] + fn test_trait_method_call_hierarchy_on_def() { + check_hierarchy( + r#" +trait T1 { + fn call$0ee(); +} + +struct S1; + +impl T1 for S1 { + fn callee() {} +} + +fn caller() { + S1::callee(); +} +"#, + expect![["callee Function FileId(0) 15..27 18..24"]], + expect![["caller Function FileId(0) 82..115 85..91 : [104..110]"]], + expect![[]], + ); + } + + #[test] + fn test_trait_method_call_hierarchy_on_impl() { + check_hierarchy( + r#" +trait T1 { + fn callee(); +} + +struct S1; + +impl T1 for S1 { + fn call$0ee() {} +} + +fn caller() { + S1::callee(); +} +"#, + expect![["callee Function FileId(0) 64..78 67..73"]], + expect![["caller Function FileId(0) 82..115 85..91 : [104..110]"]], + expect![[]], + ); + } + + #[test] + fn test_trait_method_call_hierarchy_on_ref() { + check_hierarchy( + r#" +trait T1 { + fn callee(); +} + +struct S1; + +impl T1 for S1 { + fn callee() {} +} + +fn caller() { + S1::call$0ee(); +} +"#, + expect![["callee Function FileId(0) 64..78 67..73"]], + expect![["caller Function FileId(0) 82..115 85..91 : [104..110]"]], + expect![[]], + ); + } + + #[test] + fn test_trait_method_generic_call_hierarchy_on_def() { + check_hierarchy( + r#" +trait T1 { + fn call$0ee(); +} + +struct S1; + +impl T1 for S1 { + fn callee() {} +} + +fn caller() { + T::callee(); +} +"#, + expect![["callee Function FileId(0) 15..27 18..24"]], + expect![["caller Function FileId(0) 82..121 85..91 : [110..116]"]], + expect![[]], + ); + } + + #[test] + fn test_trait_method_generic_call_hierarchy_on_impl() { + check_hierarchy( + r#" +trait T1 { + fn callee(); +} + +struct S1; + +impl T1 for S1 { + fn call$0ee() {} +} + +fn caller() { + T::callee(); +} +"#, + expect![["callee Function FileId(0) 64..78 67..73"]], + expect![["caller Function FileId(0) 82..121 85..91 : [110..116]"]], + expect![[]], + ); + } + + #[test] + fn test_trait_method_generic_call_hierarchy_on_ref() { + check_hierarchy( + r#" +trait T1 { + fn callee(); +} + +struct S1; + +impl T1 for S1 { + fn callee() {} +} + +fn caller() { + T::call$0ee(); +} +"#, + expect![["callee Function FileId(0) 15..27 18..24"]], + expect![["caller Function FileId(0) 82..121 85..91 : [110..116]"]], + expect![[]], + ); + } } From cc4f9db08642f006e7f8ff83233729aa39a6d353 Mon Sep 17 00:00:00 2001 From: Allan Brondum Rasmussen Date: Sat, 3 Dec 2022 00:53:56 +0100 Subject: [PATCH 2/3] remove unneeded test --- crates/ide/src/call_hierarchy.rs | 123 +------------------------------ 1 file changed, 2 insertions(+), 121 deletions(-) diff --git a/crates/ide/src/call_hierarchy.rs b/crates/ide/src/call_hierarchy.rs index 1506e44a7180..90723dcdbb74 100644 --- a/crates/ide/src/call_hierarchy.rs +++ b/crates/ide/src/call_hierarchy.rs @@ -460,7 +460,7 @@ fn caller$0() { } #[test] - fn test_trait_method_call_hierarchy_on_def() { + fn test_trait_method_call_hierarchy() { check_hierarchy( r#" trait T1 { @@ -482,124 +482,5 @@ fn caller() { expect![[]], ); } - - #[test] - fn test_trait_method_call_hierarchy_on_impl() { - check_hierarchy( - r#" -trait T1 { - fn callee(); -} - -struct S1; - -impl T1 for S1 { - fn call$0ee() {} -} - -fn caller() { - S1::callee(); -} -"#, - expect![["callee Function FileId(0) 64..78 67..73"]], - expect![["caller Function FileId(0) 82..115 85..91 : [104..110]"]], - expect![[]], - ); - } - - #[test] - fn test_trait_method_call_hierarchy_on_ref() { - check_hierarchy( - r#" -trait T1 { - fn callee(); -} - -struct S1; - -impl T1 for S1 { - fn callee() {} -} - -fn caller() { - S1::call$0ee(); -} -"#, - expect![["callee Function FileId(0) 64..78 67..73"]], - expect![["caller Function FileId(0) 82..115 85..91 : [104..110]"]], - expect![[]], - ); - } - - #[test] - fn test_trait_method_generic_call_hierarchy_on_def() { - check_hierarchy( - r#" -trait T1 { - fn call$0ee(); -} - -struct S1; - -impl T1 for S1 { - fn callee() {} -} - -fn caller() { - T::callee(); -} -"#, - expect![["callee Function FileId(0) 15..27 18..24"]], - expect![["caller Function FileId(0) 82..121 85..91 : [110..116]"]], - expect![[]], - ); - } - - #[test] - fn test_trait_method_generic_call_hierarchy_on_impl() { - check_hierarchy( - r#" -trait T1 { - fn callee(); -} - -struct S1; - -impl T1 for S1 { - fn call$0ee() {} -} - -fn caller() { - T::callee(); -} -"#, - expect![["callee Function FileId(0) 64..78 67..73"]], - expect![["caller Function FileId(0) 82..121 85..91 : [110..116]"]], - expect![[]], - ); - } - - #[test] - fn test_trait_method_generic_call_hierarchy_on_ref() { - check_hierarchy( - r#" -trait T1 { - fn callee(); -} - -struct S1; - -impl T1 for S1 { - fn callee() {} -} - -fn caller() { - T::call$0ee(); -} -"#, - expect![["callee Function FileId(0) 15..27 18..24"]], - expect![["caller Function FileId(0) 82..121 85..91 : [110..116]"]], - expect![[]], - ); - } + } From 30736b54c9fa4ae7dce93f71a7d363205dfd2842 Mon Sep 17 00:00:00 2001 From: Allan Brondum Rasmussen Date: Sat, 3 Dec 2022 01:20:27 +0100 Subject: [PATCH 3/3] fmt --- crates/ide/src/call_hierarchy.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/ide/src/call_hierarchy.rs b/crates/ide/src/call_hierarchy.rs index 90723dcdbb74..48bcd37b62c6 100644 --- a/crates/ide/src/call_hierarchy.rs +++ b/crates/ide/src/call_hierarchy.rs @@ -482,5 +482,4 @@ fn caller() { expect![[]], ); } - }