diff --git a/rust-version b/rust-version index edb99d8eb0d5..89a8a40f1b2b 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -b5e21dbb5cabdaaadc47a4d8e3f59979dcad2871 +2d2be570970d784db5539a1d309cd22b85be910a diff --git a/tests/run-pass/stacked-borrows/refcell.rs b/tests/run-pass/stacked-borrows/refcell.rs index 0939a666193e..83db10577ceb 100644 --- a/tests/run-pass/stacked-borrows/refcell.rs +++ b/tests/run-pass/stacked-borrows/refcell.rs @@ -4,6 +4,7 @@ fn main() { basic(); ref_protector(); ref_mut_protector(); + rust_issue_68303(); } fn basic() { @@ -66,3 +67,11 @@ fn ref_mut_protector() { let rc = RefCell::new(0); break_it(&rc, rc.borrow_mut()) } + +/// Make sure we do not have bad enum layout optimizations. +fn rust_issue_68303() { + let optional=Some(RefCell::new(false)); + let mut handle=optional.as_ref().unwrap().borrow_mut(); + assert!(optional.is_some()); + *handle=true; +}