=== tests/cases/compiler/functionOverloadsRecursiveGenericReturnType.ts === class B{ >B : Symbol(B, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 0)) >V : Symbol(V, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 8)) private id: V; >id : Symbol(id, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 11)) >V : Symbol(V, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 8)) } class A{ >A : Symbol(A, Decl(functionOverloadsRecursiveGenericReturnType.ts, 2, 1)) >U : Symbol(U, Decl(functionOverloadsRecursiveGenericReturnType.ts, 4, 8)) GetEnumerator: () => B; >GetEnumerator : Symbol(GetEnumerator, Decl(functionOverloadsRecursiveGenericReturnType.ts, 4, 11)) >B : Symbol(B, Decl(functionOverloadsRecursiveGenericReturnType.ts, 0, 0)) >U : Symbol(U, Decl(functionOverloadsRecursiveGenericReturnType.ts, 4, 8)) } function Choice(args: T[]): A; >Choice : Symbol(Choice, Decl(functionOverloadsRecursiveGenericReturnType.ts, 6, 1), Decl(functionOverloadsRecursiveGenericReturnType.ts, 8, 36), Decl(functionOverloadsRecursiveGenericReturnType.ts, 9, 41)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 8, 16)) >args : Symbol(args, Decl(functionOverloadsRecursiveGenericReturnType.ts, 8, 19)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 8, 16)) >A : Symbol(A, Decl(functionOverloadsRecursiveGenericReturnType.ts, 2, 1)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 8, 16)) function Choice(...v_args: T[]): A; >Choice : Symbol(Choice, Decl(functionOverloadsRecursiveGenericReturnType.ts, 6, 1), Decl(functionOverloadsRecursiveGenericReturnType.ts, 8, 36), Decl(functionOverloadsRecursiveGenericReturnType.ts, 9, 41)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 9, 16)) >v_args : Symbol(v_args, Decl(functionOverloadsRecursiveGenericReturnType.ts, 9, 19)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 9, 16)) >A : Symbol(A, Decl(functionOverloadsRecursiveGenericReturnType.ts, 2, 1)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 9, 16)) function Choice(...v_args: any[]): A{ >Choice : Symbol(Choice, Decl(functionOverloadsRecursiveGenericReturnType.ts, 6, 1), Decl(functionOverloadsRecursiveGenericReturnType.ts, 8, 36), Decl(functionOverloadsRecursiveGenericReturnType.ts, 9, 41)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 10, 16)) >v_args : Symbol(v_args, Decl(functionOverloadsRecursiveGenericReturnType.ts, 10, 19)) >A : Symbol(A, Decl(functionOverloadsRecursiveGenericReturnType.ts, 2, 1)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 10, 16)) return new A(); >A : Symbol(A, Decl(functionOverloadsRecursiveGenericReturnType.ts, 2, 1)) >T : Symbol(T, Decl(functionOverloadsRecursiveGenericReturnType.ts, 10, 16)) }