1*3d6a5025Srillig /* $NetBSD: decl_struct_member.c,v 1.19 2025/01/03 03:14:47 rillig Exp $ */ 288734965Srillig # 3 "decl_struct_member.c" 388734965Srillig 4b2baa501Srillig /* lint1-extra-flags: -X 351 */ 5b2baa501Srillig 6657be11cSrillig struct multi_attributes { 7657be11cSrillig __attribute__((deprecated)) 8657be11cSrillig __attribute__((deprecated)) 9657be11cSrillig __attribute__((deprecated)) 10657be11cSrillig int deprecated; 11657be11cSrillig }; 12657be11cSrillig 134d9776f9Srillig struct cover_begin_type_specifier_qualifier_list { 14a4bbb227Srillig int m1; 15a4bbb227Srillig __attribute__((deprecated)) int m2; 16a4bbb227Srillig const int m3; 17a4bbb227Srillig int const m4; 18a4bbb227Srillig int const long m5; 19a4bbb227Srillig int __attribute__((deprecated)) m6; 20a4bbb227Srillig }; 21a4bbb227Srillig 22a4bbb227Srillig typedef int number; 23a4bbb227Srillig 24a4bbb227Srillig struct cover_begin_type_typespec { 25a4bbb227Srillig int m1; 26a4bbb227Srillig number m2; 27a4bbb227Srillig }; 28a4bbb227Srillig 294d9776f9Srillig struct cover_begin_type_qualifier_list { 30a4bbb227Srillig const m1; 31a4bbb227Srillig const volatile m2; 32a4bbb227Srillig }; 33a4bbb227Srillig 34ebf03b17Srillig /* cover struct_or_union_specifier: struct_or_union error */ 35ebf03b17Srillig /* expect+1: error: syntax error 'goto' [249] */ 36ebf03b17Srillig struct goto { 37ebf03b17Srillig /* expect+1: error: illegal type combination [4] */ 38ebf03b17Srillig int member; 39ebf03b17Srillig /* expect+1: error: syntax error '}' [249] */ 40ebf03b17Srillig }; 41ebf03b17Srillig /* expect-1: warning: empty declaration [0] */ 42ebf03b17Srillig 4388734965Srillig /* 4488734965Srillig * Before cgram.y 1.228 from 2021-06-19, lint ran into an assertion failure: 4588734965Srillig * 4688734965Srillig * "is_struct_or_union(dcs->d_type->t_tspec)" at cgram.y:846 4788734965Srillig */ 4888734965Srillig struct { 49a4a927acSrillig /* expect+1: error: syntax error 'unnamed member' [249] */ 50a4a927acSrillig char; 5188734965Srillig }; 52c6433d2cSrillig 53ae95f90eSrillig struct cover_notype_struct_declarators { 54ae95f90eSrillig const a, b; 55ae95f90eSrillig }; 56ae95f90eSrillig 57ae95f90eSrillig struct cover_notype_struct_declarator_bit_field { 58ae95f90eSrillig const a:3, :0, b:4; 59ae95f90eSrillig const:0; 60ae95f90eSrillig }; 61ae95f90eSrillig 62c6433d2cSrillig /* 6392de156fSrillig * An array of bit-fields sounds like a strange idea since a bit-field member 6492de156fSrillig * is not addressable, while an array needs to be addressable. Due to this 6592de156fSrillig * contradiction, this combination may have gone without mention in the C 6692de156fSrillig * standards. 6792de156fSrillig * 6892de156fSrillig * GCC 10.3.0 complains that the bit-field has invalid type. 6992de156fSrillig * 7092de156fSrillig * Clang 12.0.1 complains that the bit-field has non-integral type 'unsigned 7192de156fSrillig * int [8]'. 7292de156fSrillig */ 7392de156fSrillig struct array_of_bit_fields { 7492de156fSrillig /* expect+1: warning: illegal bit-field type 'array[8] of unsigned int' [35] */ 7592de156fSrillig unsigned int bits[8]: 1; 7692de156fSrillig }; 7792de156fSrillig 7892de156fSrillig /* 79c6433d2cSrillig * Before decl.c 1.188 from 2021-06-20, lint ran into a segmentation fault. 80c6433d2cSrillig */ 81c6433d2cSrillig struct { 82a4a927acSrillig /* expect+1: error: syntax error '0' [249] */ 83a4a927acSrillig char a(_)0 8407f85658Srillig 85c6433d2cSrillig /* 8607f85658Srillig * Before cgram.y 1.328 from 2021-07-15, lint ran into an assertion failure 8707f85658Srillig * at the closing semicolon: 88c6433d2cSrillig * 89f14ab694Srillig * assertion "t == NO_TSPEC" failed in end_type at decl.c:774 90c6433d2cSrillig */ 9107f85658Srillig }; 92c83f7defSrillig /* expect+1: error: cannot recover from previous errors [224] */ 93