=== tests/cases/conformance/enums/enumMerging.ts === // Enum with only constant members across 2 declarations with the same root module // Enum with initializer in all declarations with constant members with the same root module module M1 { >M1 : typeof M1 enum EImpl1 { >EImpl1 : EImpl1 A, B, C >A : EImpl1 >B : EImpl1 >C : EImpl1 } enum EImpl1 { >EImpl1 : EImpl1 D = 1, E, F >D : EImpl1 >E : EImpl1 >F : EImpl1 } export enum EConst1 { >EConst1 : EConst1 A = 3, B = 2, C = 1 >A : EConst1 >B : EConst1 >C : EConst1 } export enum EConst1 { >EConst1 : EConst1 D = 7, E = 9, F = 8 >D : EConst1 >E : EConst1 >F : EConst1 } var x = [EConst1.A, EConst1.B, EConst1.C, EConst1.D, EConst1.E, EConst1.F]; >x : EConst1[] >[EConst1.A, EConst1.B, EConst1.C, EConst1.D, EConst1.E, EConst1.F] : EConst1[] >EConst1.A : EConst1 >EConst1 : typeof EConst1 >A : EConst1 >EConst1.B : EConst1 >EConst1 : typeof EConst1 >B : EConst1 >EConst1.C : EConst1 >EConst1 : typeof EConst1 >C : EConst1 >EConst1.D : EConst1 >EConst1 : typeof EConst1 >D : EConst1 >EConst1.E : EConst1 >EConst1 : typeof EConst1 >E : EConst1 >EConst1.F : EConst1 >EConst1 : typeof EConst1 >F : EConst1 } // Enum with only computed members across 2 declarations with the same root module module M2 { >M2 : typeof M2 export enum EComp2 { >EComp2 : EComp2 A = 'foo'.length, B = 'foo'.length, C = 'foo'.length >A : EComp2 >'foo'.length : number >length : number >B : EComp2 >'foo'.length : number >length : number >C : EComp2 >'foo'.length : number >length : number } export enum EComp2 { >EComp2 : EComp2 D = 'foo'.length, E = 'foo'.length, F = 'foo'.length >D : EComp2 >'foo'.length : number >length : number >E : EComp2 >'foo'.length : number >length : number >F : EComp2 >'foo'.length : number >length : number } var x = [EComp2.A, EComp2.B, EComp2.C, EComp2.D, EComp2.E, EComp2.F]; >x : EComp2[] >[EComp2.A, EComp2.B, EComp2.C, EComp2.D, EComp2.E, EComp2.F] : EComp2[] >EComp2.A : EComp2 >EComp2 : typeof EComp2 >A : EComp2 >EComp2.B : EComp2 >EComp2 : typeof EComp2 >B : EComp2 >EComp2.C : EComp2 >EComp2 : typeof EComp2 >C : EComp2 >EComp2.D : EComp2 >EComp2 : typeof EComp2 >D : EComp2 >EComp2.E : EComp2 >EComp2 : typeof EComp2 >E : EComp2 >EComp2.F : EComp2 >EComp2 : typeof EComp2 >F : EComp2 } // Enum with initializer in only one of two declarations with constant members with the same root module module M3 { >M3 : typeof M3 enum EInit { >EInit : EInit A, >A : EInit B >B : EInit } enum EInit { >EInit : EInit C = 1, D, E >C : EInit >D : EInit >E : EInit } } // Enums with same name but different root module module M4 { >M4 : typeof M4 export enum Color { Red, Green, Blue } >Color : Color >Red : Color >Green : Color >Blue : Color } module M5 { >M5 : typeof M5 export enum Color { Red, Green, Blue } >Color : Color >Red : Color >Green : Color >Blue : Color } module M6.A { >M6 : typeof M6 >A : typeof A export enum Color { Red, Green, Blue } >Color : Color >Red : Color >Green : Color >Blue : Color } module M6 { >M6 : typeof M6 export module A { >A : typeof A export enum Color { Yellow = 1 } >Color : Color >Yellow : Color } var t = A.Color.Yellow; >t : A.Color >A.Color.Yellow : A.Color >A.Color : typeof A.Color >A : typeof A >Color : typeof A.Color >Yellow : A.Color t = A.Color.Red; >t = A.Color.Red : A.Color >t : A.Color >A.Color.Red : A.Color >A.Color : typeof A.Color >A : typeof A >Color : typeof A.Color >Red : A.Color }