msg_155.c revision 1.11 1 1.11 rillig /* $NetBSD: msg_155.c,v 1.11 2022/06/17 18:54:53 rillig Exp $ */
2 1.1 rillig # 3 "msg_155.c"
3 1.1 rillig
4 1.4 rillig // Test for message: passing '%s' to incompatible '%s', arg #%d [155]
5 1.4 rillig
6 1.1 rillig
7 1.3 rillig void c99_6_7_6_example_a(int);
8 1.3 rillig void c99_6_7_6_example_b(int *);
9 1.3 rillig void c99_6_7_6_example_c(int *[3]);
10 1.3 rillig void c99_6_7_6_example_d(int (*)[3]);
11 1.6 rillig void c99_6_7_6_example_e(int (*)[*]);
12 1.10 rillig /* Wrong type before decl.c 1.256 from 2022-04-01. */
13 1.10 rillig void c99_6_7_6_example_f(int *());
14 1.3 rillig void c99_6_7_6_example_g(int (*)(void));
15 1.3 rillig void c99_6_7_6_example_h(int (*const[])(unsigned int, ...));
16 1.3 rillig
17 1.3 rillig struct incompatible {
18 1.3 rillig int member;
19 1.3 rillig };
20 1.3 rillig
21 1.3 rillig void
22 1.3 rillig provoke_error_messages(struct incompatible arg)
23 1.3 rillig {
24 1.11 rillig /* expect+1: ... 'int', ... */
25 1.3 rillig c99_6_7_6_example_a(arg);
26 1.3 rillig
27 1.11 rillig /* expect+1: ... 'pointer to int', ... */
28 1.3 rillig c99_6_7_6_example_b(arg);
29 1.3 rillig
30 1.4 rillig /* C99 says 'array[3] of pointer to int', which is close enough. */
31 1.11 rillig /* expect+1: ... 'pointer to pointer to int', ... */
32 1.3 rillig c99_6_7_6_example_c(arg);
33 1.3 rillig
34 1.11 rillig /* expect+1: ... 'pointer to array[3] of int', ... */
35 1.3 rillig c99_6_7_6_example_d(arg);
36 1.3 rillig
37 1.11 rillig /* expect+1: ... 'pointer to array[unknown_size] of int', ... */
38 1.3 rillig c99_6_7_6_example_e(arg);
39 1.3 rillig
40 1.10 rillig /* Wrong type before decl.c 1.256 from 2022-04-01. */
41 1.11 rillig /* expect+1: ... 'pointer to function() returning pointer to int', ... */
42 1.9 rillig c99_6_7_6_example_f(arg);
43 1.3 rillig
44 1.11 rillig /* expect+1: ... 'pointer to function(void) returning int', ... */
45 1.3 rillig c99_6_7_6_example_g(arg);
46 1.3 rillig
47 1.11 rillig /* expect+1: ... 'pointer to const pointer to function(unsigned int, ...) returning int', ... */
48 1.3 rillig c99_6_7_6_example_h(arg);
49 1.3 rillig }
50 1.8 rillig
51 1.8 rillig extern void sink(struct incompatible);
52 1.8 rillig
53 1.8 rillig /*
54 1.8 rillig * The function type_name has a special case for an enum type that has been
55 1.8 rillig * implicitly converted to an int. Such a type is still output as the enum
56 1.8 rillig * type.
57 1.8 rillig *
58 1.8 rillig * XXX: The expressions 'day + 0' and '0 + day' should result in the same
59 1.8 rillig * type.
60 1.8 rillig */
61 1.8 rillig void
62 1.8 rillig type_name_of_enum(void)
63 1.8 rillig {
64 1.8 rillig enum Day {
65 1.8 rillig MONDAY
66 1.8 rillig } day = MONDAY;
67 1.8 rillig
68 1.11 rillig /* expect+1: ... passing 'enum Day' ... */
69 1.8 rillig sink(day);
70 1.8 rillig
71 1.11 rillig /* expect+1: ... passing 'enum Day' ... */
72 1.8 rillig sink(day + 0);
73 1.8 rillig
74 1.11 rillig /* expect+1: ... passing 'int' ... */
75 1.8 rillig sink(0 + day);
76 1.8 rillig
77 1.11 rillig /* expect+1: ... passing 'int' ... */
78 1.8 rillig sink(0);
79 1.8 rillig }
80