From c04a13cb1982fbdb207825a3213e2bc94ddcb836 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 27 Mar 2023 17:16:45 +0200 Subject: [PATCH 1/2] Simplify --- crates/hir-def/src/body/lower.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/hir-def/src/body/lower.rs b/crates/hir-def/src/body/lower.rs index 3fb3e4f68d..886d71ebed 100644 --- a/crates/hir-def/src/body/lower.rs +++ b/crates/hir-def/src/body/lower.rs @@ -1083,9 +1083,9 @@ impl ExprCollector<'_> { .collect(), } } - // FIXME: rustfmt removes this label if it is a block and not a loop - ast::Pat::LiteralPat(lit) => 'b: loop { - break if let Some(ast_lit) = lit.literal() { + #[rustfmt::skip] // https://github.com/rust-lang/rustfmt/issues/5676 + ast::Pat::LiteralPat(lit) => 'b: { + if let Some(ast_lit) = lit.literal() { let mut hir_lit: Literal = ast_lit.kind().into(); if lit.minus_token().is_some() { let Some(h) = hir_lit.negate() else { @@ -1099,7 +1099,7 @@ impl ExprCollector<'_> { Pat::Lit(expr_id) } else { Pat::Missing - }; + } }, ast::Pat::RestPat(_) => { // `RestPat` requires special handling and should not be mapped From b03a218b573511d15fd5b398a5c1db1509ab8d59 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 27 Mar 2023 17:17:09 +0200 Subject: [PATCH 2/2] fix: Fix proc-macro paths using incorrect CrateId's for rust-project.json workspaces --- crates/project-model/src/workspace.rs | 66 +++++++++++++-------------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs index fa966f70aa..916447fdff 100644 --- a/crates/project-model/src/workspace.rs +++ b/crates/project-model/src/workspace.rs @@ -704,15 +704,7 @@ fn project_json_to_crate_graph( }) .map(|(crate_id, krate, file_id)| { let env = krate.env.clone().into_iter().collect(); - if let Some(path) = krate.proc_macro_dylib_path.clone() { - proc_macros.insert( - crate_id, - Some(( - krate.display_name.as_ref().map(|it| it.canonical_name().to_owned()), - path, - )), - ); - } + let target_cfgs = match krate.target.as_deref() { Some(target) => cfg_cache .entry(target) @@ -722,31 +714,37 @@ fn project_json_to_crate_graph( let mut cfg_options = CfgOptions::default(); cfg_options.extend(target_cfgs.iter().chain(krate.cfg.iter()).cloned()); - ( - crate_id, - crate_graph.add_crate_root( - file_id, - krate.edition, - krate.display_name.clone(), - krate.version.clone(), - cfg_options.clone(), - cfg_options, - env, - krate.is_proc_macro, - if krate.display_name.is_some() { - CrateOrigin::CratesIo { - repo: krate.repository.clone(), - name: krate - .display_name - .clone() - .map(|n| n.canonical_name().to_string()), - } - } else { - CrateOrigin::CratesIo { repo: None, name: None } - }, - target_layout.clone(), - ), - ) + let crate_graph_crate_id = crate_graph.add_crate_root( + file_id, + krate.edition, + krate.display_name.clone(), + krate.version.clone(), + cfg_options.clone(), + cfg_options, + env, + krate.is_proc_macro, + if krate.display_name.is_some() { + CrateOrigin::CratesIo { + repo: krate.repository.clone(), + name: krate.display_name.clone().map(|n| n.canonical_name().to_string()), + } + } else { + CrateOrigin::CratesIo { repo: None, name: None } + }, + target_layout.clone(), + ); + if krate.is_proc_macro { + if let Some(path) = krate.proc_macro_dylib_path.clone() { + proc_macros.insert( + crate_graph_crate_id, + Some(( + krate.display_name.as_ref().map(|it| it.canonical_name().to_owned()), + path, + )), + ); + } + } + (crate_id, crate_graph_crate_id) }) .collect();