Home | History | Annotate | Line # | Download | only in lint1
msg_124.c revision 1.16
      1  1.16  rillig /*	$NetBSD: msg_124.c,v 1.16 2025/04/12 15:49:50 rillig Exp $	*/
      2   1.1  rillig # 3 "msg_124.c"
      3   1.1  rillig 
      4  1.16  rillig // Test for message: invalid combination of '%s' and '%s', op '%s' [124]
      5   1.1  rillig 
      6  1.14  rillig /* lint1-extra-flags: -s -X 191,351 */
      7   1.4  rillig 
      8   1.2  rillig typedef void(*signal_handler)(int);
      9   1.2  rillig 
     10   1.2  rillig typedef signal_handler(*sys_signal)(signal_handler);
     11   1.2  rillig 
     12   1.2  rillig typedef int(*printflike)(const char *, ...)
     13   1.2  rillig     __attribute__((format(printf, 1, 2)));
     14   1.2  rillig 
     15   1.2  rillig void
     16   1.2  rillig example(int *ptr)
     17   1.2  rillig {
     18  1.16  rillig 	/* expect+1: warning: invalid combination of 'pointer to function(int) returning void' and 'pointer to int', op 'init' [124] */
     19  1.12  rillig 	signal_handler handler = ptr;
     20  1.16  rillig 	/* expect+1: warning: invalid combination of 'pointer to function(pointer to function(int) returning void) returning pointer to function(int) returning void' and 'pointer to int', op 'init' [124] */
     21  1.12  rillig 	sys_signal signal = ptr;
     22  1.16  rillig 	/* expect+1: warning: invalid combination of 'pointer to function(pointer to const char, ...) returning int' and 'pointer to int', op 'init' [124] */
     23  1.12  rillig 	printflike printf = ptr;
     24   1.3  rillig }
     25   1.3  rillig 
     26   1.3  rillig void ok(_Bool);
     27   1.3  rillig void not_ok(_Bool);
     28   1.3  rillig 
     29   1.3  rillig void
     30   1.3  rillig compare_pointers(const void *vp, const char *cp, const int *ip,
     31   1.3  rillig 		 signal_handler fp)
     32   1.3  rillig {
     33   1.3  rillig 	ok(vp == cp);
     34   1.3  rillig 	ok(vp == ip);
     35  1.15  rillig 	/* expect+1: warning: C90 or later forbid comparison of 'void *' with function pointer [274] */
     36  1.12  rillig 	ok(vp == fp);
     37  1.16  rillig 	/* expect+1: warning: invalid combination of 'pointer to const char' and 'pointer to const int', op '==' [124] */
     38  1.12  rillig 	not_ok(cp == ip);
     39  1.16  rillig 	/* expect+1: warning: invalid combination of 'pointer to const char' and 'pointer to function(int) returning void', op '==' [124] */
     40  1.12  rillig 	not_ok(cp == fp);
     41   1.3  rillig 	ok(vp == (void *)0);
     42   1.3  rillig 	ok(cp == (void *)0);
     43   1.3  rillig 	ok(ip == (void *)0);
     44   1.7  rillig 	ok(fp == (void *)0);	/* wrong 274 before 2021-01-25 */
     45   1.5  rillig 	ok((void *)0 == vp);
     46   1.5  rillig 	ok((void *)0 == cp);
     47   1.5  rillig 	ok((void *)0 == ip);
     48   1.7  rillig 	ok((void *)0 == fp);	/* wrong 274 before 2021-01-25 */
     49   1.3  rillig 	ok(vp == 0);
     50   1.3  rillig 	ok(cp == 0);
     51   1.3  rillig 	ok(ip == 0);
     52   1.3  rillig 	ok(fp == 0);
     53   1.3  rillig 	ok(vp == 0L);
     54   1.3  rillig 	ok(cp == 0L);
     55   1.3  rillig 	ok(ip == 0L);
     56   1.3  rillig 	ok(fp == 0L);
     57   1.2  rillig }
     58