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