xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_211.c (revision 6f6b09ef952b87a8258c163a7c779f0a5bb252c4)
1*6f6b09efSrillig /*	$NetBSD: msg_211.c,v 1.7 2024/06/08 09:09:20 rillig Exp $	*/
2a0a15c14Srillig # 3 "msg_211.c"
3a0a15c14Srillig 
440a9b8fdSrillig // Test for message: function has return type '%s' but returns '%s' [211]
5a0a15c14Srillig 
6e6298b92Srillig /* lint1-extra-flags: -X 351 */
7e6298b92Srillig 
81678a18aSrillig struct str {
91678a18aSrillig 	int member;
101678a18aSrillig };
111678a18aSrillig 
121678a18aSrillig int
return_int(double dbl,void * ptr,struct str str)131678a18aSrillig return_int(double dbl, void *ptr, struct str str)
141678a18aSrillig {
151678a18aSrillig 	if (dbl > 0.0)
161678a18aSrillig 		return dbl;
171678a18aSrillig 	if (ptr != (void *)0)
1840a9b8fdSrillig 		/* expect+1: warning: illegal combination of integer 'int' and pointer 'pointer to void' [183] */
191678a18aSrillig 		return ptr;
201678a18aSrillig 	if (str.member > 0)
2140a9b8fdSrillig 		/* expect+1: error: function has return type 'int' but returns 'struct str' [211] */
221678a18aSrillig 		return str;
231678a18aSrillig 	return 3;
241678a18aSrillig }
25*6f6b09efSrillig 
26*6f6b09efSrillig enum A {
27*6f6b09efSrillig 	A
28*6f6b09efSrillig };
29*6f6b09efSrillig 
30*6f6b09efSrillig enum B {
31*6f6b09efSrillig 	B
32*6f6b09efSrillig };
33*6f6b09efSrillig 
34*6f6b09efSrillig enum A
return_enum(enum B arg)35*6f6b09efSrillig return_enum(enum B arg)
36*6f6b09efSrillig {
37*6f6b09efSrillig 	/* expect+1: warning: function has return type 'enum A' but returns 'enum B' [211] */
38*6f6b09efSrillig 	return arg;
39*6f6b09efSrillig }
40