about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-12-01 04:49:26 +0100
committerGitHub <noreply@github.com>2019-12-01 04:49:26 +0100
commit75fd413e7b5eefacfc85b8c313fe3dfbc149ed1e (patch)
treee458b8eb39253dcf79d3ad696aa14c7a3eba3110 /src
parent60f4212ee537c7f5efff51c694c814b5458c8aa7 (diff)
parent2ced9d96e7b70237daa69bd8d421f0421d57e676 (diff)
downloadrust-75fd413e7b5eefacfc85b8c313fe3dfbc149ed1e.tar.gz
rust-75fd413e7b5eefacfc85b8c313fe3dfbc149ed1e.zip
Rollup merge of #66790 - christianpoveda:check-set-discriminant, r=oli-obk
Do `min_const_fn` checks for `SetDiscriminant`s target

Fixes https://github.com/rust-lang/rust/issues/66556

r? @oli-obk @ecstatic-morse
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/transform/check_consts/validation.rs3
-rw-r--r--src/librustc_mir/transform/qualify_min_const_fn.rs2
2 files changed, 2 insertions, 3 deletions
diff --git a/src/librustc_mir/transform/check_consts/validation.rs b/src/librustc_mir/transform/check_consts/validation.rs
index bee37f69a5e..829d9ee6faf 100644
--- a/src/librustc_mir/transform/check_consts/validation.rs
+++ b/src/librustc_mir/transform/check_consts/validation.rs
@@ -560,7 +560,7 @@ impl Visitor<'tcx> for Validator<'_, 'mir, 'tcx> {
         trace!("visit_statement: statement={:?} location={:?}", statement, location);
 
         match statement.kind {
-            StatementKind::Assign(..) => {
+            StatementKind::Assign(..) | StatementKind::SetDiscriminant { .. } => {
                 self.super_statement(statement, location);
             }
             StatementKind::FakeRead(FakeReadCause::ForMatchedPlace, _) => {
@@ -568,7 +568,6 @@ impl Visitor<'tcx> for Validator<'_, 'mir, 'tcx> {
             }
             // FIXME(eddyb) should these really do nothing?
             StatementKind::FakeRead(..) |
-            StatementKind::SetDiscriminant { .. } |
             StatementKind::StorageLive(_) |
             StatementKind::StorageDead(_) |
             StatementKind::InlineAsm {..} |
diff --git a/src/librustc_mir/transform/qualify_min_const_fn.rs b/src/librustc_mir/transform/qualify_min_const_fn.rs
index 81f4c277f4d..e40d6a5952e 100644
--- a/src/librustc_mir/transform/qualify_min_const_fn.rs
+++ b/src/librustc_mir/transform/qualify_min_const_fn.rs
@@ -225,7 +225,7 @@ fn check_statement(
         StatementKind::FakeRead(_, place) => check_place(tcx, place, span, def_id, body),
 
         // just an assignment
-        StatementKind::SetDiscriminant { .. } => Ok(()),
+        StatementKind::SetDiscriminant { place, .. } => check_place(tcx, place, span, def_id, body),
 
         | StatementKind::InlineAsm { .. } => {
             Err((span, "cannot use inline assembly in const fn".into()))