msg_161.c revision 1.4
11.4Srillig/*	$NetBSD: msg_161.c,v 1.4 2021/01/31 12:44:34 rillig Exp $	*/
21.1Srillig# 3 "msg_161.c"
31.1Srillig
41.1Srillig// Test for message: constant in conditional context [161]
51.1Srillig
61.2Srillig/* lint1-extra-flags: -h */
71.2Srillig
81.2Srilligvoid
91.2Srilligwhile_1(void)
101.2Srillig{
111.3Srillig	while (1)		/* expect: 161 */
121.2Srillig		continue;
131.2Srillig}
141.2Srillig
151.2Srilligvoid
161.2Srilligwhile_0(void)
171.2Srillig{
181.3Srillig	while (0)		/* expect: 161 */
191.2Srillig		continue;
201.2Srillig}
211.2Srillig
221.2Srillig/*
231.2Srillig * The pattern 'do { } while (0)' is a common technique to define a
241.2Srillig * preprocessor macro that behaves like a single statement.  There is
251.2Srillig * nothing unusual or surprising about the constant condition.
261.4Srillig * Before tree.c 1.202 from 2021-01-31, lint warned about it.
271.2Srillig */
281.2Srilligvoid
291.2Srilligdo_while_0(void)
301.2Srillig{
311.2Srillig	do {
321.2Srillig
331.4Srillig	} while (0);
341.2Srillig}
351.2Srillig
361.2Srilligvoid
371.2Srilligdo_while_1(void)
381.2Srillig{
391.2Srillig	do {
401.2Srillig
411.3Srillig	} while (1);		/* expect: 161 */
421.2Srillig}
43