xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_352.c (revision 9e211f359920a7b95ff05505ca6ee27fa088acb5)
1*9e211f35Srillig /*	$NetBSD: msg_352.c,v 1.3 2024/03/01 17:22:55 rillig Exp $	*/
2d0a5c1bcSrillig # 3 "msg_352.c"
3d0a5c1bcSrillig 
4*9e211f35Srillig // Test for message: nested 'extern' declaration of '%s' [352]
5d0a5c1bcSrillig 
6d0a5c1bcSrillig /*
7d0a5c1bcSrillig  * C allows to declare external functions or objects inside function bodies,
8d0a5c1bcSrillig  * which invites inconsistent types.
9d0a5c1bcSrillig  *
10d0a5c1bcSrillig  * Instead, any external functions or objects should be declared in headers.
11d0a5c1bcSrillig  */
12d0a5c1bcSrillig 
13e6298b92Srillig /* lint1-extra-flags: -X 351 */
14e6298b92Srillig 
15d0a5c1bcSrillig int
function(void)16d0a5c1bcSrillig function(void)
17d0a5c1bcSrillig {
18d0a5c1bcSrillig 	/* expect+1: warning: nested 'extern' declaration of 'external_func' [352] */
19d0a5c1bcSrillig 	extern int external_func(void);
20d0a5c1bcSrillig 	/* expect+1: warning: nested 'extern' declaration of 'external_var' [352] */
21d0a5c1bcSrillig 	extern int external_var;
22d0a5c1bcSrillig 
23d0a5c1bcSrillig 	return external_func() + external_var;
24d0a5c1bcSrillig }
25