//@ compile-flags: --edition 2018

#![feature(try_blocks)]

#[inline(never)]
fn do_something_with<T>(_x: T) {}

// This test checks that borrows made and returned inside try blocks are properly constrained
pub fn main() {
    {
        // Test that a borrow which *might* be returned still freezes its referent
        let mut i = 222;
        let x: Result<&i32, ()> = try {
            Err(())?;
            &i
        };
        i = 0; //~ ERROR cannot assign to `i` because it is borrowed
        let _ = i;
        do_something_with(x);
    }

    {
        let x = String::new();
        let _y: Result<(), ()> = try {
            Err(())?;
            ::std::mem::drop(x);
        };
        println!("{}", x); //~ ERROR borrow of moved value: `x`
    }

    {
        // Test that a borrow which *might* be assigned to an outer variable still freezes
        // its referent
        let mut i = 222;
        let mut j = &-1;
        let _x: Result<(), ()> = try {
            Err(())?;
            j = &i;
        };
        i = 0; //~ ERROR cannot assign to `i` because it is borrowed
        let _ = i;
        do_something_with(j);
    }
}
