mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Rename some things around validation error reporting to signal that it is in fact about validation failures
This commit is contained in:
parent
16046c77aa
commit
a316c21dc8
@ -374,12 +374,6 @@ const_eval_unallowed_op_in_const_context =
|
||||
const_eval_unavailable_target_features_for_fn =
|
||||
calling a function that requires unavailable target features: {$unavailable_feats}
|
||||
|
||||
const_eval_undefined_behavior =
|
||||
it is undefined behavior to use this value
|
||||
|
||||
const_eval_undefined_behavior_note =
|
||||
The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
|
||||
|
||||
const_eval_uninhabited_enum_variant_read =
|
||||
read discriminant of an uninhabited enum variant
|
||||
const_eval_uninhabited_enum_variant_written =
|
||||
@ -434,6 +428,12 @@ const_eval_validation_expected_raw_ptr = expected a raw pointer
|
||||
const_eval_validation_expected_ref = expected a reference
|
||||
const_eval_validation_expected_str = expected a string
|
||||
|
||||
const_eval_validation_failure =
|
||||
it is undefined behavior to use this value
|
||||
|
||||
const_eval_validation_failure_note =
|
||||
The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
|
||||
|
||||
const_eval_validation_front_matter_invalid_value = constructing invalid value
|
||||
const_eval_validation_front_matter_invalid_value_with_path = constructing invalid value at {$path}
|
||||
|
||||
|
@ -382,7 +382,7 @@ fn eval_in_interpreter<'tcx, R: InterpretationResult<'tcx>>(
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn const_validate_mplace<'mir, 'tcx>(
|
||||
fn const_validate_mplace<'mir, 'tcx>(
|
||||
ecx: &InterpCx<'mir, 'tcx, CompileTimeInterpreter<'mir, 'tcx>>,
|
||||
mplace: &MPlaceTy<'tcx>,
|
||||
cid: GlobalId<'tcx>,
|
||||
@ -402,7 +402,9 @@ pub fn const_validate_mplace<'mir, 'tcx>(
|
||||
}
|
||||
};
|
||||
ecx.const_validate_operand(&mplace.into(), path, &mut ref_tracking, mode)
|
||||
.map_err(|error| const_report_error(&ecx, error, alloc_id))?;
|
||||
// Instead of just reporting the `InterpError` via the usual machinery, we give a more targetted
|
||||
// error about the validation failure.
|
||||
.map_err(|error| report_validation_error(&ecx, error, alloc_id))?;
|
||||
inner = true;
|
||||
}
|
||||
|
||||
@ -410,7 +412,7 @@ pub fn const_validate_mplace<'mir, 'tcx>(
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn const_report_error<'mir, 'tcx>(
|
||||
fn report_validation_error<'mir, 'tcx>(
|
||||
ecx: &InterpCx<'mir, 'tcx, CompileTimeInterpreter<'mir, 'tcx>>,
|
||||
error: InterpErrorInfo<'tcx>,
|
||||
alloc_id: AllocId,
|
||||
@ -429,6 +431,6 @@ pub fn const_report_error<'mir, 'tcx>(
|
||||
error,
|
||||
None,
|
||||
|| crate::const_eval::get_span_and_frames(ecx.tcx, ecx.stack()),
|
||||
move |span, frames| errors::UndefinedBehavior { span, ub_note, frames, raw_bytes },
|
||||
move |span, frames| errors::ValidationFailure { span, ub_note, frames, raw_bytes },
|
||||
)
|
||||
}
|
||||
|
@ -412,11 +412,11 @@ pub struct NullaryIntrinsicError {
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(const_eval_undefined_behavior, code = E0080)]
|
||||
pub struct UndefinedBehavior {
|
||||
#[diag(const_eval_validation_failure, code = E0080)]
|
||||
pub struct ValidationFailure {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
#[note(const_eval_undefined_behavior_note)]
|
||||
#[note(const_eval_validation_failure_note)]
|
||||
pub ub_note: Option<()>,
|
||||
#[subdiagnostic]
|
||||
pub frames: Vec<FrameNote>,
|
||||
|
Loading…
Reference in New Issue
Block a user