From 99fc3eff5795024b6d1bb510b06dfd4cb2049b72 Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Wed, 6 Feb 2019 18:11:48 +0200 Subject: [PATCH] rustc_mir: do not treat NEEDS_DROP as unexpected in qualify_consts. --- src/librustc_mir/transform/qualify_consts.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/librustc_mir/transform/qualify_consts.rs b/src/librustc_mir/transform/qualify_consts.rs index 25d201c3452..960146651cf 100644 --- a/src/librustc_mir/transform/qualify_consts.rs +++ b/src/librustc_mir/transform/qualify_consts.rs @@ -48,11 +48,6 @@ struct Qualif: u8 { // Refers to temporaries which cannot be promoted as // promote_consts decided they weren't simple enough. const NOT_PROMOTABLE = 1 << 3; - - // Const items can only have MUTABLE_INTERIOR - // and NOT_PROMOTABLE without producing an error. - const CONST_ERROR = !Qualif::MUTABLE_INTERIOR.bits & - !Qualif::NOT_PROMOTABLE.bits; } } @@ -419,13 +414,13 @@ fn qualify_call( }; // Bail out on oon-`const fn` calls or if the callee had errors. - if !is_const_fn || self.qualify_operand(callee).intersects(Qualif::CONST_ERROR) { + if !is_const_fn || self.qualify_operand(callee).intersects(Qualif::NOT_CONST) { return Qualif::NOT_CONST; } // Bail out if any arguments had errors. for arg in args { - if self.qualify_operand(arg).intersects(Qualif::CONST_ERROR) { + if self.qualify_operand(arg).intersects(Qualif::NOT_CONST) { return Qualif::NOT_CONST; } } @@ -668,7 +663,7 @@ fn check_const(&mut self) -> (Qualif, Lrc>) { // Account for errors in consts by using the // conservative type qualification instead. - if qualif.intersects(Qualif::CONST_ERROR) { + if qualif.intersects(Qualif::NOT_CONST) { qualif = self.qualifier().qualify_any_value_of_ty(mir.return_ty()); } -- 2.44.0