diff --git a/src/lib.rs b/src/lib.rs index 9ac703e2675b..47eaee6dfac3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -215,11 +215,22 @@ pub enum MiriMemoryKind { } impl Into> for MiriMemoryKind { + #[inline(always)] fn into(self) -> MemoryKind { MemoryKind::Machine(self) } } +impl MayLeak for MiriMemoryKind { + #[inline(always)] + fn may_leak(self) -> bool { + use MiriMemoryKind::*; + match self { + Rust | C => false, + Env | MutStatic => true, + } + } +} #[derive(Clone, PartialEq, Eq)] pub struct Evaluator<'tcx> { diff --git a/tests/run-pass/env.rs b/tests/run-pass/env.rs new file mode 100644 index 000000000000..c0bf883daf9c --- /dev/null +++ b/tests/run-pass/env.rs @@ -0,0 +1,7 @@ +use std::env; + +fn main() { + assert_eq!(env::var("MIRI_TEST"), Err(env::VarError::NotPresent)); + env::set_var("MIRI_TEST", "the answer"); + assert_eq!(env::var("MIRI_TEST"), Ok("the answer".to_owned())); +}