1*a53894b6Srillig /* $NetBSD: msg_382.c,v 1.1 2024/07/10 20:33:38 rillig Exp $ */ 2*a53894b6Srillig # 3 "msg_382.c" 3*a53894b6Srillig 4*a53894b6Srillig // Test for message: constant assignment of type '%s' in operand of '!' always evaluates to '%s' [382] 5*a53894b6Srillig 6*a53894b6Srillig /* 7*a53894b6Srillig * Outside strict bool mode, an assignment can be used as a condition, but 8*a53894b6Srillig * that is generally wrong. Especially if a constant is assigned to a 9*a53894b6Srillig * variable, the condition always evaluates to that constant value, which 10*a53894b6Srillig * indicates a typo, as '==' makes more sense than '=' in a condition. 11*a53894b6Srillig */ 12*a53894b6Srillig 13*a53894b6Srillig /* lint1-extra-flags: -X 351 */ 14*a53894b6Srillig 15*a53894b6Srillig int 16*a53894b6Srillig /* expect+1: warning: parameter 'b' unused in function 'conversions' [231] */ conversions(int a,int b)17*a53894b6Srilligconversions(int a, int b) 18*a53894b6Srillig { 19*a53894b6Srillig /* expect+1: warning: constant assignment of type 'int' in operand of '!' always evaluates to 'true' [382] */ 20*a53894b6Srillig if (!(a = 13)) 21*a53894b6Srillig return 1; 22*a53894b6Srillig /* expect+1: warning: constant assignment of type 'int' in operand of '!' always evaluates to 'false' [382] */ 23*a53894b6Srillig if (!(b = 0)) 24*a53894b6Srillig return 2; 25*a53894b6Srillig if (!(a = a + 1)) 26*a53894b6Srillig return 3; 27*a53894b6Srillig return a; 28*a53894b6Srillig } 29