msg_347.c revision 1.7
11.7Srillig/*	$NetBSD: msg_347.c,v 1.7 2023/08/02 21:11:35 rillig Exp $	*/
21.1Srillig# 3 "msg_347.c"
31.1Srillig
41.1Srillig// Test for message: redeclaration of '%s' with type '%s', expected '%s' [347]
51.1Srillig
61.5Srillig/* lint1-extra-flags: -r -X 351 */
71.1Srillig
81.1Srillig/*
91.1Srillig * Message 27 already covers redeclarations, but it doesn't include enough
101.1Srillig * details to make any sense of it.
111.1Srillig */
121.1Srillig
131.1Srillig/*
141.7Srillig * Before 2023-08-02, lint did not interpret unnamed function parameters with
151.7Srillig * complicated types correctly. The named counterparts were no problem, though.
161.1Srillig */
171.7Srillig
181.1Srilligvoid function_parameter(void *, double *(void *, int));
191.7Srilligvoid function_parameter(void *fs, double *fn(void *, int));
201.2Srillig
211.2Srillig
221.4Srillig/* expect+1: warning: struct 'last_arg' never defined [233] */
231.2Srilligstruct last_arg;
241.2Srilligvoid last_arg_struct(double, double *(struct last_arg *));
251.2Srilligvoid last_arg_struct(double d, double *fn(struct last_arg *));
261.3Srillig
271.3Srillig
281.3Srilligstruct last_param {
291.3Srillig	int member;
301.3Srillig};
311.3Srillig
321.3Srilligvoid last_param(double, double *(struct last_param));
331.7Srilligvoid last_param(double d, double *fn(struct last_param));
341.3Srillig
351.3Srillig
361.7Srillig/* expect+1: previous declaration of 'mismatch' [260] */
371.7Srilligvoid mismatch(double, double *(struct last_param));
381.7Srillig/* 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] */
391.7Srilligvoid mismatch(double d, float *fn(struct last_param));
40