xref: /llvm-project/mlir/test/Dialect/IRDL/cyclic-types.mlir (revision 42987dfa3a85e0cec987b9f07a8ffe61073ddc52)
1// RUN: mlir-opt %s --irdl-file=%S/cyclic-types.irdl.mlir -split-input-file -verify-diagnostics | FileCheck %s
2
3// Types that have cyclic references.
4
5// CHECK: !testd.self_referencing<i32>
6func.func @no_references(%v: !testd.self_referencing<i32>) {
7  return
8}
9
10// -----
11
12// CHECK: !testd.self_referencing<!testd.self_referencing<i32>>
13func.func @one_reference(%v: !testd.self_referencing<!testd.self_referencing<i32>>) {
14  return
15}
16
17// -----
18
19// expected-error@+1 {{'i64' does not satisfy the constraint}}
20func.func @wrong_parameter(%v: !testd.self_referencing<i64>) {
21  return
22}
23
24// -----
25
26// CHECK: !testd.type1<i32>
27func.func @type1_no_references(%v: !testd.type1<i32>) {
28  return
29}
30
31// -----
32
33// CHECK: !testd.type1<!testd.type2<i32>>
34func.func @type1_one_references(%v: !testd.type1<!testd.type2<i32>>) {
35  return
36}
37
38// -----
39
40// CHECK: !testd.type1<!testd.type2<!testd.type1<i32>>>
41func.func @type1_two_references(%v: !testd.type1<!testd.type2<!testd.type1<i32>>>) {
42  return
43}
44
45// -----
46
47// expected-error@+1 {{'i64' does not satisfy the constraint}}
48func.func @wrong_parameter_type1(%v: !testd.type1<i64>) {
49  return
50}
51
52// -----
53
54// expected-error@+1 {{'i64' does not satisfy the constraint}}
55func.func @wrong_parameter_type2(%v: !testd.type2<i64>) {
56  return
57}
58