31 lines
757 B
Rust
31 lines
757 B
Rust
//@ run-pass
|
|
// This is largely checking that we now accept code where temp values
|
|
// are borrowing from the input parameters (the `foo` case below).
|
|
//
|
|
// Compare to run-pass/issue-23338-params-outlive-temps-of-body.rs
|
|
//
|
|
// (The `foo2` case is just for parity with the above test, which
|
|
// shows what happens when you move the `y`-binding to the inside of
|
|
// the inner block.)
|
|
|
|
use std::cell::RefCell;
|
|
|
|
fn foo(x: RefCell<String>) -> String {
|
|
x.borrow().clone()
|
|
}
|
|
|
|
fn foo2(x: RefCell<String>) -> String {
|
|
let y = x;
|
|
let ret = {
|
|
y.borrow().clone()
|
|
};
|
|
ret
|
|
}
|
|
|
|
pub fn main() {
|
|
let r = RefCell::new(format!("data"));
|
|
assert_eq!(foo(r), "data");
|
|
let r = RefCell::new(format!("data"));
|
|
assert_eq!(foo2(r), "data");
|
|
}
|