// MIR for `ezmap` after PreCodegen

fn ezmap(_1: Option<i32>) -> Option<i32> {
    debug x => _1;
    let mut _0: std::option::Option<i32>;
    scope 1 (inlined map::<i32, i32, {closure@$DIR/simple_option_map.rs:23:12: 23:15}>) {
        let mut _2: isize;
        let _3: i32;
        let mut _4: i32;
        scope 2 {
            scope 3 (inlined ezmap::{closure#0}) {
            }
        }
    }

    bb0: {
        StorageLive(_2);
        _2 = discriminant(_1);
        switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb4];
    }

    bb1: {
        _0 = const Option::<i32>::None;
        goto -> bb3;
    }

    bb2: {
        _3 = copy ((_1 as Some).0: i32);
        StorageLive(_4);
        _4 = Add(copy _3, const 1_i32);
        _0 = Option::<i32>::Some(move _4);
        StorageDead(_4);
        goto -> bb3;
    }

    bb3: {
        StorageDead(_2);
        return;
    }

    bb4: {
        unreachable;
    }
}

ALLOC0 (size: 8, align: 4) {
    00 00 00 00 __ __ __ __                         │ ....░░░░
}
