Compiler projects using llvm
; Test that the native PDB reader can enumerate the enum types.  The output
; being checked against is golden output generated by llvm-pdbutil without
; the -native flag.  Then we check that we generate the same output.
; Unfortunately since we generate a slightly different (albeit correct)
; class / parent hierarchy, if you re-generate this file you will need to
; actually use the output from llvm-pdbutil *with* the -native flag, but
; before "blessing" it, manually diff against the golden output from
; llvm-pdbutil without the -native flag and verifying that there are no
; substantive differences aside from the various symbol ids.

; RUN: llvm-pdbutil pretty -native -enums %p/../Inputs/every-enum.pdb \
; RUN:   | FileCheck -check-prefix=ENUMS %s
; RUN: llvm-pdbutil diadump -hierarchy -native -enums %p/../Inputs/every-enum.pdb \
; RUN:   | FileCheck -check-prefix=DUMP %s


ENUMS: enum I8 : char {
ENUMS:   I8A = -128
ENUMS:   I8B = 0
ENUMS:   I8C = 127
ENUMS: }
ENUMS: enum I16 : short {
ENUMS:   I16A = -32768
ENUMS:   I16B = 0
ENUMS:   I16C = 32767
ENUMS: }
ENUMS: enum I32 {
ENUMS:   I32A = -2147483648
ENUMS:   I32B = 0
ENUMS:   I32C = 2147483647
ENUMS: }
ENUMS: enum I64 : __int64 {
ENUMS:   I64A = -9223372036854775808
ENUMS:   I64B = 0
ENUMS:   I64C = 9223372036854775807
ENUMS: }
ENUMS: enum U8 : unsigned char {
ENUMS:   U8A = 0
ENUMS:   U8B = 255
ENUMS: }
ENUMS: enum U16 : unsigned short {
ENUMS:   U16A = 0
ENUMS:   U16B = 65535
ENUMS: }
ENUMS: enum U32 : unsigned int {
ENUMS:   U32A = 0
ENUMS:   U32B = 4294967295
ENUMS: }
ENUMS: enum U64 : unsigned __int64 {
ENUMS:   U64A = 0
; FIXME: This should be UINT64_MAX.  Is the compiler encoding it wrong or
; are we decoding it wrong?
ENUMS:   U64B = 255
ENUMS: }
ENUMS: enum Char16 : unsigned short {
ENUMS:   C16A = 97
ENUMS:   C16B = 98
ENUMS: }
ENUMS: enum Char32 : unsigned int {
ENUMS:   C32A = 97
ENUMS:   C32B = 98
ENUMS: }
ENUMS: enum WChar : unsigned short {
ENUMS:   WCA = 97
ENUMS:   WCB = 98
ENUMS: }
ENUMS: enum Bool : bool {
ENUMS:   BA = true
ENUMS:   BB = false
ENUMS: }
ENUMS: enum EC {
ENUMS:   A = 1
ENUMS:   B = 2
ENUMS: }
ENUMS: enum Struct::Nested {
ENUMS:   A = 1
ENUMS:   B = 2
ENUMS: }
ENUMS: const volatile enum EC


DUMP: {
DUMP:   symIndexId: 2
DUMP:   symTag: Enum
DUMP:   baseType: 2
DUMP:   lexicalParentId: 0
DUMP:   name: I8
DUMP:   typeId: 3
DUMP:   length: 1
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 4
DUMP:     symTag: Data
DUMP:     classParentId: 2
DUMP:     lexicalParentId: 0
DUMP:     name: I8A
DUMP:     typeId: 3
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: -128
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 5
DUMP:     symTag: Data
DUMP:     classParentId: 2
DUMP:     lexicalParentId: 0
DUMP:     name: I8B
DUMP:     typeId: 3
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 6
DUMP:     symTag: Data
DUMP:     classParentId: 2
DUMP:     lexicalParentId: 0
DUMP:     name: I8C
DUMP:     typeId: 3
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 127
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 7
DUMP:   symTag: Enum
DUMP:   baseType: 6
DUMP:   lexicalParentId: 0
DUMP:   name: I16
DUMP:   typeId: 8
DUMP:   length: 2
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 9
DUMP:     symTag: Data
DUMP:     classParentId: 7
DUMP:     lexicalParentId: 0
DUMP:     name: I16A
DUMP:     typeId: 8
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: -32768
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 10
DUMP:     symTag: Data
DUMP:     classParentId: 7
DUMP:     lexicalParentId: 0
DUMP:     name: I16B
DUMP:     typeId: 8
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 11
DUMP:     symTag: Data
DUMP:     classParentId: 7
DUMP:     lexicalParentId: 0
DUMP:     name: I16C
DUMP:     typeId: 8
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 32767
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 12
DUMP:   symTag: Enum
DUMP:   baseType: 6
DUMP:   lexicalParentId: 0
DUMP:   name: I32
DUMP:   typeId: 13
DUMP:   length: 4
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 14
DUMP:     symTag: Data
DUMP:     classParentId: 12
DUMP:     lexicalParentId: 0
DUMP:     name: I32A
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: -2147483648
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 15
DUMP:     symTag: Data
DUMP:     classParentId: 12
DUMP:     lexicalParentId: 0
DUMP:     name: I32B
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 16
DUMP:     symTag: Data
DUMP:     classParentId: 12
DUMP:     lexicalParentId: 0
DUMP:     name: I32C
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 2147483647
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 17
DUMP:   symTag: Enum
DUMP:   baseType: 6
DUMP:   lexicalParentId: 0
DUMP:   name: I64
DUMP:   typeId: 18
DUMP:   length: 8
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 19
DUMP:     symTag: Data
DUMP:     classParentId: 17
DUMP:     lexicalParentId: 0
DUMP:     name: I64A
DUMP:     typeId: 18
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: -9223372036854775808
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 20
DUMP:     symTag: Data
DUMP:     classParentId: 17
DUMP:     lexicalParentId: 0
DUMP:     name: I64B
DUMP:     typeId: 18
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 21
DUMP:     symTag: Data
DUMP:     classParentId: 17
DUMP:     lexicalParentId: 0
DUMP:     name: I64C
DUMP:     typeId: 18
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 9223372036854775807
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 22
DUMP:   symTag: Enum
DUMP:   baseType: 2
DUMP:   lexicalParentId: 0
DUMP:   name: U8
DUMP:   typeId: 23
DUMP:   length: 1
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 24
DUMP:     symTag: Data
DUMP:     classParentId: 22
DUMP:     lexicalParentId: 0
DUMP:     name: U8A
DUMP:     typeId: 23
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 25
DUMP:     symTag: Data
DUMP:     classParentId: 22
DUMP:     lexicalParentId: 0
DUMP:     name: U8B
DUMP:     typeId: 23
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 255
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 26
DUMP:   symTag: Enum
DUMP:   baseType: 7
DUMP:   lexicalParentId: 0
DUMP:   name: U16
DUMP:   typeId: 27
DUMP:   length: 2
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 28
DUMP:     symTag: Data
DUMP:     classParentId: 26
DUMP:     lexicalParentId: 0
DUMP:     name: U16A
DUMP:     typeId: 27
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 29
DUMP:     symTag: Data
DUMP:     classParentId: 26
DUMP:     lexicalParentId: 0
DUMP:     name: U16B
DUMP:     typeId: 27
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 65535
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 30
DUMP:   symTag: Enum
DUMP:   baseType: 7
DUMP:   lexicalParentId: 0
DUMP:   name: U32
DUMP:   typeId: 31
DUMP:   length: 4
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 32
DUMP:     symTag: Data
DUMP:     classParentId: 30
DUMP:     lexicalParentId: 0
DUMP:     name: U32A
DUMP:     typeId: 31
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 33
DUMP:     symTag: Data
DUMP:     classParentId: 30
DUMP:     lexicalParentId: 0
DUMP:     name: U32B
DUMP:     typeId: 31
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 4294967295
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 34
DUMP:   symTag: Enum
DUMP:   baseType: 7
DUMP:   lexicalParentId: 0
DUMP:   name: U64
DUMP:   typeId: 35
DUMP:   length: 8
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 36
DUMP:     symTag: Data
DUMP:     classParentId: 34
DUMP:     lexicalParentId: 0
DUMP:     name: U64A
DUMP:     typeId: 35
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 0
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 37
DUMP:     symTag: Data
DUMP:     classParentId: 34
DUMP:     lexicalParentId: 0
DUMP:     name: U64B
DUMP:     typeId: 35
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 255
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 38
DUMP:   symTag: Enum
DUMP:   baseType: 7
DUMP:   lexicalParentId: 0
DUMP:   name: Char16
DUMP:   typeId: 27
DUMP:   length: 2
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 39
DUMP:     symTag: Data
DUMP:     classParentId: 38
DUMP:     lexicalParentId: 0
DUMP:     name: C16A
DUMP:     typeId: 27
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 97
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 40
DUMP:     symTag: Data
DUMP:     classParentId: 38
DUMP:     lexicalParentId: 0
DUMP:     name: C16B
DUMP:     typeId: 27
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 98
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 41
DUMP:   symTag: Enum
DUMP:   baseType: 7
DUMP:   lexicalParentId: 0
DUMP:   name: Char32
DUMP:   typeId: 42
DUMP:   length: 4
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 43
DUMP:     symTag: Data
DUMP:     classParentId: 41
DUMP:     lexicalParentId: 0
DUMP:     name: C32A
DUMP:     typeId: 42
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 97
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 44
DUMP:     symTag: Data
DUMP:     classParentId: 41
DUMP:     lexicalParentId: 0
DUMP:     name: C32B
DUMP:     typeId: 42
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 98
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 45
DUMP:   symTag: Enum
DUMP:   baseType: 7
DUMP:   lexicalParentId: 0
DUMP:   name: WChar
DUMP:   typeId: 27
DUMP:   length: 2
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 46
DUMP:     symTag: Data
DUMP:     classParentId: 45
DUMP:     lexicalParentId: 0
DUMP:     name: WCA
DUMP:     typeId: 27
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 97
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 47
DUMP:     symTag: Data
DUMP:     classParentId: 45
DUMP:     lexicalParentId: 0
DUMP:     name: WCB
DUMP:     typeId: 27
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 98
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 48
DUMP:   symTag: Enum
DUMP:   baseType: 10
DUMP:   lexicalParentId: 0
DUMP:   name: Bool
DUMP:   typeId: 49
DUMP:   length: 1
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 50
DUMP:     symTag: Data
DUMP:     classParentId: 48
DUMP:     lexicalParentId: 0
DUMP:     name: BA
DUMP:     typeId: 49
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: true
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 51
DUMP:     symTag: Data
DUMP:     classParentId: 48
DUMP:     lexicalParentId: 0
DUMP:     name: BB
DUMP:     typeId: 49
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: false
DUMP:   }
DUMP: {
DUMP:   symIndexId: 113
DUMP:   symTag: Enum
DUMP:   baseType: 6
DUMP:   lexicalParentId: 0
DUMP:   name: EC
DUMP:   typeId: 13
DUMP:   length: 4
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 114
DUMP:     symTag: Data
DUMP:     classParentId: 113
DUMP:     lexicalParentId: 0
DUMP:     name: A
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 1
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 115
DUMP:     symTag: Data
DUMP:     classParentId: 113
DUMP:     lexicalParentId: 0
DUMP:     name: B
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 2
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 116
DUMP:   symTag: Enum
DUMP:   baseType: 6
DUMP:   lexicalParentId: 0
DUMP:   name: Struct::Nested
DUMP:   typeId: 13
DUMP:   length: 4
DUMP:   constructor: 0
DUMP:   constType: 0
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 1
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 0
DUMP:   {
DUMP:     symIndexId: 114
DUMP:     symTag: Data
DUMP:     classParentId: 113
DUMP:     lexicalParentId: 0
DUMP:     name: A
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 1
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 115
DUMP:     symTag: Data
DUMP:     classParentId: 113
DUMP:     lexicalParentId: 0
DUMP:     name: B
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 2
DUMP:   }
DUMP: }
DUMP: {
DUMP:   symIndexId: 117
DUMP:   symTag: Enum
DUMP:   baseType: 6
DUMP:   lexicalParentId: 0
DUMP:   name: EC
DUMP:   typeId: 13
DUMP:   unmodifiedTypeId: 113
DUMP:   length: 4
DUMP:   constructor: 0
DUMP:   constType: 1
DUMP:   hasAssignmentOperator: 0
DUMP:   hasCastOperator: 0
DUMP:   hasNestedTypes: 0
DUMP:   overloadedOperator: 0
DUMP:   isInterfaceUdt: 0
DUMP:   intrinsic: 0
DUMP:   nested: 0
DUMP:   packed: 0
DUMP:   isRefUdt: 0
DUMP:   scoped: 0
DUMP:   unalignedType: 0
DUMP:   isValueUdt: 0
DUMP:   volatileType: 1  {
DUMP:     symIndexId: 114
DUMP:     symTag: Data
DUMP:     classParentId: 113
DUMP:     lexicalParentId: 0
DUMP:     name: A
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 1
DUMP:   }
DUMP:   {
DUMP:     symIndexId: 115
DUMP:     symTag: Data
DUMP:     classParentId: 113
DUMP:     lexicalParentId: 0
DUMP:     name: B
DUMP:     typeId: 13
DUMP:     dataKind: const
DUMP:     locationType: constant
DUMP:     constType: 0
DUMP:     unalignedType: 0
DUMP:     volatileType: 0
DUMP:     value: 2
DUMP:   }
DUMP: }