=== tests/cases/conformance/types/typeParameters/typeArgumentLists/wrappedAndRecursiveConstraints.ts === // no errors expected class C { >C : C, Symbol(C, Decl(wrappedAndRecursiveConstraints.ts, 0, 0)) >T : T, Symbol(T, Decl(wrappedAndRecursiveConstraints.ts, 2, 8)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) constructor(public data: T) { } >data : T, Symbol(data, Decl(wrappedAndRecursiveConstraints.ts, 3, 16)) >T : T, Symbol(T, Decl(wrappedAndRecursiveConstraints.ts, 2, 8)) foo(x: U) { >foo : (x: U) => U, Symbol(foo, Decl(wrappedAndRecursiveConstraints.ts, 3, 35)) >U : U, Symbol(U, Decl(wrappedAndRecursiveConstraints.ts, 4, 8)) >T : T, Symbol(T, Decl(wrappedAndRecursiveConstraints.ts, 2, 8)) >x : U, Symbol(x, Decl(wrappedAndRecursiveConstraints.ts, 4, 21)) >U : U, Symbol(U, Decl(wrappedAndRecursiveConstraints.ts, 4, 8)) return x; >x : U, Symbol(x, Decl(wrappedAndRecursiveConstraints.ts, 4, 21)) } } interface Foo extends Date { >Foo : Foo, Symbol(Foo, Decl(wrappedAndRecursiveConstraints.ts, 7, 1)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) foo: string; >foo : string, Symbol(foo, Decl(wrappedAndRecursiveConstraints.ts, 9, 28)) } var y: Foo = null; >y : Foo, Symbol(y, Decl(wrappedAndRecursiveConstraints.ts, 13, 3)) >Foo : Foo, Symbol(Foo, Decl(wrappedAndRecursiveConstraints.ts, 7, 1)) >null : null var c = new C(y); >c : C, Symbol(c, Decl(wrappedAndRecursiveConstraints.ts, 14, 3)) >new C(y) : C >C : typeof C, Symbol(C, Decl(wrappedAndRecursiveConstraints.ts, 0, 0)) >y : Foo, Symbol(y, Decl(wrappedAndRecursiveConstraints.ts, 13, 3)) var r = c.foo(y); >r : Foo, Symbol(r, Decl(wrappedAndRecursiveConstraints.ts, 15, 3)) >c.foo(y) : Foo >c.foo : (x: U) => U, Symbol(C.foo, Decl(wrappedAndRecursiveConstraints.ts, 3, 35)) >c : C, Symbol(c, Decl(wrappedAndRecursiveConstraints.ts, 14, 3)) >foo : (x: U) => U, Symbol(C.foo, Decl(wrappedAndRecursiveConstraints.ts, 3, 35)) >y : Foo, Symbol(y, Decl(wrappedAndRecursiveConstraints.ts, 13, 3))