1/* $NetBSD: msg_035.c,v 1.11 2022/06/15 20:18:31 rillig Exp $ */ 2# 3 "msg_035.c" 3 4// Test for message: illegal bit-field type '%s' [35] 5 6/* Omit -g, see gcc_bit_field_types.c. */ 7/* lint1-flags: -Sw */ 8 9/* 10 * In traditional C, only unsigned int is a portable bit-field type. 11 * 12 * In C90, only int, signed int and unsigned int are allowed (3.5.2.1p7). 13 * 14 * In C99 and C11, only _Bool, signed int and unsigned int are allowed, 15 * plus implementation-defined types (6.7.2.1p5). 16 */ 17 18typedef struct { 19 int dummy; 20} example_struct; 21 22typedef union { 23 int dummy; 24} example_union; 25 26typedef enum { 27 NO, YES 28} example_enum; 29 30typedef void (example_function)(int, const char *); 31 32/* Try all types from tspec_t. */ 33struct example { 34 signed signed_flag: 1; 35 unsigned unsigned_flag: 1; 36 _Bool boolean_flag: 1; 37 char char_flag: 1; 38 signed char signed_char_flag: 1; 39 unsigned char unsigned_char_flag: 1; 40 short short_flag: 1; 41 unsigned short unsigned_short_flag: 1; 42 int int_flag: 1; 43 unsigned int unsigned_int_flag: 1; 44 45 /* expect+1: warning: illegal bit-field type 'long' [35] */ 46 long long_flag: 1; 47 /* expect+1: warning: illegal bit-field type 'unsigned long' [35] */ 48 unsigned long unsigned_long_flag: 1; 49 /* expect+1: warning: illegal bit-field type 'long long' [35] */ 50 long long long_long_flag: 1; 51 /* expect+1: warning: illegal bit-field type 'unsigned long long' [35] */ 52 unsigned long long unsigned_long_long_flag: 1; 53 54 /* __int128_t omitted since it is not always defined */ 55 /* __uint128_t omitted since it is not always defined */ 56 57 /* expect+1: warning: illegal bit-field type 'float' [35] */ 58 float float_flag: 1; 59 /* expect+1: warning: illegal bit-field type 'double' [35] */ 60 double double_flag: 1; 61 /* expect+1: warning: illegal bit-field type 'long double' [35] */ 62 long double long_double_flag: 1; 63 /* expect+2: error: void type for 'void_flag' [19] */ 64 /* expect+1: error: zero size bit-field [37] */ 65 void void_flag: 1; 66 /* expect+1: warning: illegal bit-field type 'struct typedef example_struct' [35] */ 67 example_struct struct_flag: 1; 68 /* expect+1: warning: illegal bit-field type 'union typedef example_union' [35] */ 69 example_union union_flag: 1; 70 71 example_enum enum_flag: 1; 72 73 /* expect+1: warning: illegal bit-field type 'pointer to void' [35] */ 74 void *pointer_flag: 1; 75 /* expect+1: warning: illegal bit-field type 'array[4] of unsigned int' [35] */ 76 unsigned int array_flag[4]: 1; 77 /* expect+1: warning: illegal bit-field type 'function(int, pointer to const char) returning void' [35] */ 78 example_function function_flag: 1; 79 /* expect+2: error: invalid type for _Complex [308] */ 80 /* expect+1: warning: illegal bit-field type 'double _Complex' [35] */ 81 _Complex complex_flag: 1; 82 /* expect+1: warning: illegal bit-field type 'float _Complex' [35] */ 83 float _Complex float_complex_flag: 1; 84 /* expect+1: warning: illegal bit-field type 'double _Complex' [35] */ 85 double _Complex double_complex_flag: 1; 86 /* expect+1: warning: illegal bit-field type 'long double _Complex' [35] */ 87 long double _Complex long_double_complex_flag: 1; 88}; 89