Home | History | Annotate | Line # | Download | only in lint1
      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