From d92e9b7374bb2087e0eb4803bfabb030c1397bcd Mon Sep 17 00:00:00 2001 From: Christian Poveda Date: Fri, 22 Nov 2019 19:59:34 -0500 Subject: [PATCH] Allow mutable derefs with feature gate --- src/librustc_mir/transform/check_consts/ops.rs | 6 +++++- src/test/ui/consts/const-mut-refs/const_mut_refs.rs | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/librustc_mir/transform/check_consts/ops.rs b/src/librustc_mir/transform/check_consts/ops.rs index 117d628af257..be5845eaa365 100644 --- a/src/librustc_mir/transform/check_consts/ops.rs +++ b/src/librustc_mir/transform/check_consts/ops.rs @@ -216,7 +216,11 @@ impl NonConstOp for MutBorrow { #[derive(Debug)] pub struct MutDeref; -impl NonConstOp for MutDeref {} +impl NonConstOp for MutDeref { + fn feature_gate(tcx: TyCtxt<'_>) -> Option { + Some(tcx.features().const_mut_refs) + } +} #[derive(Debug)] pub struct Panic; diff --git a/src/test/ui/consts/const-mut-refs/const_mut_refs.rs b/src/test/ui/consts/const-mut-refs/const_mut_refs.rs index 60a69cb9f3f6..36174b2843d3 100644 --- a/src/test/ui/consts/const-mut-refs/const_mut_refs.rs +++ b/src/test/ui/consts/const-mut-refs/const_mut_refs.rs @@ -7,7 +7,9 @@ struct Foo { } const fn bar(foo: &mut Foo) -> usize { - foo.x + 1 + let x = &mut foo.x; + *x = 1; + *x } fn main() {