Suggest x build library
for a custom toolchain that fails to load core
This commit is contained in:
parent
0ab38e95bb
commit
9b6bdcd86b
@ -25,6 +25,9 @@ metadata_conflicting_alloc_error_handler =
|
||||
metadata_conflicting_global_alloc =
|
||||
the `#[global_allocator]` in {$other_crate_name} conflicts with global allocator in: {$crate_name}
|
||||
|
||||
metadata_consider_adding_std =
|
||||
consider adding the standard library to the sysroot with `x build library --target {$locator_triple}`
|
||||
|
||||
metadata_consider_building_std =
|
||||
consider building the standard library from source with `cargo build -Zbuild-std`
|
||||
|
||||
|
@ -623,6 +623,7 @@ pub struct CannotFindCrate {
|
||||
pub is_nightly_build: bool,
|
||||
pub profiler_runtime: Symbol,
|
||||
pub locator_triple: TargetTriple,
|
||||
pub is_ui_testing: bool,
|
||||
}
|
||||
|
||||
impl IntoDiagnostic<'_> for CannotFindCrate {
|
||||
@ -646,12 +647,19 @@ fn into_diagnostic(
|
||||
} else {
|
||||
diag.note(fluent::metadata_target_no_std_support);
|
||||
}
|
||||
// NOTE: this suggests using rustup, even though the user may not have it installed.
|
||||
// That's because they could choose to install it; or this may give them a hint which
|
||||
// target they need to install from their distro.
|
||||
|
||||
if self.missing_core {
|
||||
diag.help(fluent::metadata_consider_downloading_target);
|
||||
if env!("CFG_RELEASE_CHANNEL") == "dev" && !self.is_ui_testing {
|
||||
// Note: Emits the nicer suggestion only for the dev channel.
|
||||
diag.help(fluent::metadata_consider_adding_std);
|
||||
} else {
|
||||
// NOTE: this suggests using rustup, even though the user may not have it installed.
|
||||
// That's because they could choose to install it; or this may give them a hint which
|
||||
// target they need to install from their distro.
|
||||
diag.help(fluent::metadata_consider_downloading_target);
|
||||
}
|
||||
}
|
||||
|
||||
// Suggest using #![no_std]. #[no_core] is unstable and not really supported anyway.
|
||||
// NOTE: this is a dummy span if `extern crate std` was injected by the compiler.
|
||||
// If it's not a dummy, that means someone added `extern crate std` explicitly and
|
||||
|
@ -1125,6 +1125,7 @@ pub(crate) fn report(self, sess: &Session, span: Span, missing_core: bool) {
|
||||
is_nightly_build: sess.is_nightly_build(),
|
||||
profiler_runtime: Symbol::intern(&sess.opts.unstable_opts.profiler_runtime),
|
||||
locator_triple: locator.triple,
|
||||
is_ui_testing: sess.opts.unstable_opts.ui_testing,
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1141,6 +1142,7 @@ pub(crate) fn report(self, sess: &Session, span: Span, missing_core: bool) {
|
||||
is_nightly_build: sess.is_nightly_build(),
|
||||
profiler_runtime: Symbol::intern(&sess.opts.unstable_opts.profiler_runtime),
|
||||
locator_triple: sess.opts.target_triple.clone(),
|
||||
is_ui_testing: sess.opts.unstable_opts.ui_testing,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user