xref: /llvm-project/llvm/test/TableGen/directive3.td (revision d709dcc0909716ce23c30d9884712766aec6a628)
1// RUN: not llvm-tblgen -gen-directive-decl -I %p/../../include %s 2>&1 | FileCheck -match-full-lines %s
2// RUN: not llvm-tblgen -gen-directive-impl -I %p/../../include %s 2>&1 | FileCheck -match-full-lines %s
3
4include "llvm/Frontend/Directive/DirectiveBase.td"
5
6def TestDirectiveLanguage : DirectiveLanguage {
7  let name = "TdlError";
8}
9
10def TDLC_ClauseA : Clause<"clausea"> {
11  let isDefault = 1;
12}
13
14def TDLC_ClauseB : Clause<"clauseb"> {
15}
16
17def TDLC_ClauseC : Clause<"clausec"> {
18}
19
20def TDLC_ClauseD : Clause<"claused"> {
21}
22
23def TDL_DirA : Directive<"dira"> {
24  let allowedClauses = [
25    VersionedClause<TDLC_ClauseA>,
26    VersionedClause<TDLC_ClauseB>,
27    VersionedClause<TDLC_ClauseD>
28  ];
29  let allowedOnceClauses = [
30    VersionedClause<TDLC_ClauseA>,
31    VersionedClause<TDLC_ClauseC>
32  ];
33  let requiredClauses = [
34    VersionedClause<TDLC_ClauseC>,
35    VersionedClause<TDLC_ClauseD>
36  ];
37  let isDefault = 1;
38}
39
40// CHECK: error: Clause TDLC_ClauseA already defined on directive TDL_DirA
41// CHECK: error: Clause TDLC_ClauseD already defined on directive TDL_DirA
42// CHECK: error: One or more clauses are defined multiple times on directive TDL_DirA
43