TypeScript/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.types
2015-12-01 15:52:32 -08:00

127 lines
1.9 KiB
Plaintext

=== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts ===
// Type parameters are in scope in their own and other type parameter lists
function foo<T, U extends T>(x: T, y: U): T {
>foo : <T, U extends T>(x: T, y: U) => T
>T : T
>U : U
>T : T
>x : T
>T : T
>y : U
>U : U
>T : T
x = y;
>x = y : U
>x : T
>y : U
return y;
>y : U
}
function foo2<U extends T, T>(x: T, y: U): T {
>foo2 : <U extends T, T>(x: T, y: U) => T
>U : U
>T : T
>T : T
>x : T
>T : T
>y : U
>U : U
>T : T
x = y;
>x = y : U
>x : T
>y : U
return y;
>y : U
}
var f = function <T, U extends T>(x: T, y: U): T {
>f : <T, U extends T>(x: T, y: U) => T
>function <T, U extends T>(x: T, y: U): T { x = y; return y;} : <T, U extends T>(x: T, y: U) => T
>T : T
>U : U
>T : T
>x : T
>T : T
>y : U
>U : U
>T : T
x = y;
>x = y : U
>x : T
>y : U
return y;
>y : U
}
var f2 = function <U extends T, T>(x: T, y: U): T {
>f2 : <U extends T, T>(x: T, y: U) => T
>function <U extends T, T>(x: T, y: U): T { x = y; return y;} : <U extends T, T>(x: T, y: U) => T
>U : U
>T : T
>T : T
>x : T
>T : T
>y : U
>U : U
>T : T
x = y;
>x = y : U
>x : T
>y : U
return y;
>y : U
}
var f3 = <T, U extends T>(x: T, y: U): T => {
>f3 : <T, U extends T>(x: T, y: U) => T
><T, U extends T>(x: T, y: U): T => { x = y; return y;} : <T, U extends T>(x: T, y: U) => T
>T : T
>U : U
>T : T
>x : T
>T : T
>y : U
>U : U
>T : T
x = y;
>x = y : U
>x : T
>y : U
return y;
>y : U
}
var f4 = <U extends T, T>(x: T, y: U): T => {
>f4 : <U extends T, T>(x: T, y: U) => T
><U extends T, T>(x: T, y: U): T => { x = y; return y;} : <U extends T, T>(x: T, y: U) => T
>U : U
>T : T
>T : T
>x : T
>T : T
>y : U
>U : U
>T : T
x = y;
>x = y : U
>x : T
>y : U
return y;
>y : U
}