msg_159.c revision 1.4
11.4Srillig/*	$NetBSD: msg_159.c,v 1.4 2022/07/06 21:13:13 rillig Exp $	*/
21.1Srillig# 3 "msg_159.c"
31.1Srillig
41.1Srillig// Test for message: assignment in conditional context [159]
51.1Srillig
61.4Srillig/* lint1-extra-flags: -h */
71.4Srillig
81.4Srilligconst char *
91.4Srilligexample(int a, int b)
101.4Srillig{
111.4Srillig
121.4Srillig	if (a == b)
131.4Srillig		return "comparison, not parenthesized";
141.4Srillig
151.4Srillig	if ((a == b))
161.4Srillig		return "comparison, parenthesized";
171.4Srillig
181.4Srillig	if (
191.4Srillig# 20 "msg_159.c" 3 4
201.4Srillig	    (a == b)
211.4Srillig# 22 "msg_159.c"
221.4Srillig	    )
231.4Srillig		return "comparison, parenthesized, from system header";
241.4Srillig
251.4Srillig	/* expect+1: warning: assignment in conditional context [159] */
261.4Srillig	if (a = b)
271.4Srillig		return "assignment, not parenthesized";
281.4Srillig
291.4Srillig	/*
301.4Srillig	 * XXX: GCC has the convention that an assignment that is
311.4Srillig	 * parenthesized is intended as an assignment.
321.4Srillig	 */
331.4Srillig	/* expect+1: warning: assignment in conditional context [159] */
341.4Srillig	if ((a = b))
351.4Srillig		return "assignment, parenthesized";
361.4Srillig
371.4Srillig	if ((a = b) != 0)
381.4Srillig		return "explicit comparison after assignment";
391.4Srillig
401.4Srillig	return "other";
411.4Srillig}
42