xref: /llvm-project/mlir/test/mlir-tblgen/deprecation-transitive.td (revision ad48a0e573b25575bc800012d08bcd78780042de)
1// RUN: mlir-tblgen -I %S/../../include %s 2>&1 | FileCheck %s --implicit-check-not warning:
2
3include "mlir/IR/OpBase.td"
4
5def Test_Dialect : Dialect {
6  let name = "test_dialect";
7}
8
9def OpTraitA : NativeOpTrait<"OpTraitA">, Deprecated<"use `bar` instead">;
10
11// CHECK: :[[# @LINE + 1]]:{{[0-9]+}}: warning: Using deprecated def `OpTraitA`
12def A_AsField {
13  NativeOpTrait value = OpTraitA;
14}
15
16// CHECK: :[[# @LINE + 1]]:{{[0-9]+}}: warning: Using deprecated def `OpTraitA`
17def B_InList {
18  list<NativeOpTrait> value = [OpTraitA];
19}
20
21// CHECK: :[[# @LINE + 1]]:{{[0-9]+}}: warning: Using deprecated def `OpTraitA`
22def C_InListList {
23    list<list<NativeOpTrait>> value = [[OpTraitA]];
24}
25
26class Base;
27
28// CHECK: :[[# @LINE + 1]]:{{[0-9]+}}: warning: Using deprecated def `OpTraitA`
29def D_InDagAsOperator {
30  dag value = (OpTraitA $test);
31}
32
33// CHECK: :[[# @LINE + 1]]:{{[0-9]+}}: warning: Using deprecated def `OpTraitA`
34def E_InDagAsArg : Base {
35  dag value = (ins OpTraitA:$test);
36}
37
38class ThingTakingList<list<NativeOpTrait> l> {
39  list<NativeOpTrait> i = l; // avoid unused variable warning.
40}
41
42// CHECK: :[[# @LINE + 1]]:{{[0-9]+}}: warning: Using deprecated def `OpTraitA`
43def F_AsFieldWithinAnonymousDef {
44  ThingTakingList value = ThingTakingList<[OpTraitA]>;
45}
46
47// CHECK: :[[# @LINE + 1]]:{{[0-9]+}}: warning: Using deprecated def `OpTraitA`
48def G_InDagAsAnonymousDefOperator {
49  dag value = (ThingTakingList<[OpTraitA]> $test);
50}
51
52def H_ButNotTransitivelyInNonAnonymousDef {
53  Base value = E_InDagAsArg;
54}
55