function foo() {
    var x = 0;
    var y;
    try {
        x = "";
    } catch(e) {
        x = false;
        throw -1;
    } finally {
        y = {};
    }
    // here via [try; finally] only.
    x(); // string ~/> function call (no num or bool error)
    y(); // object ~/> function call (no uninitialized error)
}
test env state tracking thru try/catch/finally
@flow