=== tests/cases/conformance/expressions/contextualTyping/taggedTemplateContextualTyping1.ts === type FuncType = (x: (p: T) => T) => typeof x; >FuncType : (x: (p: T) => T) => (p: T) => T, Symbol(FuncType, Decl(taggedTemplateContextualTyping1.ts, 0, 0)) >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 1, 17)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 1, 21)) >p : T, Symbol(p, Decl(taggedTemplateContextualTyping1.ts, 1, 24)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 1, 21)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 1, 21)) >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 1, 17)) function tempTag1(templateStrs: TemplateStringsArray, f: FuncType, x: T): T; >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; }, Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 3, 18)) >templateStrs : TemplateStringsArray, Symbol(templateStrs, Decl(taggedTemplateContextualTyping1.ts, 3, 21)) >TemplateStringsArray : TemplateStringsArray, Symbol(TemplateStringsArray, Decl(lib.d.ts, 518, 38)) >f : (x: (p: T) => T) => (p: T) => T, Symbol(f, Decl(taggedTemplateContextualTyping1.ts, 3, 56)) >FuncType : (x: (p: T) => T) => (p: T) => T, Symbol(FuncType, Decl(taggedTemplateContextualTyping1.ts, 0, 0)) >x : T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 3, 69)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 3, 18)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 3, 18)) function tempTag1(templateStrs: TemplateStringsArray, f: FuncType, h: FuncType, x: T): T; >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; }, Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 4, 18)) >templateStrs : TemplateStringsArray, Symbol(templateStrs, Decl(taggedTemplateContextualTyping1.ts, 4, 21)) >TemplateStringsArray : TemplateStringsArray, Symbol(TemplateStringsArray, Decl(lib.d.ts, 518, 38)) >f : (x: (p: T) => T) => (p: T) => T, Symbol(f, Decl(taggedTemplateContextualTyping1.ts, 4, 56)) >FuncType : (x: (p: T) => T) => (p: T) => T, Symbol(FuncType, Decl(taggedTemplateContextualTyping1.ts, 0, 0)) >h : (x: (p: T) => T) => (p: T) => T, Symbol(h, Decl(taggedTemplateContextualTyping1.ts, 4, 69)) >FuncType : (x: (p: T) => T) => (p: T) => T, Symbol(FuncType, Decl(taggedTemplateContextualTyping1.ts, 0, 0)) >x : T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 4, 82)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 4, 18)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 4, 18)) function tempTag1(...rest: any[]): T { >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; }, Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 5, 18)) >rest : any[], Symbol(rest, Decl(taggedTemplateContextualTyping1.ts, 5, 21)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 5, 18)) return undefined; >undefined : undefined, Symbol(undefined) } // If contextual typing takes place, these functions should work. // Otherwise, the arrow functions' parameters will be typed as 'any', // and it is an error to invoke an any-typed value with type arguments, // so this test will error. tempTag1 `${ x => { x(undefined); return x; } }${ 10 }`; >tempTag1 `${ x => { x(undefined); return x; } }${ 10 }` : number >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; }, Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >`${ x => { x(undefined); return x; } }${ 10 }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 13, 12)) >x(undefined) : number >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 13, 12)) >undefined : undefined, Symbol(undefined) >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 13, 12)) >10 : number tempTag1 `${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }`; >tempTag1 `${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }` : number >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; }, Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >`${ x => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ 10 }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 14, 12)) >x(undefined) : number >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 14, 12)) >undefined : undefined, Symbol(undefined) >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 14, 12)) >y => { y(undefined); return y; } : (y: (p: T) => T) => (p: T) => T >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 14, 75)) >y(undefined) : number >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 14, 75)) >undefined : undefined, Symbol(undefined) >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 14, 75)) >10 : number tempTag1 `${ x => { x(undefined); return x; } }${ (y: (p: T) => T) => { y(undefined); return y } }${ undefined }`; >tempTag1 `${ x => { x(undefined); return x; } }${ (y: (p: T) => T) => { y(undefined); return y } }${ undefined }` : any >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; }, Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >`${ x => { x(undefined); return x; } }${ (y: (p: T) => T) => { y(undefined); return y } }${ undefined }` : string >x => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 15, 12)) >x(undefined) : number >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 15, 12)) >undefined : undefined, Symbol(undefined) >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 15, 12)) >(y: (p: T) => T) => { y(undefined); return y } : (y: (p: T) => T) => (p: T) => T >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 15, 77)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 15, 81)) >p : T, Symbol(p, Decl(taggedTemplateContextualTyping1.ts, 15, 84)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 15, 81)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 15, 81)) >y(undefined) : number >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 15, 77)) >undefined : undefined, Symbol(undefined) >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 15, 77)) >undefined : undefined, Symbol(undefined) tempTag1 `${ (x: (p: T) => T) => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ undefined }`; >tempTag1 `${ (x: (p: T) => T) => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ undefined }` : any >tempTag1 : { (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, x: T): T; (templateStrs: TemplateStringsArray, f: (x: (p: T) => T) => (p: T) => T, h: (x: (p: T) => T) => (p: T) => T, x: T): T; }, Symbol(tempTag1, Decl(taggedTemplateContextualTyping1.ts, 1, 48), Decl(taggedTemplateContextualTyping1.ts, 3, 79), Decl(taggedTemplateContextualTyping1.ts, 4, 92)) >`${ (x: (p: T) => T) => { x(undefined); return x; } }${ y => { y(undefined); return y; } }${ undefined }` : string >(x: (p: T) => T) => { x(undefined); return x; } : (x: (p: T) => T) => (p: T) => T >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 16, 14)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 16, 18)) >p : T, Symbol(p, Decl(taggedTemplateContextualTyping1.ts, 16, 21)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 16, 18)) >T : T, Symbol(T, Decl(taggedTemplateContextualTyping1.ts, 16, 18)) >x(undefined) : number >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 16, 14)) >undefined : undefined, Symbol(undefined) >x : (p: T) => T, Symbol(x, Decl(taggedTemplateContextualTyping1.ts, 16, 14)) >y => { y(undefined); return y; } : (y: (p: T) => T) => (p: T) => T >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 16, 75)) >y(undefined) : number >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 16, 75)) >undefined : undefined, Symbol(undefined) >y : (p: T) => T, Symbol(y, Decl(taggedTemplateContextualTyping1.ts, 16, 75)) >undefined : undefined, Symbol(undefined)