UPDATE - migrate constant.rs to new diagnostics infrastructure

This commit is contained in:
Jhonny Bill Mena 2022-11-06 10:09:24 -05:00
parent 78796ba637
commit d41112a8c5
3 changed files with 21 additions and 2 deletions

View File

@ -575,3 +575,17 @@ pub struct MetadataObjectFileWrite {
pub struct InvalidWindowsSubsystem { pub struct InvalidWindowsSubsystem {
pub subsystem: Symbol, pub subsystem: Symbol,
} }
#[derive(Diagnostic)]
#[diag(codegen_ssa_erroneous_constant)]
pub struct ErroneousConstant {
#[primary_span]
pub span: Span,
}
#[derive(Diagnostic)]
#[diag(codegen_ssa_shuffle_indices_evaluation)]
pub struct ShuffleIndicesEvaluation {
#[primary_span]
pub span: Span,
}

View File

@ -1,3 +1,4 @@
use crate::errors;
use crate::mir::operand::OperandRef; use crate::mir::operand::OperandRef;
use crate::traits::*; use crate::traits::*;
use rustc_middle::mir; use rustc_middle::mir;
@ -44,7 +45,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
self.cx.tcx().const_eval_resolve(ty::ParamEnv::reveal_all(), uv, None).map_err(|err| { self.cx.tcx().const_eval_resolve(ty::ParamEnv::reveal_all(), uv, None).map_err(|err| {
match err { match err {
ErrorHandled::Reported(_) => { ErrorHandled::Reported(_) => {
self.cx.tcx().sess.span_err(constant.span, "erroneous constant encountered"); self.cx.tcx().sess.emit_err(errors::ErroneousConstant { span: constant.span });
} }
ErrorHandled::TooGeneric => { ErrorHandled::TooGeneric => {
span_bug!(constant.span, "codegen encountered polymorphic constant: {:?}", err); span_bug!(constant.span, "codegen encountered polymorphic constant: {:?}", err);
@ -87,7 +88,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
(llval, c.ty()) (llval, c.ty())
}) })
.unwrap_or_else(|_| { .unwrap_or_else(|_| {
bx.tcx().sess.span_err(span, "could not evaluate shuffle_indices at compile time"); bx.tcx().sess.emit_err(errors::ShuffleIndicesEvaluation { span });
// We've errored, so we don't have to produce working code. // We've errored, so we don't have to produce working code.
let ty = self.monomorphize(ty); let ty = self.monomorphize(ty);
let llty = bx.backend_type(bx.layout_of(ty)); let llty = bx.backend_type(bx.layout_of(ty));

View File

@ -201,3 +201,7 @@ codegen_ssa_multiple_main_functions = entry symbol `main` declared multiple time
codegen_ssa_metadata_object_file_write = error writing metadata object file: {$error} codegen_ssa_metadata_object_file_write = error writing metadata object file: {$error}
codegen_ssa_invalid_windows_subsystem = invalid windows subsystem `{$subsystem}`, only `windows` and `console` are allowed codegen_ssa_invalid_windows_subsystem = invalid windows subsystem `{$subsystem}`, only `windows` and `console` are allowed
codegen_ssa_erroneous_constant = erroneous constant encountered
codegen_ssa_shuffle_indices_evaluation = could not evaluate shuffle_indices at compile time