=== tests/cases/conformance/internalModules/codeGeneration/nameCollision.ts === module A { >A : typeof A // these 2 statements force an underscore before the 'A' // in the generated function call. var A = 12; >A : number >12 : number var _A = ''; >_A : string >'' : string } module B { >B : typeof B var A = 12; >A : number >12 : number } module B { >B : typeof B // re-opened module with colliding name // this should add an underscore. class B { >B : B name: string; >name : string } } module X { >X : typeof X var X = 13; >X : number >13 : number export module Y { >Y : typeof X.Y var Y = 13; >Y : number >13 : number export module Z { >Z : typeof X.Y.Z var X = 12; >X : number >12 : number var Y = 12; >Y : number >12 : number var Z = 12; >Z : number >12 : number } } } module Y.Y { >Y : typeof Y >Y : typeof Y.Y export enum Y { >Y : Y Red, Blue >Red : Y >Blue : Y } } // no collision, since interface doesn't // generate code. module D { >D : typeof D export interface D { >D : D id: number; >id : number } export var E = 'hello'; >E : string >'hello' : string }