blob: 56dc2d61787b6f779bd934a82b3e3d18d0ecd6b7 [file] [log] [blame]
// RUN: mlir-opt %s --irdl-file=%S/cyclic-types.irdl.mlir -split-input-file -verify-diagnostics | FileCheck %s
// Types that have cyclic references.
// CHECK: !testd.self_referencing<i32>
func.func @no_references(%v: !testd.self_referencing<i32>) {
return
}
// -----
// CHECK: !testd.self_referencing<!testd.self_referencing<i32>>
func.func @one_reference(%v: !testd.self_referencing<!testd.self_referencing<i32>>) {
return
}
// -----
// expected-error@+1 {{'i64' does not satisfy the constraint}}
func.func @wrong_parameter(%v: !testd.self_referencing<i64>) {
return
}
// -----
// CHECK: !testd.type1<i32>
func.func @type1_no_references(%v: !testd.type1<i32>) {
return
}
// -----
// CHECK: !testd.type1<!testd.type2<i32>>
func.func @type1_one_references(%v: !testd.type1<!testd.type2<i32>>) {
return
}
// -----
// CHECK: !testd.type1<!testd.type2<!testd.type1<i32>>>
func.func @type1_two_references(%v: !testd.type1<!testd.type2<!testd.type1<i32>>>) {
return
}
// -----
// expected-error@+1 {{'i64' does not satisfy the constraint}}
func.func @wrong_parameter_type1(%v: !testd.type1<i64>) {
return
}
// -----
// expected-error@+1 {{'i64' does not satisfy the constraint}}
func.func @wrong_parameter_type2(%v: !testd.type2<i64>) {
return
}