1
Fork 0

Fixed failing tests (missing labels), added automatic error code in create_feature_err() builder

This commit is contained in:
nidnogg 2022-08-20 16:27:41 -03:00
parent d1f14ee1b0
commit 4c82845b3a
5 changed files with 17 additions and 25 deletions

View file

@ -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();

View file

@ -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<()>,

View file

@ -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,