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