tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(5,8): error TS2304: Cannot find name 'W'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(15,8): error TS2304: Cannot find name 'W'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(19,43): error TS2304: Cannot find name 'V'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(20,47): error TS2304: Cannot find name 'X'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(28,44): error TS2304: Cannot find name 'W'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(29,47): error TS2304: Cannot find name 'Y'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(38,47): error TS2304: Cannot find name 'X'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(38,53): error TS2304: Cannot find name 'Y'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(46,30): error TS2304: Cannot find name 'V'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(46,36): error TS2304: Cannot find name 'X'. ==== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts (10 errors) ==== // Type parameters are in scope in their own and other type parameter lists // Some negative cases class C { z: W; // error ~ !!! error TS2304: Cannot find name 'W'. foo(x: W): T { var r: T; return x; } } interface I { x: T; y: U; z: W; // error ~ !!! error TS2304: Cannot find name 'W'. foo(x: W): T; } function foo(x: T, y: U): V { // error ~ !!! error TS2304: Cannot find name 'V'. function bar(): X { // error ~ !!! error TS2304: Cannot find name 'X'. function baz(a: X, b: Y): T { x = y; return y; } } } function foo2(x: T, y: U): W { // error ~ !!! error TS2304: Cannot find name 'W'. function bar(): Y { // error ~ !!! error TS2304: Cannot find name 'Y'. function baz(a: X, b: Y): T { x = y; return y; } } } var f3 = (x: T, y: U) => { function bar(r: X, s: Y) { // error ~ !!! error TS2304: Cannot find name 'X'. ~ !!! error TS2304: Cannot find name 'Y'. var g = (a: X, b: Y): T => { x = y; return y; } } } var f4 = (x: V, y: X) => { // error ~ !!! error TS2304: Cannot find name 'V'. ~ !!! error TS2304: Cannot find name 'X'. function bar() { var g = (a: X, b: Y): T => { x = y; return y; } } }