Home | History | Annotate | Line # | Download | only in lint1
d_fold_test.c revision 1.2
      1  1.1  rillig # 2 "d_fold_test.c"
      2  1.1  rillig 
      3  1.1  rillig /*
      4  1.1  rillig  * Test how expressions are handled in a context where they are tested for
      5  1.1  rillig  * truthiness, such as in the condition of an if statement.
      6  1.1  rillig  */
      7  1.1  rillig 
      8  1.1  rillig struct s {
      9  1.1  rillig 	int member;
     10  1.1  rillig };
     11  1.1  rillig 
     12  1.1  rillig union u {
     13  1.1  rillig 	int member;
     14  1.1  rillig };
     15  1.1  rillig 
     16  1.1  rillig enum e {
     17  1.1  rillig 	E
     18  1.1  rillig };
     19  1.1  rillig 
     20  1.1  rillig struct arr {
     21  1.1  rillig 	int arr[4];
     22  1.1  rillig };
     23  1.1  rillig 
     24  1.1  rillig /* C99 6.2.5p2 */
     25  1.1  rillig void if_Bool(_Bool b)			{ if (b) return; }
     26  1.1  rillig 
     27  1.1  rillig /* C99 6.2.5p3 */
     28  1.1  rillig void if_char(char c)			{ if (c) return; }
     29  1.1  rillig 
     30  1.1  rillig /* C99 6.2.5p4 */
     31  1.1  rillig void if_signed_char(signed char sc)	{ if (sc) return; }
     32  1.1  rillig void if_short_int(short s)		{ if (s) return; }
     33  1.1  rillig void if_int(int i)			{ if (i) return; }
     34  1.1  rillig void if_long_int(long int l)		{ if (l) return; }
     35  1.1  rillig void if_long_long_int(long long int ll)	{ if (ll) return; }
     36  1.1  rillig 
     37  1.1  rillig /* C99 6.2.5p6 */
     38  1.1  rillig void if_unsigned_char(unsigned char uc)			{ if (uc) return; }
     39  1.1  rillig void if_unsigned_short_int(unsigned short us)		{ if (us) return; }
     40  1.1  rillig void if_unsigned_int(unsigned int ui)			{ if (ui) return; }
     41  1.1  rillig void if_unsigned_long_int(unsigned long int ul)		{ if (ul) return; }
     42  1.1  rillig void if_unsigned_long_long_int(unsigned long long int ull) { if (ull) return; }
     43  1.1  rillig 
     44  1.1  rillig /* C99 6.2.5p10 */
     45  1.1  rillig void if_float(float f)			{ if (f) return; }
     46  1.1  rillig void if_double(double d)		{ if (d) return; }
     47  1.1  rillig void if_long_double(long double ld)	{ if (ld) return; }
     48  1.1  rillig 
     49  1.1  rillig /* C99 6.2.5p11 */
     50  1.1  rillig void if_float_Complex(float _Complex fc)		{ if (fc) return; }
     51  1.1  rillig void if_double_Complex(double _Complex dc)		{ if (dc) return; }
     52  1.1  rillig void if_long_double_Complex(long double _Complex ldc)	{ if (ldc) return; }
     53  1.1  rillig 
     54  1.1  rillig /* C99 6.2.5p16 */
     55  1.1  rillig void if_enum(enum e e)			{ if (e) return; }
     56  1.1  rillig 
     57  1.1  rillig /* C99 6.2.5p20 */
     58  1.1  rillig void if_array(struct arr arr)		{ if (arr.arr) return; }
     59  1.1  rillig void if_struct(struct s s)		{ if (s) return; }
     60  1.1  rillig void if_union(union u u)		{ if (u) return; }
     61  1.2  rillig void if_function(void)			{ if (if_function) return; }
     62  1.1  rillig void if_pointer(void *p)		{ if (p) return; }
     63  1.1  rillig 
     64  1.1  rillig /* C99 6.8.5 */
     65  1.1  rillig void while_struct(struct s s)		{ while (s) return; }
     66  1.1  rillig void for_struct(struct s s)		{ for (;s;) return; }
     67  1.1  rillig void do_while_struct(struct s s)	{ do { return; } while (s); }
     68  1.1  rillig 
     69  1.1  rillig /* C99 6.5.15 does not require a scalar type, curiously. */
     70  1.1  rillig int conditional_struct(struct s s)	{ return s ? 1 : 2; }
     71