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