==== tests/cases/compiler/typeParameterAssignmentCompat1.ts (4 errors) ====
    interface Foo<T> {
        frobble(value: T): T;
    }
    
    function f<T, U>(): Foo<U> {
        var x: Foo<T>;
        var y: Foo<U>;
        x = y; // should be an error
        ~
!!! typeParameterAssignmentCompat1.ts(8,5): error TS2012: Cannot convert 'Foo<U>' to 'Foo<T>':
!!! 	Types of property 'frobble' of types 'Foo<U>' and 'Foo<T>' are incompatible:
!!! 		Call signatures of types '(value: U) => U' and '(value: T) => T' are incompatible.
        return x;
               ~
!!! typeParameterAssignmentCompat1.ts(9,12): error TS2012: Cannot convert 'Foo<T>' to 'Foo<U>':
!!! 	Types of property 'frobble' of types 'Foo<T>' and 'Foo<U>' are incompatible:
!!! 		Call signatures of types '(value: T) => T' and '(value: U) => U' are incompatible.
    }
    
    class C<T> {
        f<U>(): Foo<U> {
            var x: Foo<T>;
            var y: Foo<U>;
            x = y; // should be an error
            ~
!!! typeParameterAssignmentCompat1.ts(16,9): error TS2012: Cannot convert 'Foo<U>' to 'Foo<T>':
!!! 	Types of property 'frobble' of types 'Foo<U>' and 'Foo<T>' are incompatible:
!!! 		Call signatures of types '(value: U) => U' and '(value: T) => T' are incompatible.
            return x;
                   ~
!!! typeParameterAssignmentCompat1.ts(17,16): error TS2012: Cannot convert 'Foo<T>' to 'Foo<U>':
!!! 	Types of property 'frobble' of types 'Foo<T>' and 'Foo<U>' are incompatible:
!!! 		Call signatures of types '(value: T) => T' and '(value: U) => U' are incompatible.
        }
    }