=== tests/cases/compiler/missingTypeArguments3.ts === declare module linq { >linq : any interface Enumerable { >Enumerable : Enumerable >T : T OrderByDescending(keySelector?: string): OrderedEnumerable; >OrderByDescending : (keySelector?: string) => OrderedEnumerable >keySelector : string >OrderedEnumerable : OrderedEnumerable >T : T GroupBy(keySelector: (element: T) => TKey): Enumerable>; >GroupBy : { (keySelector: (element: T) => TKey): Enumerable>; (keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): Enumerable>; } >TKey : TKey >keySelector : (element: T) => TKey >element : T >T : T >TKey : TKey >Enumerable : Enumerable >Grouping : Grouping >TKey : TKey >T : T GroupBy(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): Enumerable>; >GroupBy : { (keySelector: (element: T) => TKey): Enumerable>; (keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): Enumerable>; } >TKey : TKey >TElement : TElement >keySelector : (element: T) => TKey >element : T >T : T >TKey : TKey >elementSelector : (element: T) => TElement >element : T >T : T >TElement : TElement >Enumerable : Enumerable >Grouping : Grouping >TKey : TKey >TElement : TElement ToDictionary(keySelector: (element: T) => TKey): Dictionary; >ToDictionary : (keySelector: (element: T) => TKey) => Dictionary >TKey : TKey >keySelector : (element: T) => TKey >element : T >T : T >TKey : TKey >Dictionary : Dictionary >TKey : TKey >T : T } interface OrderedEnumerable extends Enumerable { >OrderedEnumerable : OrderedEnumerable >T : T >Enumerable : Enumerable >T : T ThenBy(keySelector: (element: T) => TCompare): OrderedEnumerable; // used to incorrectly think this was missing a type argument >ThenBy : (keySelector: (element: T) => TCompare) => OrderedEnumerable >TCompare : TCompare >keySelector : (element: T) => TCompare >element : T >T : T >TCompare : TCompare >OrderedEnumerable : OrderedEnumerable >T : T } interface Grouping extends Enumerable { >Grouping : Grouping >TKey : TKey >TElement : TElement >Enumerable : Enumerable >TElement : TElement Key(): TKey; >Key : () => TKey >TKey : TKey } interface Lookup { >Lookup : Lookup >TKey : TKey >TElement : TElement Count(): number; >Count : () => number Get(key): Enumerable; >Get : (key: any) => Enumerable >key : any >Enumerable : Enumerable Contains(key): boolean; >Contains : (key: any) => boolean >key : any ToEnumerable(): Enumerable>; >ToEnumerable : () => Enumerable> >Enumerable : Enumerable >Grouping : Grouping >TKey : TKey } interface Dictionary { >Dictionary : Dictionary >TKey : TKey >TValue : TValue Add(key: TKey, value: TValue): void; >Add : (key: TKey, value: TValue) => void >key : TKey >TKey : TKey >value : TValue >TValue : TValue Get(ke: TKey): TValue; >Get : (ke: TKey) => TValue >ke : TKey >TKey : TKey >TValue : TValue Set(key: TKey, value: TValue): boolean; >Set : (key: TKey, value: TValue) => boolean >key : TKey >TKey : TKey >value : TValue >TValue : TValue Contains(key: TKey): boolean; >Contains : (key: TKey) => boolean >key : TKey >TKey : TKey Clear(): void; >Clear : () => void Remove(key: TKey): void; >Remove : (key: TKey) => void >key : TKey >TKey : TKey Count(): number; >Count : () => number ToEnumerable(): Enumerable>; >ToEnumerable : () => Enumerable> >Enumerable : Enumerable >KeyValuePair : KeyValuePair >TKey : TKey >TValue : TValue } interface KeyValuePair { >KeyValuePair : KeyValuePair >TKey : TKey >TValue : TValue Key: TKey; >Key : TKey >TKey : TKey Value: TValue; >Value : TValue >TValue : TValue } }