/* $NetBSD: msg_155.c,v 1.12 2023/03/28 14:44:35 rillig Exp $ */ # 3 "msg_155.c" // Test for message: passing '%s' to incompatible '%s', arg #%d [155] /* lint1-extra-flags: -X 351 */ void c99_6_7_6_example_a(int); void c99_6_7_6_example_b(int *); void c99_6_7_6_example_c(int *[3]); void c99_6_7_6_example_d(int (*)[3]); void c99_6_7_6_example_e(int (*)[*]); /* Wrong type before decl.c 1.256 from 2022-04-01. */ void c99_6_7_6_example_f(int *()); void c99_6_7_6_example_g(int (*)(void)); void c99_6_7_6_example_h(int (*const[])(unsigned int, ...)); struct incompatible { int member; }; void provoke_error_messages(struct incompatible arg) { /* expect+1: ... 'int', ... */ c99_6_7_6_example_a(arg); /* expect+1: ... 'pointer to int', ... */ c99_6_7_6_example_b(arg); /* C99 says 'array[3] of pointer to int', which is close enough. */ /* expect+1: ... 'pointer to pointer to int', ... */ c99_6_7_6_example_c(arg); /* expect+1: ... 'pointer to array[3] of int', ... */ c99_6_7_6_example_d(arg); /* expect+1: ... 'pointer to array[unknown_size] of int', ... */ c99_6_7_6_example_e(arg); /* Wrong type before decl.c 1.256 from 2022-04-01. */ /* expect+1: ... 'pointer to function() returning pointer to int', ... */ c99_6_7_6_example_f(arg); /* expect+1: ... 'pointer to function(void) returning int', ... */ c99_6_7_6_example_g(arg); /* expect+1: ... 'pointer to const pointer to function(unsigned int, ...) returning int', ... */ c99_6_7_6_example_h(arg); } extern void sink(struct incompatible); /* * The function type_name has a special case for an enum type that has been * implicitly converted to an int. Such a type is still output as the enum * type. * * XXX: The expressions 'day + 0' and '0 + day' should result in the same * type. */ void type_name_of_enum(void) { enum Day { MONDAY } day = MONDAY; /* expect+1: ... passing 'enum Day' ... */ sink(day); /* expect+1: ... passing 'enum Day' ... */ sink(day + 0); /* expect+1: ... passing 'int' ... */ sink(0 + day); /* expect+1: ... passing 'int' ... */ sink(0); }