msg_153.c revision 1.10
1/*	$NetBSD: msg_153.c,v 1.10 2025/02/24 19:49:00 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
9typedef double (*unary_operator)(double);
10typedef unsigned char sixteen_bytes[16];
11
12void sink_function_pointer(unary_operator);
13void sink_int_pointer(int *);
14void sink_qualifiers(char *, const char *, volatile char *, const volatile char *);
15void take_pointer_to_sixteen_bytes(sixteen_bytes *);
16
17sixteen_bytes bytes;
18
19void
20to_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
26void
27to_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
33void
34qualifiers(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' to argument 1 discards 'const volatile' [383] */
39	/* expect+2: warning: passing 'pointer to const volatile char' to argument 2 discards 'volatile' [383] */
40	/* expect+1: warning: passing 'pointer to const volatile char' to argument 3 discards 'const' [383] */
41	sink_qualifiers(cvptr, cvptr, cvptr, cvptr);
42}
43
44void
45pass_pointer_to_array(void)
46{
47	// FIXME: Must be a pointer to 16 bytes, not to 1 byte.
48	/* expect+1: warning: converting 'pointer to unsigned char' to incompatible 'pointer to array[16] of unsigned char' for argument 1 [153] */
49	take_pointer_to_sixteen_bytes(&bytes);
50}
51