xref: /netbsd/tests/usr.bin/xlint/lint1/msg_245.c (revision ea649623)
1*ea649623Srillig /*	$NetBSD: msg_245.c,v 1.6 2023/03/28 14:44:35 rillig Exp $	*/
2f42ea02bSrillig # 3 "msg_245.c"
3f42ea02bSrillig 
45f80ac5aSrillig // Test for message: incompatible structure pointers: '%s' '%s' '%s' [245]
5f42ea02bSrillig 
6*ea649623Srillig /* lint1-extra-flags: -X 351 */
7*ea649623Srillig 
8b87000caSrillig typedef struct tag_and_typedef_tag {
9b87000caSrillig 	int member;
10b87000caSrillig } tag_and_typedef_typedef;
11b87000caSrillig 
12b87000caSrillig struct only_tag {
13b87000caSrillig 	int member;
14b87000caSrillig };
15b87000caSrillig 
16b87000caSrillig typedef struct {
17b87000caSrillig 	int member;
18b87000caSrillig } only_typedef;
19b87000caSrillig 
20b87000caSrillig struct {
21b87000caSrillig 	int member;
22b87000caSrillig } unnamed;
23b87000caSrillig 
24b87000caSrillig void sink_bool(_Bool);
25b87000caSrillig 
26b87000caSrillig void
example(tag_and_typedef_typedef both,only_typedef only_typedef,struct only_tag only_tag)27b87000caSrillig example(tag_and_typedef_typedef both,
28b87000caSrillig 	only_typedef only_typedef,
29b87000caSrillig 	struct only_tag only_tag)
30b87000caSrillig {
31124b8797Srillig 	/* expect+1: warning: incompatible structure pointers: 'pointer to struct tag_and_typedef_tag' '==' 'pointer to struct only_tag' [245] */
32124b8797Srillig 	sink_bool(&both == &only_tag);
33124b8797Srillig 	/* expect+1: warning: incompatible structure pointers: 'pointer to struct tag_and_typedef_tag' '==' 'pointer to struct typedef only_typedef' [245] */
34124b8797Srillig 	sink_bool(&both == &only_typedef);
35124b8797Srillig 	/* expect+1: warning: incompatible structure pointers: 'pointer to struct tag_and_typedef_tag' '==' 'pointer to struct <unnamed>' [245] */
36124b8797Srillig 	sink_bool(&both == &unnamed);
37b87000caSrillig }
38