=== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterAsTypeArgument.ts === // These are all errors because type parameters cannot reference other type parameters from the same list function foo(x: T, y: U) { >foo : Symbol(foo, Decl(typeParameterAsTypeArgument.ts, 0, 0)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 2, 13)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 2, 15)) >x : Symbol(x, Decl(typeParameterAsTypeArgument.ts, 2, 19)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 2, 13)) >y : Symbol(y, Decl(typeParameterAsTypeArgument.ts, 2, 24)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 2, 15)) foo(y, y); >foo : Symbol(foo, Decl(typeParameterAsTypeArgument.ts, 0, 0)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 2, 15)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 2, 15)) >y : Symbol(y, Decl(typeParameterAsTypeArgument.ts, 2, 24)) >y : Symbol(y, Decl(typeParameterAsTypeArgument.ts, 2, 24)) return new C(); >C : Symbol(C, Decl(typeParameterAsTypeArgument.ts, 5, 1)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 2, 15)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 2, 13)) } class C { >C : Symbol(C, Decl(typeParameterAsTypeArgument.ts, 5, 1)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 7, 8)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 7, 10)) x: T; >x : Symbol(x, Decl(typeParameterAsTypeArgument.ts, 7, 15)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 7, 8)) } interface I { >I : Symbol(I, Decl(typeParameterAsTypeArgument.ts, 9, 1)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 11, 12)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 11, 14)) x: C; >x : Symbol(x, Decl(typeParameterAsTypeArgument.ts, 11, 19)) >C : Symbol(C, Decl(typeParameterAsTypeArgument.ts, 5, 1)) >U : Symbol(U, Decl(typeParameterAsTypeArgument.ts, 11, 14)) >T : Symbol(T, Decl(typeParameterAsTypeArgument.ts, 11, 12)) } //function foo(x: T, y: U) { // foo(y, y); // return new C(); //} //class C { // x: T; //} //interface I { // x: C; //}