1 /*        $NetBSD: msg_153.c,v 1.12 2025/05/04 08:37:09 rillig Exp $  */
2 # 3 "msg_153.c"
3 
4 // Test for message: converting '%s' to incompatible '%s' for argument %d [153]
5 
6 /* lint1-extra-flags: -X 351 */
7 
8 
9 typedef double (*unary_operator)(double);
10 typedef unsigned char sixteen_bytes[16];
11 
12 void sink_function_pointer(unary_operator);
13 void sink_int_pointer(int *);
14 void sink_qualifiers(char *, const char *, volatile char *, const volatile char *);
15 void take_pointer_to_sixteen_bytes(sixteen_bytes *);
16 
17 sixteen_bytes bytes;
18 
19 void
to_function_pointer(int * x)20 to_function_pointer(int *x)
21 {
22           /* expect+1: warning: converting 'pointer to int' to incompatible 'pointer to function(double) returning double' for argument 1 [153] */
23           sink_function_pointer(x);
24 }
25 
26 void
to_int_pointer(unary_operator op)27 to_int_pointer(unary_operator op)
28 {
29           /* expect+1: warning: converting 'pointer to function(double) returning double' to incompatible 'pointer to int' for argument 1 [153] */
30           sink_int_pointer(op);
31 }
32 
33 void
qualifiers(char * ptr,const volatile char * cvptr)34 qualifiers(char *ptr, const volatile char *cvptr)
35 {
36           sink_qualifiers(ptr, ptr, ptr, ptr);
37 
38           /* expect+3: warning: passing 'pointer to const volatile char' as argument 1 to 'sink_qualifiers' discards 'const volatile' [383] */
39           /* expect+2: warning: passing 'pointer to const volatile char' as argument 2 to 'sink_qualifiers' discards 'volatile' [383] */
40           /* expect+1: warning: passing 'pointer to const volatile char' as argument 3 to 'sink_qualifiers' discards 'const' [383] */
41           sink_qualifiers(cvptr, cvptr, cvptr, cvptr);
42 }
43 
44 void
pass_pointer_to_array(void)45 pass_pointer_to_array(void)
46 {
47           take_pointer_to_sixteen_bytes(&bytes);
48 }
49