=== tests/cases/compiler/genericCallbacksAndClassHierarchy.ts === module M { >M : typeof M, Symbol(M, Decl(genericCallbacksAndClassHierarchy.ts, 0, 0)) export interface I { >I : I, Symbol(I, Decl(genericCallbacksAndClassHierarchy.ts, 0, 10)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 1, 23)) subscribe(callback: (newValue: T) => void ): any; >subscribe : (callback: (newValue: T) => void) => any, Symbol(subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 1, 27)) >callback : (newValue: T) => void, Symbol(callback, Decl(genericCallbacksAndClassHierarchy.ts, 2, 18)) >newValue : T, Symbol(newValue, Decl(genericCallbacksAndClassHierarchy.ts, 2, 29)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 1, 23)) } export class C1 { >C1 : C1, Symbol(C1, Decl(genericCallbacksAndClassHierarchy.ts, 3, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 4, 20)) public value: I; >value : I, Symbol(value, Decl(genericCallbacksAndClassHierarchy.ts, 4, 24)) >I : I, Symbol(I, Decl(genericCallbacksAndClassHierarchy.ts, 0, 10)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 4, 20)) } export class A { >A : A, Symbol(A, Decl(genericCallbacksAndClassHierarchy.ts, 6, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 7, 19)) public dummy: any; >dummy : any, Symbol(dummy, Decl(genericCallbacksAndClassHierarchy.ts, 7, 23)) } export class B extends C1> { } >B : B, Symbol(B, Decl(genericCallbacksAndClassHierarchy.ts, 9, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 10, 19)) >C1 : C1, Symbol(C1, Decl(genericCallbacksAndClassHierarchy.ts, 3, 5)) >A : A, Symbol(A, Decl(genericCallbacksAndClassHierarchy.ts, 6, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 10, 19)) export class D { >D : D, Symbol(D, Decl(genericCallbacksAndClassHierarchy.ts, 10, 42)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 11, 19)) _subscribe(viewModel: B): void { >_subscribe : (viewModel: B) => void, Symbol(_subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 11, 23)) >viewModel : B, Symbol(viewModel, Decl(genericCallbacksAndClassHierarchy.ts, 12, 19)) >B : B, Symbol(B, Decl(genericCallbacksAndClassHierarchy.ts, 9, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 11, 19)) var f = (newValue: A) => { }; >f : (newValue: A) => void, Symbol(f, Decl(genericCallbacksAndClassHierarchy.ts, 13, 15)) >(newValue: A) => { } : (newValue: A) => void >newValue : A, Symbol(newValue, Decl(genericCallbacksAndClassHierarchy.ts, 13, 21)) >A : A, Symbol(A, Decl(genericCallbacksAndClassHierarchy.ts, 6, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 11, 19)) var v: I> = viewModel.value; >v : I>, Symbol(v, Decl(genericCallbacksAndClassHierarchy.ts, 15, 15)) >I : I, Symbol(I, Decl(genericCallbacksAndClassHierarchy.ts, 0, 10)) >A : A, Symbol(A, Decl(genericCallbacksAndClassHierarchy.ts, 6, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 11, 19)) >viewModel.value : I>, Symbol(C1.value, Decl(genericCallbacksAndClassHierarchy.ts, 4, 24)) >viewModel : B, Symbol(viewModel, Decl(genericCallbacksAndClassHierarchy.ts, 12, 19)) >value : I>, Symbol(C1.value, Decl(genericCallbacksAndClassHierarchy.ts, 4, 24)) // both of these should work v.subscribe(f); >v.subscribe(f) : any >v.subscribe : (callback: (newValue: A) => void) => any, Symbol(I.subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 1, 27)) >v : I>, Symbol(v, Decl(genericCallbacksAndClassHierarchy.ts, 15, 15)) >subscribe : (callback: (newValue: A) => void) => any, Symbol(I.subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 1, 27)) >f : (newValue: A) => void, Symbol(f, Decl(genericCallbacksAndClassHierarchy.ts, 13, 15)) v.subscribe((newValue: A) => { }); >v.subscribe((newValue: A) => { }) : any >v.subscribe : (callback: (newValue: A) => void) => any, Symbol(I.subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 1, 27)) >v : I>, Symbol(v, Decl(genericCallbacksAndClassHierarchy.ts, 15, 15)) >subscribe : (callback: (newValue: A) => void) => any, Symbol(I.subscribe, Decl(genericCallbacksAndClassHierarchy.ts, 1, 27)) >(newValue: A) => { } : (newValue: A) => void >newValue : A, Symbol(newValue, Decl(genericCallbacksAndClassHierarchy.ts, 19, 25)) >A : A, Symbol(A, Decl(genericCallbacksAndClassHierarchy.ts, 6, 5)) >T : T, Symbol(T, Decl(genericCallbacksAndClassHierarchy.ts, 11, 19)) } } }