Skip to content

Commit 1d32a7b

Browse files
committed
Auto merge of #14094 - HKalbasi:layout, r=flodiebold
Reuse fetching target data layout from rustc function fix rust-lang/rust-analyzer#14087
2 parents e9ce02c + 40cf8b4 commit 1d32a7b

File tree

5 files changed

+12
-20
lines changed

5 files changed

+12
-20
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/hir-ty/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ tracing-subscriber = { version = "0.3.16", default-features = false, features =
4848
"registry",
4949
] }
5050
tracing-tree = "0.2.1"
51+
project-model = { path = "../project-model" }
5152

5253
# local deps
5354
test-utils.workspace = true

crates/hir-ty/src/layout/tests.rs

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::collections::HashMap;
2+
13
use base_db::fixture::WithFixture;
24
use chalk_ir::{AdtId, TyKind};
35
use hir_def::{
@@ -9,16 +11,12 @@ use crate::{db::HirDatabase, test_db::TestDB, Interner, Substitution};
911

1012
use super::layout_of_ty;
1113

12-
fn eval_goal(ra_fixture: &str, minicore: &str) -> Result<Layout, LayoutError> {
13-
// using unstable cargo features failed, fall back to using plain rustc
14-
let mut cmd = std::process::Command::new("rustc");
15-
cmd.args(["-Z", "unstable-options", "--print", "target-spec-json"]).env("RUSTC_BOOTSTRAP", "1");
16-
let output = cmd.output().unwrap();
17-
assert!(output.status.success(), "{}", output.status);
18-
let stdout = String::from_utf8(output.stdout).unwrap();
19-
let target_data_layout =
20-
stdout.split_once(r#""data-layout": ""#).unwrap().1.split_once('"').unwrap().0.to_owned();
14+
fn current_machine_data_layout() -> String {
15+
project_model::target_data_layout::get(None, None, &HashMap::default()).unwrap()
16+
}
2117

18+
fn eval_goal(ra_fixture: &str, minicore: &str) -> Result<Layout, LayoutError> {
19+
let target_data_layout = current_machine_data_layout();
2220
let ra_fixture = format!(
2321
"{minicore}//- /main.rs crate:test target_data_layout:{target_data_layout}\n{ra_fixture}",
2422
);
@@ -47,15 +45,7 @@ fn eval_goal(ra_fixture: &str, minicore: &str) -> Result<Layout, LayoutError> {
4745

4846
/// A version of `eval_goal` for types that can not be expressed in ADTs, like closures and `impl Trait`
4947
fn eval_expr(ra_fixture: &str, minicore: &str) -> Result<Layout, LayoutError> {
50-
// using unstable cargo features failed, fall back to using plain rustc
51-
let mut cmd = std::process::Command::new("rustc");
52-
cmd.args(["-Z", "unstable-options", "--print", "target-spec-json"]).env("RUSTC_BOOTSTRAP", "1");
53-
let output = cmd.output().unwrap();
54-
assert!(output.status.success(), "{}", output.status);
55-
let stdout = String::from_utf8(output.stdout).unwrap();
56-
let target_data_layout =
57-
stdout.split_once(r#""data-layout": ""#).unwrap().1.split_once('"').unwrap().0.to_owned();
58-
48+
let target_data_layout = current_machine_data_layout();
5949
let ra_fixture = format!(
6050
"{minicore}//- /main.rs crate:test target_data_layout:{target_data_layout}\nfn main(){{let goal = {{{ra_fixture}}};}}",
6151
);

crates/project-model/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ mod sysroot;
2525
mod workspace;
2626
mod rustc_cfg;
2727
mod build_scripts;
28-
mod target_data_layout;
28+
pub mod target_data_layout;
2929

3030
#[cfg(test)]
3131
mod tests;

crates/project-model/src/target_data_layout.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use rustc_hash::FxHashMap;
66

77
use crate::{utf8_stdout, ManifestPath};
88

9-
pub(super) fn get(
9+
pub fn get(
1010
cargo_toml: Option<&ManifestPath>,
1111
target: Option<&str>,
1212
extra_env: &FxHashMap<String, String>,

0 commit comments

Comments
 (0)