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