diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-10-03 20:58:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-03 20:58:56 +0200 |
| commit | 1b9014f2733eb4fd76e2d7ee26a145b0eda02c16 (patch) | |
| tree | 92d71688edf3f14c0bac43fea43669d754e7a500 | |
| parent | a5488826a9e2c00184319b3270ad6194f9a973a1 (diff) | |
| parent | b9c0467e0c87c38009087eea65a79994d6bf1f26 (diff) | |
| download | rust-1b9014f2733eb4fd76e2d7ee26a145b0eda02c16.tar.gz rust-1b9014f2733eb4fd76e2d7ee26a145b0eda02c16.zip | |
Rollup merge of #102486 - pierwill:middle-const-eval-err, r=compiler-errors
Add diagnostic struct for const eval error in `rustc_middle` Part of #100717. r? `@ghost`
| -rw-r--r-- | compiler/rustc_error_messages/locales/en-US/middle.ftl | 3 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/error.rs | 7 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/ty/adt.rs | 8 |
3 files changed, 13 insertions, 5 deletions
diff --git a/compiler/rustc_error_messages/locales/en-US/middle.ftl b/compiler/rustc_error_messages/locales/en-US/middle.ftl index ed834886453..ca3c91ce24a 100644 --- a/compiler/rustc_error_messages/locales/en-US/middle.ftl +++ b/compiler/rustc_error_messages/locales/en-US/middle.ftl @@ -15,3 +15,6 @@ middle_previous_use_here = middle_limit_invalid = `limit` must be a non-negative integer .label = {$error_str} + +middle_const_eval_non_int = + constant evaluation of enum discriminant resulted in non-integer diff --git a/compiler/rustc_middle/src/error.rs b/compiler/rustc_middle/src/error.rs index a4ceb494569..e69cb546d15 100644 --- a/compiler/rustc_middle/src/error.rs +++ b/compiler/rustc_middle/src/error.rs @@ -48,3 +48,10 @@ pub struct LimitInvalid<'a> { pub value_span: Span, pub error_str: &'a str, } + +#[derive(Diagnostic)] +#[diag(middle::const_eval_non_int)] +pub struct ConstEvalNonIntError { + #[primary_span] + pub span: Span, +} diff --git a/compiler/rustc_middle/src/ty/adt.rs b/compiler/rustc_middle/src/ty/adt.rs index 74ce0b38ed2..3c485e26409 100644 --- a/compiler/rustc_middle/src/ty/adt.rs +++ b/compiler/rustc_middle/src/ty/adt.rs @@ -458,11 +458,9 @@ impl<'tcx> AdtDef<'tcx> { Some(Discr { val: b, ty }) } else { info!("invalid enum discriminant: {:#?}", val); - crate::mir::interpret::struct_error( - tcx.at(tcx.def_span(expr_did)), - "constant evaluation of enum discriminant resulted in non-integer", - ) - .emit(); + tcx.sess.emit_err(crate::error::ConstEvalNonIntError { + span: tcx.def_span(expr_did), + }); None } } |
