1/* $NetBSD: msg_102.c,v 1.6 2023/06/30 21:06:18 rillig Exp $ */ 2# 3 "msg_102.c" 3 4// Test for message: illegal use of member '%s' [102] 5 6// Anonymous members are defined in C11 6.7.2.1p2. 7 8struct unrelated { 9 union { 10 struct { 11 unsigned bit_0:1; 12 unsigned bit_1:1; 13 }; 14 unsigned bits; 15 }; 16}; 17 18struct bit_fields_and_bits { 19 union { 20 struct { 21 unsigned bf_bit_0:1; 22 unsigned bf_bit_1:1; 23 }; 24 unsigned bf_bits; 25 }; 26}; 27 28static struct unrelated *u1, *u2; 29static struct bit_fields_and_bits *b1, *b2; 30 31static inline _Bool 32eq(int x) 33{ 34 if (x == 0) 35 /* Accessing a member from an unnamed struct member. */ 36 return u1->bits == u2->bits; 37 38 /* 39 * The struct does not have a member named 'bits'. There's another 40 * struct with a member of that name, and in traditional C, it was 41 * possible but discouraged to access members of other structs via 42 * their plain name. 43 */ 44 /* expect+2: error: illegal use of member 'bits' [102] */ 45 /* expect+1: error: illegal use of member 'bits' [102] */ 46 return b1->bits == b2->bits; 47} 48