);
return Err(ErrorHandled::Reported(ErrorReported {}));
}
- let qualif = tcx.mir_const_qualif_opt_const_arg(def);
- if qualif.error_occured {
- return Err(ErrorHandled::Reported(ErrorReported {}));
+ if let Some(error_reported) = tcx.mir_const_qualif_opt_const_arg(def).error_occured {
+ return Err(ErrorHandled::Reported(error_reported));
}
}
//!
//! See the `Qualif` trait for more info.
+use rustc_errors::ErrorReported;
use rustc_middle::mir::*;
use rustc_middle::ty::{self, subst::SubstsRef, AdtDef, Ty};
use rustc_span::DUMMY_SP;
pub fn in_any_value_of_ty(
cx: &ConstCx<'_, 'tcx>,
ty: Ty<'tcx>,
- error_occured: bool,
+ error_occured: Option<ErrorReported>,
) -> ConstQualifs {
ConstQualifs {
has_mut_interior: HasMutInterior::in_any_value_of_ty(cx, ty),
//! The `Visitor` responsible for actually checking a `mir::Body` for invalid operations.
-use rustc_errors::{struct_span_err, Applicability, Diagnostic};
+use rustc_errors::{struct_span_err, Applicability, Diagnostic, ErrorReported};
use rustc_hir::def_id::DefId;
use rustc_hir::{self as hir, HirId, LangItem};
use rustc_infer::infer::TyCtxtInferExt;
fn in_return_place(
&mut self,
ccx: &'mir ConstCx<'mir, 'tcx>,
- error_occured: bool,
+ error_occured: Option<ErrorReported>,
) -> ConstQualifs {
// Find the `Return` terminator if one exists.
//
/// The span of the current statement.
span: Span,
- error_emitted: bool,
+ error_emitted: Option<ErrorReported>,
secondary_errors: Vec<Diagnostic>,
}
span: ccx.body.span,
ccx,
qualifs: Default::default(),
- error_emitted: false,
+ error_emitted: None,
secondary_errors: Vec::new(),
}
}
// If we got through const-checking without emitting any "primary" errors, emit any
// "secondary" errors if they occurred.
let secondary_errors = mem::take(&mut self.secondary_errors);
- if !self.error_emitted {
+ if self.error_emitted.is_none() {
for error in secondary_errors {
self.tcx.sess.diagnostic().emit_diagnostic(&error);
}
match op.importance() {
ops::DiagnosticImportance::Primary => {
- self.error_emitted = true;
+ self.error_emitted = Some(ErrorReported);
err.emit();
}