aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-02-06 13:55:10 +0000
committerAleksey Kladov <[email protected]>2020-02-06 13:55:10 +0000
commitec6fb8da7c7a5529e1db30c0a6f7e2cda6a75d19 (patch)
tree9619fde70cadd5bb3ba654527b4f22b5eebdd012
parentea9d18ba836a7228f7310e1bc77c0918f0191a42 (diff)
Add profiling around add_impl_members
This intention is pretty slow for `impl Interator`, because it has a ton of default methods which need to be substituted. The proper fix here is to not compute the actual edit until the user triggers the action, but that's awkward to do in the LSP right now, so let's just put a profiling code for now.
-rw-r--r--Cargo.lock1
-rw-r--r--crates/ra_assists/Cargo.toml1
-rw-r--r--crates/ra_assists/src/assists/add_missing_impl_members.rs1
3 files changed, 3 insertions, 0 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 1aa121030..f39cd01c3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -963,6 +963,7 @@ dependencies = [
963 "ra_db", 963 "ra_db",
964 "ra_fmt", 964 "ra_fmt",
965 "ra_hir", 965 "ra_hir",
966 "ra_prof",
966 "ra_syntax", 967 "ra_syntax",
967 "ra_text_edit", 968 "ra_text_edit",
968 "rustc-hash", 969 "rustc-hash",
diff --git a/crates/ra_assists/Cargo.toml b/crates/ra_assists/Cargo.toml
index 0d2109e4e..9d3091b91 100644
--- a/crates/ra_assists/Cargo.toml
+++ b/crates/ra_assists/Cargo.toml
@@ -16,6 +16,7 @@ either = "1.5"
16ra_syntax = { path = "../ra_syntax" } 16ra_syntax = { path = "../ra_syntax" }
17ra_text_edit = { path = "../ra_text_edit" } 17ra_text_edit = { path = "../ra_text_edit" }
18ra_fmt = { path = "../ra_fmt" } 18ra_fmt = { path = "../ra_fmt" }
19ra_prof = { path = "../ra_prof" }
19ra_db = { path = "../ra_db" } 20ra_db = { path = "../ra_db" }
20hir = { path = "../ra_hir", package = "ra_hir" } 21hir = { path = "../ra_hir", package = "ra_hir" }
21test_utils = { path = "../test_utils" } 22test_utils = { path = "../test_utils" }
diff --git a/crates/ra_assists/src/assists/add_missing_impl_members.rs b/crates/ra_assists/src/assists/add_missing_impl_members.rs
index 5bb937bde..e4c22ad55 100644
--- a/crates/ra_assists/src/assists/add_missing_impl_members.rs
+++ b/crates/ra_assists/src/assists/add_missing_impl_members.rs
@@ -99,6 +99,7 @@ fn add_missing_impl_members_inner(
99 assist_id: &'static str, 99 assist_id: &'static str,
100 label: &'static str, 100 label: &'static str,
101) -> Option<Assist> { 101) -> Option<Assist> {
102 let _p = ra_prof::profile("add_missing_impl_members_inner");
102 let impl_node = ctx.find_node_at_offset::<ast::ImplBlock>()?; 103 let impl_node = ctx.find_node_at_offset::<ast::ImplBlock>()?;
103 let impl_item_list = impl_node.item_list()?; 104 let impl_item_list = impl_node.item_list()?;
104 105