Unnamed repository; edit this file 'description' to name the repository.
Merge #10071
10071: internal: slightly improve compile times r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
bors[bot] 2021-08-29
parent 7c7a41c · parent 78365c6 · commit 35d9807
-rw-r--r--crates/ide/src/ssr.rs2
-rw-r--r--crates/ide_assists/src/assist_context.rs32
-rw-r--r--crates/ide_db/src/label.rs3
-rw-r--r--crates/ide_diagnostics/src/lib.rs2
-rw-r--r--crates/proc_macro_api/src/rpc.rs2
5 files changed, 22 insertions, 19 deletions
diff --git a/crates/ide/src/ssr.rs b/crates/ide/src/ssr.rs
index 57ec802614..6142a0eafd 100644
--- a/crates/ide/src/ssr.rs
+++ b/crates/ide/src/ssr.rs
@@ -41,7 +41,7 @@ pub(crate) fn ssr_assists(
for (label, source_change) in assists.into_iter() {
let assist = Assist {
id,
- label: Label::new(label),
+ label: Label::new(label.to_string()),
group: Some(GroupLabel("Apply SSR".into())),
target: comment_range,
source_change,
diff --git a/crates/ide_assists/src/assist_context.rs b/crates/ide_assists/src/assist_context.rs
index 1474505971..0244f5fb29 100644
--- a/crates/ide_assists/src/assist_context.rs
+++ b/crates/ide_assists/src/assist_context.rs
@@ -131,12 +131,8 @@ impl Assists {
target: TextRange,
f: impl FnOnce(&mut AssistBuilder),
) -> Option<()> {
- if !self.is_allowed(&id) {
- return None;
- }
- let label = Label::new(label.into());
- let assist = Assist { id, label, group: None, target, source_change: None };
- self.add_impl(assist, f)
+ let mut f = Some(f);
+ self.add_impl(None, id, label.into(), target, &mut |it| f.take().unwrap()(it))
}
pub(crate) fn add_group(
@@ -147,25 +143,33 @@ impl Assists {
target: TextRange,
f: impl FnOnce(&mut AssistBuilder),
) -> Option<()> {
+ let mut f = Some(f);
+ self.add_impl(Some(group), id, label.into(), target, &mut |it| f.take().unwrap()(it))
+ }
+
+ fn add_impl(
+ &mut self,
+ group: Option<&GroupLabel>,
+ id: AssistId,
+ label: String,
+ target: TextRange,
+ f: &mut dyn FnMut(&mut AssistBuilder),
+ ) -> Option<()> {
if !self.is_allowed(&id) {
return None;
}
- let label = Label::new(label.into());
- let assist = Assist { id, label, group: Some(group.clone()), target, source_change: None };
- self.add_impl(assist, f)
- }
- fn add_impl(&mut self, mut assist: Assist, f: impl FnOnce(&mut AssistBuilder)) -> Option<()> {
- let source_change = if self.resolve.should_resolve(&assist.id) {
+ let source_change = if self.resolve.should_resolve(&id) {
let mut builder = AssistBuilder::new(self.file);
f(&mut builder);
Some(builder.finish())
} else {
None
};
- assist.source_change = source_change;
- self.buf.push(assist);
+ let label = Label::new(label.into());
+ let group = group.cloned();
+ self.buf.push(Assist { id, label, group, target, source_change });
Some(())
}
diff --git a/crates/ide_db/src/label.rs b/crates/ide_db/src/label.rs
index 1f1e715c97..4b6d54b5ea 100644
--- a/crates/ide_db/src/label.rs
+++ b/crates/ide_db/src/label.rs
@@ -29,8 +29,7 @@ impl From<Label> for String {
}
impl Label {
- pub fn new(label: impl Into<String>) -> Label {
- let label = label.into();
+ pub fn new(label: String) -> Label {
assert!(label.starts_with(char::is_uppercase) && !label.ends_with('.'));
Label(label)
}
diff --git a/crates/ide_diagnostics/src/lib.rs b/crates/ide_diagnostics/src/lib.rs
index 9cb34d5a1a..2f53b647b1 100644
--- a/crates/ide_diagnostics/src/lib.rs
+++ b/crates/ide_diagnostics/src/lib.rs
@@ -222,7 +222,7 @@ fn unresolved_fix(id: &'static str, label: &str, target: TextRange) -> Assist {
assert!(!id.contains(' '));
Assist {
id: AssistId(id, AssistKind::QuickFix),
- label: Label::new(label),
+ label: Label::new(label.to_string()),
group: None,
target,
source_change: None,
diff --git a/crates/proc_macro_api/src/rpc.rs b/crates/proc_macro_api/src/rpc.rs
index 9fdbf04576..31d0aa56d3 100644
--- a/crates/proc_macro_api/src/rpc.rs
+++ b/crates/proc_macro_api/src/rpc.rs
@@ -99,7 +99,7 @@ mod tests {
};
let json = serde_json::to_string(&task).unwrap();
- println!("{}", json);
+ // println!("{}", json);
let back: ExpansionTask = serde_json::from_str(&json).unwrap();
assert_eq!(tt, back.macro_body.to_subtree());