1 1.20 rillig /* $NetBSD: decl_struct_member.c,v 1.20 2025/04/12 15:49:49 rillig Exp $ */ 2 1.1 rillig # 3 "decl_struct_member.c" 3 1.1 rillig 4 1.16 rillig /* lint1-extra-flags: -X 351 */ 5 1.16 rillig 6 1.4 rillig struct multi_attributes { 7 1.4 rillig __attribute__((deprecated)) 8 1.4 rillig __attribute__((deprecated)) 9 1.4 rillig __attribute__((deprecated)) 10 1.4 rillig int deprecated; 11 1.4 rillig }; 12 1.4 rillig 13 1.10 rillig struct cover_begin_type_specifier_qualifier_list { 14 1.6 rillig int m1; 15 1.6 rillig __attribute__((deprecated)) int m2; 16 1.6 rillig const int m3; 17 1.6 rillig int const m4; 18 1.6 rillig int const long m5; 19 1.6 rillig int __attribute__((deprecated)) m6; 20 1.6 rillig }; 21 1.6 rillig 22 1.6 rillig typedef int number; 23 1.6 rillig 24 1.6 rillig struct cover_begin_type_typespec { 25 1.6 rillig int m1; 26 1.6 rillig number m2; 27 1.6 rillig }; 28 1.6 rillig 29 1.10 rillig struct cover_begin_type_qualifier_list { 30 1.6 rillig const m1; 31 1.6 rillig const volatile m2; 32 1.6 rillig }; 33 1.6 rillig 34 1.7 rillig /* cover struct_or_union_specifier: struct_or_union error */ 35 1.7 rillig /* expect+1: error: syntax error 'goto' [249] */ 36 1.7 rillig struct goto { 37 1.20 rillig /* expect+1: error: invalid type combination [4] */ 38 1.7 rillig int member; 39 1.7 rillig /* expect+1: error: syntax error '}' [249] */ 40 1.7 rillig }; 41 1.7 rillig /* expect-1: warning: empty declaration [0] */ 42 1.7 rillig 43 1.1 rillig /* 44 1.1 rillig * Before cgram.y 1.228 from 2021-06-19, lint ran into an assertion failure: 45 1.1 rillig * 46 1.1 rillig * "is_struct_or_union(dcs->d_type->t_tspec)" at cgram.y:846 47 1.1 rillig */ 48 1.1 rillig struct { 49 1.14 rillig /* expect+1: error: syntax error 'unnamed member' [249] */ 50 1.14 rillig char; 51 1.1 rillig }; 52 1.2 rillig 53 1.9 rillig struct cover_notype_struct_declarators { 54 1.9 rillig const a, b; 55 1.9 rillig }; 56 1.9 rillig 57 1.9 rillig struct cover_notype_struct_declarator_bit_field { 58 1.13 rillig const a:3, :0, b:4; 59 1.13 rillig const:0; 60 1.9 rillig }; 61 1.9 rillig 62 1.2 rillig /* 63 1.11 rillig * An array of bit-fields sounds like a strange idea since a bit-field member 64 1.11 rillig * is not addressable, while an array needs to be addressable. Due to this 65 1.11 rillig * contradiction, this combination may have gone without mention in the C 66 1.11 rillig * standards. 67 1.11 rillig * 68 1.11 rillig * GCC 10.3.0 complains that the bit-field has invalid type. 69 1.11 rillig * 70 1.11 rillig * Clang 12.0.1 complains that the bit-field has non-integral type 'unsigned 71 1.11 rillig * int [8]'. 72 1.11 rillig */ 73 1.11 rillig struct array_of_bit_fields { 74 1.20 rillig /* expect+1: warning: invalid bit-field type 'array[8] of unsigned int' [35] */ 75 1.11 rillig unsigned int bits[8]: 1; 76 1.11 rillig }; 77 1.11 rillig 78 1.11 rillig /* 79 1.2 rillig * Before decl.c 1.188 from 2021-06-20, lint ran into a segmentation fault. 80 1.2 rillig */ 81 1.2 rillig struct { 82 1.14 rillig /* expect+1: error: syntax error '0' [249] */ 83 1.14 rillig char a(_)0 84 1.12 rillig 85 1.2 rillig /* 86 1.12 rillig * Before cgram.y 1.328 from 2021-07-15, lint ran into an assertion failure 87 1.12 rillig * at the closing semicolon: 88 1.2 rillig * 89 1.17 rillig * assertion "t == NO_TSPEC" failed in end_type at decl.c:774 90 1.2 rillig */ 91 1.12 rillig }; 92 1.15 rillig /* expect+1: error: cannot recover from previous errors [224] */ 93