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)131678a18aSrilligreturn_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*6f6b09efSrilligreturn_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