1// RUN: mlir-opt %s -test-recursive-types | FileCheck %s
2
3// CHECK: !testrec = !test.test_rec<type_to_alias, test_rec<type_to_alias>>
4
5// CHECK-LABEL: @roundtrip
6func.func @roundtrip() {
7  // CHECK: !test.test_rec<a, test_rec<b, test_type>>
8  "test.dummy_op_for_roundtrip"() : () -> !test.test_rec<a, test_rec<b, test_type>>
9  // CHECK: !test.test_rec<c, test_rec<c>>
10  "test.dummy_op_for_roundtrip"() : () -> !test.test_rec<c, test_rec<c>>
11  // Make sure walkSubElementType, which is used to generate aliases, doesn't go
12  // into inifinite recursion.
13  // CHECK: !testrec
14  "test.dummy_op_for_roundtrip"() : () -> !test.test_rec<type_to_alias, test_rec<type_to_alias>>
15  return
16}
17
18// CHECK-LABEL: @create
19func.func @create() {
20  // CHECK: !test.test_rec<some_long_and_unique_name, test_rec<some_long_and_unique_name>>
21  return
22}
23