=== tests/cases/compiler/contextualTypeAppliedToVarArgs.ts === function delegate(instance: any, method: (...args: any[]) => any, data?: any): (...args: any[]) => any { >delegate : Symbol(delegate, Decl(contextualTypeAppliedToVarArgs.ts, 0, 0)) >instance : Symbol(instance, Decl(contextualTypeAppliedToVarArgs.ts, 0, 18)) >method : Symbol(method, Decl(contextualTypeAppliedToVarArgs.ts, 0, 32)) >args : Symbol(args, Decl(contextualTypeAppliedToVarArgs.ts, 0, 42)) >data : Symbol(data, Decl(contextualTypeAppliedToVarArgs.ts, 0, 65)) >args : Symbol(args, Decl(contextualTypeAppliedToVarArgs.ts, 0, 80)) return function () { }; } class Foo{ >Foo : Symbol(Foo, Decl(contextualTypeAppliedToVarArgs.ts, 2, 1)) Bar() { >Bar : Symbol(Bar, Decl(contextualTypeAppliedToVarArgs.ts, 4, 10)) delegate(this, function (source, args2) >delegate : Symbol(delegate, Decl(contextualTypeAppliedToVarArgs.ts, 0, 0)) >this : Symbol(Foo, Decl(contextualTypeAppliedToVarArgs.ts, 2, 1)) >source : Symbol(source, Decl(contextualTypeAppliedToVarArgs.ts, 8, 33)) >args2 : Symbol(args2, Decl(contextualTypeAppliedToVarArgs.ts, 8, 40)) { var a = source.node; >a : Symbol(a, Decl(contextualTypeAppliedToVarArgs.ts, 10, 15)) >source : Symbol(source, Decl(contextualTypeAppliedToVarArgs.ts, 8, 33)) var b = args2.node; >b : Symbol(b, Decl(contextualTypeAppliedToVarArgs.ts, 11, 15)) >args2 : Symbol(args2, Decl(contextualTypeAppliedToVarArgs.ts, 8, 40)) } ); } }