Home | History | Annotate | Line # | Download | only in lint1
decl_struct_c90.c revision 1.4
      1  1.4  rillig /*	$NetBSD: decl_struct_c90.c,v 1.4 2022/02/27 11:40:30 rillig Exp $	*/
      2  1.1  rillig # 3 "decl_struct_c90.c"
      3  1.1  rillig 
      4  1.1  rillig /*
      5  1.1  rillig  * Test declaration of struct types, in C90 without any GNU extensions.
      6  1.1  rillig  */
      7  1.1  rillig 
      8  1.1  rillig /* lint1-flags: -sw */
      9  1.1  rillig 
     10  1.3  rillig struct unnamed_member {
     11  1.3  rillig 	enum { A, B, C } tag;
     12  1.3  rillig 	union {
     13  1.3  rillig 		int a_value;
     14  1.3  rillig 		void *b_value;
     15  1.3  rillig 		void (*c_value)(void);
     16  1.3  rillig 	};
     17  1.4  rillig 	/* expect-1: warning: anonymous struct/union members is a C11 feature [49] */
     18  1.3  rillig };
     19  1.3  rillig 
     20  1.1  rillig /*
     21  1.1  rillig  * All of K&R, C90, C99 require that a struct member declaration is
     22  1.2  rillig  * terminated with a semicolon.
     23  1.2  rillig  *
     24  1.2  rillig  * Before cgram.y 1.328 from 2021-07-15, lint allowed the missing semicolon
     25  1.2  rillig  * in non-C90 mode, no idea why.
     26  1.1  rillig  */
     27  1.1  rillig struct missing_semicolon {
     28  1.1  rillig 	int member
     29  1.1  rillig };
     30  1.2  rillig /* expect-1: error: syntax error '}' [249] */
     31  1.2  rillig /* expect+1: error: cannot recover from previous errors [224] */
     32