xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_347.c (revision 5e813441c07ecbe6db2dd698359dc51e12b40685)
1*5e813441Srillig /*	$NetBSD: msg_347.c,v 1.7 2023/08/02 21:11:35 rillig Exp $	*/
2732fd0a3Srillig # 3 "msg_347.c"
3732fd0a3Srillig 
4732fd0a3Srillig // Test for message: redeclaration of '%s' with type '%s', expected '%s' [347]
5732fd0a3Srillig 
6b2baa501Srillig /* lint1-extra-flags: -r -X 351 */
7732fd0a3Srillig 
8732fd0a3Srillig /*
9732fd0a3Srillig  * Message 27 already covers redeclarations, but it doesn't include enough
10732fd0a3Srillig  * details to make any sense of it.
11732fd0a3Srillig  */
12732fd0a3Srillig 
13732fd0a3Srillig /*
14*5e813441Srillig  * Before 2023-08-02, lint did not interpret unnamed function parameters with
15*5e813441Srillig  * complicated types correctly. The named counterparts were no problem, though.
16732fd0a3Srillig  */
17*5e813441Srillig 
18732fd0a3Srillig void function_parameter(void *, double *(void *, int));
19*5e813441Srillig void function_parameter(void *fs, double *fn(void *, int));
20c3be8460Srillig 
21c3be8460Srillig 
225d41e58aSrillig /* expect+1: warning: struct 'last_arg' never defined [233] */
23c3be8460Srillig struct last_arg;
24c3be8460Srillig void last_arg_struct(double, double *(struct last_arg *));
25c3be8460Srillig void last_arg_struct(double d, double *fn(struct last_arg *));
26e6898815Srillig 
27e6898815Srillig 
28e6898815Srillig struct last_param {
29e6898815Srillig 	int member;
30e6898815Srillig };
31e6898815Srillig 
32e6898815Srillig void last_param(double, double *(struct last_param));
33e6898815Srillig void last_param(double d, double *fn(struct last_param));
34e6898815Srillig 
35*5e813441Srillig 
36*5e813441Srillig /* expect+1: previous declaration of 'mismatch' [260] */
37*5e813441Srillig void mismatch(double, double *(struct last_param));
38*5e813441Srillig /* expect+1: error: redeclaration of 'mismatch' with type 'function(double, pointer to function(struct last_param) returning pointer to float) returning void', expected 'function(double, pointer to function(struct last_param) returning pointer to double) returning void' [347] */
39*5e813441Srillig void mismatch(double d, float *fn(struct last_param));
40