==== tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts (1 errors) ==== class List { data: T; next: List>; } class MyList { data: T; next: MyList>; } function foo(x: List); function foo(x: List); // error, duplicate function foo(x: List) { } function foo2(x: List); function foo2(x: MyList); // ok, nominally compared with first overload function foo2(x: any) { } function other, U>() { ~~~~~~~~~~~~~~~~~ !!! Constraint of a type parameter cannot reference any type parameter from the same type parameter list. // error but wrong error // BUG 838247 function foo3(x: T); function foo3(x: MyList) { } // should be error // BUG 838247 function foo4(x: T); function foo4(x: List) { } // ok function foo5(x: T): string; function foo5(x: List): number; function foo5(x: MyList): boolean; function foo5(x: any): any { return null; } var list: List; var myList: MyList; var r = foo5(list); var r2 = foo5(myList); }