1 // RUN: clang-tblgen --gen-clang-diags-enums -I%S %s 2>&1 | FileCheck %s
2 include "DiagnosticBase.inc"
4 def Diag : Error<"%enum_select<EnumName>{%Val1{V1}|%Val2{V2}|%Val3{V3}}0">;
5 // CHECK: DIAG_ENUM(EnumName)
6 // CHECK-NEXT: DIAG_ENUM_ITEM(0, Val1)
7 // CHECK-NEXT: DIAG_ENUM_ITEM(1, Val2)
8 // CHECK-NEXT: DIAG_ENUM_ITEM(2, Val3)
9 // CHECK-NEXT: DIAG_ENUM_END()
11 // These are OK, we permit missing values since they might not be useful.
12 def Missing1 : Error<"%enum_select<DupeEnumName1>{V1|%Val2{V2}|%Val3{V3}}0">;
13 // CHECK: DIAG_ENUM(DupeEnumName1)
14 // CHECK-NEXT: DIAG_ENUM_ITEM(1, Val2)
15 // CHECK-NEXT: DIAG_ENUM_ITEM(2, Val3)
16 // CHECK-NEXT: DIAG_ENUM_END()
17 def Missing2 : Error<"%enum_select<DupeEnumName2>{%Val1{V1}|V2|%Val3{V3}}0">;
18 // CHECK: DIAG_ENUM(DupeEnumName2)
19 // CHECK-NEXT: DIAG_ENUM_ITEM(0, Val1)
20 // CHECK-NEXT: DIAG_ENUM_ITEM(2, Val3)
21 // CHECK-NEXT: DIAG_ENUM_END()
22 def Missing3 : Error<"%enum_select<DupeEnumName3>{%Val1{V1}|%Val2{V2}|V3}0">;
23 // CHECK: DIAG_ENUM(DupeEnumName3)
24 // CHECK-NEXT: DIAG_ENUM_ITEM(0, Val1)
25 // CHECK-NEXT: DIAG_ENUM_ITEM(1, Val2)
26 // CHECK-NEXT: DIAG_ENUM_END()