diff options
| author | Oliver Scherer <github35764891676564198441@oli-obk.de> | 2018-10-25 21:18:22 +0200 |
|---|---|---|
| committer | Oliver Scherer <github35764891676564198441@oli-obk.de> | 2018-10-25 21:18:22 +0200 |
| commit | fd77500ed1d12dfdffff95e65530c2806a324f22 (patch) | |
| tree | 3e5d250807ba4206af54e21747c41b1117b0f683 /src | |
| parent | ee7f4a27d324db13ce27df9d79f258e64086d8f1 (diff) | |
| download | rust-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.rs | 11 |
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); |
