summary refs log tree commit diff
path: root/compiler/rustc_mir/src/const_eval
diff options
context:
space:
mode:
authorTunahan Karlibas <dvt.tnhn.krlbs@gmail.com>2020-12-09 14:53:35 +0300
committerTunahan Karlibas <dvt.tnhn.krlbs@gmail.com>2020-12-09 14:53:35 +0300
commitde1cd4b36d57b33f4217a46c0c52fbe1eb4530a1 (patch)
tree333e638096048a184e570255d08fcf0aa7280a13 /compiler/rustc_mir/src/const_eval
parent7cb74ed1917cc982830d6b7b7bac7e8a7f4d271c (diff)
downloadrust-de1cd4b36d57b33f4217a46c0c52fbe1eb4530a1.tar.gz
rust-de1cd4b36d57b33f4217a46c0c52fbe1eb4530a1.zip
Extra assertions in eval_body_using_ecx to disallow queries for
functions that does allocations
Diffstat (limited to 'compiler/rustc_mir/src/const_eval')
-rw-r--r--compiler/rustc_mir/src/const_eval/eval_queries.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/rustc_mir/src/const_eval/eval_queries.rs b/compiler/rustc_mir/src/const_eval/eval_queries.rs
index 6e09ae43406..4d14e45c2e9 100644
--- a/compiler/rustc_mir/src/const_eval/eval_queries.rs
+++ b/compiler/rustc_mir/src/const_eval/eval_queries.rs
@@ -30,6 +30,13 @@ fn eval_body_using_ecx<'mir, 'tcx>(
     body: &'mir mir::Body<'tcx>,
 ) -> InterpResult<'tcx, MPlaceTy<'tcx>> {
     debug!("eval_body_using_ecx: {:?}, {:?}", cid, ecx.param_env);
+    assert!(
+        cid.promoted.is_some()
+            || matches!(
+                ecx.tcx.hir().body_const_context(def_id),
+                Some(ConstContext::Const | ConstContext::Static(_))
+            )
+    );
     let tcx = *ecx.tcx;
     let layout = ecx.layout_of(body.return_ty().subst(tcx, cid.instance.substs))?;
     assert!(!layout.is_unsized());