Structured suggestion for "missing feature
intrinsic"
``` error: `size_of_val` is not yet stable as a const intrinsic --> $DIR/const-unstable-intrinsic.rs:17:9 | LL | unstable_intrinsic::size_of_val(&x); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(unstable)]` to the crate attributes to enable help: add `#![feature(unstable)]` to the crate attributes to enable | LL + #![feature("unstable")] | ```
This commit is contained in:
parent
a47fee50bd
commit
7175da59d3
5 changed files with 27 additions and 4 deletions
|
@ -819,10 +819,17 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> {
|
|||
feature,
|
||||
..
|
||||
}) => {
|
||||
let suggestion =
|
||||
tcx.hir_crate_items(()).definitions().next().and_then(|id| {
|
||||
tcx.crate_level_attribute_injection_span(
|
||||
tcx.local_def_id_to_hir_id(id),
|
||||
)
|
||||
});
|
||||
self.check_op(ops::IntrinsicUnstable {
|
||||
name: intrinsic.name,
|
||||
feature,
|
||||
const_stable_indirect: is_const_stable,
|
||||
suggestion,
|
||||
});
|
||||
}
|
||||
Some(ConstStability { level: StabilityLevel::Stable { .. }, .. }) => {
|
||||
|
|
|
@ -447,6 +447,7 @@ pub(crate) struct IntrinsicUnstable {
|
|||
pub name: Symbol,
|
||||
pub feature: Symbol,
|
||||
pub const_stable_indirect: bool,
|
||||
pub suggestion: Option<Span>,
|
||||
}
|
||||
|
||||
impl<'tcx> NonConstOp<'tcx> for IntrinsicUnstable {
|
||||
|
@ -466,6 +467,8 @@ impl<'tcx> NonConstOp<'tcx> for IntrinsicUnstable {
|
|||
span,
|
||||
name: self.name,
|
||||
feature: self.feature,
|
||||
suggestion: self.suggestion,
|
||||
help: self.suggestion.is_none(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,12 +123,19 @@ pub(crate) struct UnstableConstFn {
|
|||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(const_eval_unstable_intrinsic)]
|
||||
#[help]
|
||||
pub(crate) struct UnstableIntrinsic {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub name: Symbol,
|
||||
pub feature: Symbol,
|
||||
#[suggestion(
|
||||
const_eval_unstable_intrinsic_suggestion,
|
||||
code = "#![feature({feature})]\n",
|
||||
applicability = "machine-applicable"
|
||||
)]
|
||||
pub suggestion: Option<Span>,
|
||||
#[help(const_eval_unstable_intrinsic_suggestion)]
|
||||
pub help: bool,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue