Fixed failing tests (missing labels), added automatic error code in create_feature_err() builder
This commit is contained in:
parent
d1f14ee1b0
commit
4c82845b3a
5 changed files with 17 additions and 25 deletions
|
@ -1,6 +1,6 @@
|
|||
// Not in interpret to make sure we do not use private implementation details
|
||||
|
||||
use crate::errors::MaxNumNodesExceeded;
|
||||
use crate::errors::MaxNumNodesInConstErr;
|
||||
use crate::interpret::{
|
||||
intern_const_alloc_recursive, ConstValue, InternKind, InterpCx, InterpResult, MemPlaceMeta,
|
||||
Scalar,
|
||||
|
@ -77,7 +77,7 @@ pub(crate) fn eval_to_valtree<'tcx>(
|
|||
ValTreeCreationError::NodesOverflow => {
|
||||
let msg = format!("maximum number of nodes exceeded in constant {}", &s);
|
||||
let mut diag = match tcx.hir().span_if_local(did) {
|
||||
Some(span) => tcx.sess.create_err(MaxNumNodesExceeded { span, s }),
|
||||
Some(span) => tcx.sess.create_err(MaxNumNodesInConstErr { span, s }),
|
||||
None => tcx.sess.struct_err(&msg),
|
||||
};
|
||||
diag.emit();
|
||||
|
|
|
@ -89,8 +89,8 @@ pub(crate) struct TransientMutBorrowErrRaw {
|
|||
}
|
||||
|
||||
#[derive(SessionDiagnostic)]
|
||||
#[error(const_eval::const_evaL_max_num_nodes_exceeded)]
|
||||
pub(crate) struct MaxNumNodesExceeded {
|
||||
#[error(const_eval::const_evaL_max_num_nodes_in_const_err)]
|
||||
pub(crate) struct MaxNumNodesInConstErr {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub s: String,
|
||||
|
@ -109,7 +109,7 @@ pub(crate) struct UnallowedFnPointerCall {
|
|||
pub(crate) struct UnstableConstFn {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub def_id: String,
|
||||
pub def_path: String,
|
||||
}
|
||||
|
||||
#[derive(SessionDiagnostic)]
|
||||
|
@ -160,6 +160,7 @@ pub(crate) struct UnallowedOpInConstContext {
|
|||
#[error(const_eval::unallowed_heap_allocations, code = "E0010")]
|
||||
pub(crate) struct UnallowedHeapAllocations {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub span: Span,
|
||||
pub kind: ConstContext,
|
||||
#[note(const_eval::teach_note)]
|
||||
|
@ -178,6 +179,7 @@ pub(crate) struct UnallowedInlineAsm {
|
|||
#[error(const_eval::interior_mutable_data_refer, code = "E0492")]
|
||||
pub(crate) struct InteriorMutableDataRefer {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub span: Span,
|
||||
#[help]
|
||||
pub opt_help: Option<()>,
|
||||
|
|
|
@ -345,8 +345,10 @@ impl<'tcx> NonConstOp<'tcx> for FnCallUnstable {
|
|||
) -> DiagnosticBuilder<'tcx, ErrorGuaranteed> {
|
||||
let FnCallUnstable(def_id, feature) = *self;
|
||||
|
||||
let mut err =
|
||||
ccx.tcx.sess.create_err(UnstableConstFn { span, def_id: ccx.tcx.def_path_str(def_id) });
|
||||
let mut err = ccx
|
||||
.tcx
|
||||
.sess
|
||||
.create_err(UnstableConstFn { span, def_path: ccx.tcx.def_path_str(def_id) });
|
||||
|
||||
if ccx.is_const_stable_const_fn() {
|
||||
err.help("const-stable functions can only call other const-stable functions");
|
||||
|
@ -517,17 +519,6 @@ impl<'tcx> NonConstOp<'tcx> for MutBorrow {
|
|||
ccx: &ConstCx<'_, 'tcx>,
|
||||
span: Span,
|
||||
) -> DiagnosticBuilder<'tcx, ErrorGuaranteed> {
|
||||
// let raw = match self.0 {
|
||||
// hir::BorrowKind::Raw => "raw ",
|
||||
// hir::BorrowKind::Ref => "",
|
||||
// };
|
||||
|
||||
// ccx.tcx.sess.create_err(UnallowedMutableRefs {
|
||||
// span,
|
||||
// raw,
|
||||
// kind: ccx.const_kind(),
|
||||
// teach: ccx.tcx.sess.teach(&error_code!(E0764)).then_some(()),
|
||||
// })
|
||||
match self.0 {
|
||||
hir::BorrowKind::Raw => ccx.tcx.sess.create_err(UnallowedMutableRefsRaw {
|
||||
span,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue