==== tests/cases/compiler/genericClassesRedeclaration.ts (3 errors) ==== declare module TypeScript { interface IIndexable { [s: string]: T; } function createIntrinsicsObject(): IIndexable; interface IHashTable { getAllKeys(): string[]; add(key: string, data: T): boolean; addOrUpdate(key: string, data: T): boolean; map(fn: (k: string, value: T, context: any) => void, context: any): void; every(fn: (k: string, value: T, context: any) => void, context: any): boolean; some(fn: (k: string, value: T, context: any) => void, context: any): boolean; count(): number; lookup(key: string): T; } class StringHashTable implements IHashTable { private itemCount; private table; public getAllKeys(): string[]; public add(key: string, data: T): boolean; public addOrUpdate(key: string, data: T): boolean; public map(fn: (k: string, value: T, context: any) => void, context: any): void; public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; public some(fn: (k: string, value: T, context: any) => void, context: any): boolean; public count(): number; public lookup(key: string): T; public remove(key: string): void; } class IdentiferNameHashTable extends StringHashTable { public getAllKeys(): string[]; public add(key: string, data: T): boolean; public addOrUpdate(key: string, data: T): boolean; public map(fn: (k: string, value: T, context: any) => void, context: any): void; public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; public some(fn: (k: string, value: any, context: any) => void, context: any): boolean; public lookup(key: string): T; } } declare module TypeScript { interface IIndexable { [s: string]: T; ~~~~~~~~~~~~~~~ !!! Duplicate string index signature. } function createIntrinsicsObject(): IIndexable; interface IHashTable { getAllKeys(): string[]; add(key: string, data: T): boolean; addOrUpdate(key: string, data: T): boolean; map(fn: (k: string, value: T, context: any) => void, context: any): void; every(fn: (k: string, value: T, context: any) => void, context: any): boolean; some(fn: (k: string, value: T, context: any) => void, context: any): boolean; count(): number; lookup(key: string): T; } class StringHashTable implements IHashTable { ~~~~~~~~~~~~~~~ !!! Duplicate identifier 'StringHashTable'. private itemCount; private table; public getAllKeys(): string[]; public add(key: string, data: T): boolean; public addOrUpdate(key: string, data: T): boolean; public map(fn: (k: string, value: T, context: any) => void, context: any): void; public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; public some(fn: (k: string, value: T, context: any) => void, context: any): boolean; public count(): number; public lookup(key: string): T; public remove(key: string): void; } class IdentiferNameHashTable extends StringHashTable { ~~~~~~~~~~~~~~~~~~~~~~ !!! Duplicate identifier 'IdentiferNameHashTable'. public getAllKeys(): string[]; public add(key: string, data: T): boolean; public addOrUpdate(key: string, data: T): boolean; public map(fn: (k: string, value: T, context: any) => void, context: any): void; public every(fn: (k: string, value: T, context: any) => void, context: any): boolean; public some(fn: (k: string, value: any, context: any) => void, context: any): boolean; public lookup(key: string): T; } }