// @allowUnreachableCode: false
// @noImplicitReturns: true

function f0(x): number {
    while (true);
}

function f1(x): number {
    if (x) {
        return 1
    }
}

function f2(x): number {
    while (x) {
        throw new Error();
    }
    return 1;
}

function f3(x): number {
    while (x) {
        throw new Error();
    }
}

function f3_1 (x): number {
    while (x) {
    }
    throw new Error();
}

function f4(x): number {
    try {
        if (x) {
            return 1;
        }
    }
    catch (e) {
    }
}

function f5(x): number {
    try {
        if (x) {
            return 1;
        }
    }
    catch (e) {
        return 2;
    }
}

function f6(x): number {
    try {
        if (x) {
            return 1;
        }
        else 
        {
            throw new Error();
        }
    }
    catch (e) {
    }
}

function f7(x): number {
    try {
        if (x) {
            return 1;
        }
        else {
            throw new Error();
        }
    }
    catch (e) {
        return 1;
    }
}

function f8(x): number {
    try {
        if (true) {
            x++;
        }
        else {
            return 1;
        }
    }
    catch (e) {
        return 1;
    }
}

function f9(x): number {
    try {
        while (false) {
            return 1;
        }
    }
    catch (e) {
        return 1;
    }
}

function f10(x): number {
    try {
        do {
            x++;
        } while (true);
    }
    catch (e) {
        return 1;
    }
}

function f11(x): number {
    test:
    try {
        do {
            do {
                break test;
            } while (true);
            x++;
        } while (true);
    }
    catch (e) {
        return 1;
    }
}