// RUN: cir-opt %s -verify-diagnostics -split-input-file !u8i = !cir.int !u32i = !cir.int !rec_S = !cir.struct<"S" {!u8i, !u32i}> module { cir.func @struct_extract_member_invalid_element_type() { %0 = cir.const #cir.const_record<{#cir.int<1> : !u8i, #cir.int<3> : !u32i}> : !rec_S // expected-error @below {{member type mismatch}} %1 = cir.extract_member %0[1] : !rec_S -> !u8i cir.return } } // ----- !u8i = !cir.int !u32i = !cir.int !rec_S = !cir.struct<"S" {!u8i, !u32i}> module { cir.func @struct_extract_member_invalid_index_value() { %0 = cir.const #cir.const_record<{#cir.int<1> : !u8i, #cir.int<3> : !u32i}> : !rec_S // expected-error @below {{member index out of bounds}} %1 = cir.extract_member %0[2] : !rec_S -> !u8i cir.return } } // ----- !u32i = !cir.int !rec_U = !cir.union<"U" {!u32i}> module { cir.func @extract_member_invalid_for_union() { %0 = cir.const #cir.const_record<{#cir.int<1> : !u32i}> : !rec_U // expected-error @below {{cir.extract_member currently does not support unions}} %1 = cir.extract_member %0[2] : !rec_U -> !u32i cir.return } } // ----- !u8i = !cir.int !u32i = !cir.int !rec_S = !cir.struct<"S" {!u8i, !u32i}> module { cir.func @struct_insert_member_invalid_element_type() { %0 = cir.const #cir.const_record<{#cir.int<1> : !u8i, #cir.int<3> : !u32i}> : !rec_S %1 = cir.const #cir.int<3> : !u8i // expected-error @below {{member type mismatch}} %2 = cir.insert_member %0[1], %1 : !rec_S, !u8i cir.return } } // ----- !u8i = !cir.int !u32i = !cir.int !rec_S = !cir.struct<"S" {!u8i, !u32i}> module { cir.func @struct_extract_member_invalid_index_value() { %0 = cir.const #cir.const_record<{#cir.int<1> : !u8i, #cir.int<3> : !u32i}> : !rec_S %1 = cir.const #cir.int<3> : !u8i // expected-error @below {{member index out of bounds}} %2 = cir.insert_member %0[2], %1 : !rec_S, !u8i cir.return } } // ----- !u32i = !cir.int !rec_U = !cir.union<"U" {!u32i}> module { cir.func @extract_member_invalid_for_union() { %0 = cir.const #cir.const_record<{#cir.int<1> : !u32i}> : !rec_U %1 = cir.const #cir.int<3> : !u32i // expected-error @below {{cir.insert_member currently does not support unions}} %2 = cir.insert_member %0[1], %1 : !rec_U, !u32i cir.return } }