==== tests/cases/compiler/typeAssertions.ts (5 errors) ====
    // Function call whose argument is a 1 arg generic function call with explicit type arguments
    function fn1<T>(t: T) { }
    function fn2(t: any) { }
    
    fn1(fn2<string>(4)); // Error
        ~~~~~~~~~~~~~~
!!! typeAssertions.ts(5,5): error TS2087: Could not select overload for 'call' expression.
    
    var a: any;
    var s: string;
    
    // Type assertion of non - unary expression
    var a = <any>"" + 4;
    var s = "" + <any>4;
    
    class SomeBase {
        private p;
    }
    class SomeDerived extends SomeBase {
        private x;
    }
    class SomeOther {
        private q;
    }
    
    // Type assertion should check for assignability in either direction
    var someBase = new SomeBase();
    var someDerived = new SomeDerived();
    var someOther = new SomeOther();
    
    someBase = <SomeBase>someDerived;
    someBase = <SomeBase>someBase;
    someBase = <SomeBase>someOther; // Error
               ~~~~~~~~~~~~~~~~~~~
!!! typeAssertions.ts(31,12): error TS2012: Cannot convert 'SomeOther' to 'SomeBase':
!!! 	Type 'SomeOther' is missing property 'p' from type 'SomeBase'.
!!! 	Type 'SomeBase' is missing property 'q' from type 'SomeOther'.
    
    someDerived = <SomeDerived>someDerived;
    someDerived = <SomeDerived>someBase;
    someDerived = <SomeDerived>someOther; // Error
                  ~~~~~~~~~~~~~~~~~~~~~~
!!! typeAssertions.ts(35,15): error TS2012: Cannot convert 'SomeOther' to 'SomeDerived':
!!! 	Type 'SomeOther' is missing property 'x' from type 'SomeDerived'.
!!! 	Type 'SomeDerived' is missing property 'q' from type 'SomeOther'.
    
    someOther = <SomeOther>someDerived; // Error
                ~~~~~~~~~~~~~~~~~~~~~~
!!! typeAssertions.ts(37,13): error TS2012: Cannot convert 'SomeDerived' to 'SomeOther':
!!! 	Type 'SomeDerived' is missing property 'q' from type 'SomeOther'.
!!! 	Type 'SomeOther' is missing property 'x' from type 'SomeDerived'.
    someOther = <SomeOther>someBase; // Error
                ~~~~~~~~~~~~~~~~~~~
!!! typeAssertions.ts(38,13): error TS2012: Cannot convert 'SomeBase' to 'SomeOther':
!!! 	Type 'SomeBase' is missing property 'q' from type 'SomeOther'.
!!! 	Type 'SomeOther' is missing property 'p' from type 'SomeBase'.
    someOther = <SomeOther>someOther;
    
    
    