innerTypeParameterShadowingOuterOne.ts(7,9): error TS2454: Variable 'x' is used before being assigned.
innerTypeParameterShadowingOuterOne.ts(10,5): error TS2454: Variable 'x' is used before being assigned.
innerTypeParameterShadowingOuterOne.ts(16,9): error TS2454: Variable 'x' is used before being assigned.
innerTypeParameterShadowingOuterOne.ts(19,5): error TS2454: Variable 'x' is used before being assigned.


==== innerTypeParameterShadowingOuterOne.ts (4 errors) ====
    // inner type parameters shadow outer ones of the same name
    // no errors expected
    
    function f<T extends Date>() {
        function g<T extends Number>() {
            var x: T;
            x.toFixed();
            ~
!!! error TS2454: Variable 'x' is used before being assigned.
        }
        var x: T;
        x.getDate();
        ~
!!! error TS2454: Variable 'x' is used before being assigned.
    }
    
    function f2<T extends Date, U extends Date>() {
        function g<T extends Number, U extends Number>() {
            var x: U;
            x.toFixed();
            ~
!!! error TS2454: Variable 'x' is used before being assigned.
        }
        var x: U;
        x.getDate();
        ~
!!! error TS2454: Variable 'x' is used before being assigned.
    }
    //function f2<T extends Date, U extends T>() {
    //    function g<T extends Number, U extends T>() {
    //        var x: U;
    //        x.toFixed();
    //    }
    //    var x: U;
    //    x.getDate();
    //}