about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOliver Scherer <github35764891676564198441@oli-obk.de>2018-10-25 21:18:22 +0200
committerOliver Scherer <github35764891676564198441@oli-obk.de>2018-10-25 21:18:22 +0200
commitfd77500ed1d12dfdffff95e65530c2806a324f22 (patch)
tree3e5d250807ba4206af54e21747c41b1117b0f683 /src
parentee7f4a27d324db13ce27df9d79f258e64086d8f1 (diff)
downloadrust-fd77500ed1d12dfdffff95e65530c2806a324f22.tar.gz
rust-fd77500ed1d12dfdffff95e65530c2806a324f22.zip
Clear up nonpromotable const fn call qualification
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/transform/qualify_consts.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/librustc_mir/transform/qualify_consts.rs b/src/librustc_mir/transform/qualify_consts.rs
index 1305d02a87b..e7d694ffba9 100644
--- a/src/librustc_mir/transform/qualify_consts.rs
+++ b/src/librustc_mir/transform/qualify_consts.rs
@@ -1000,11 +1000,7 @@ impl<'a, 'tcx> Visitor<'tcx> for Qualifier<'a, 'tcx, 'tcx> {
             }
 
             // non-const fn calls.
-            if is_const_fn {
-                if !is_promotable_const_fn && self.mode == Mode::Fn {
-                    self.qualif = Qualif::NOT_PROMOTABLE;
-                }
-            } else {
+            if !is_const_fn {
                 self.qualif = Qualif::NOT_CONST;
                 if self.mode != Mode::Fn {
                     self.tcx.sess.delay_span_bug(
@@ -1022,6 +1018,11 @@ impl<'a, 'tcx> Visitor<'tcx> for Qualifier<'a, 'tcx, 'tcx> {
                     // Be conservative about the returned value of a const fn.
                     let tcx = self.tcx;
                     let ty = dest.ty(self.mir, tcx).to_ty(tcx);
+                    if is_const_fn && !is_promotable_const_fn && self.mode == Mode::Fn {
+                        self.qualif = Qualif::NOT_PROMOTABLE;
+                    } else {
+                        self.qualif = Qualif::empty();
+                    }
                     self.add_type(ty);
                 }
                 self.assign(dest, location);