msg_159.c revision 1.6
11.6Srillig/* $NetBSD: msg_159.c,v 1.6 2023/04/22 17:30:35 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.5Srillig /* 161.5Srillig * Clang-Tidy marks a comparison with extra parentheses as an error, 171.5Srillig * expecting that assignments are parenthesized and comparisons 181.5Srillig * aren't. 191.5Srillig */ 201.4Srillig if ((a == b)) 211.4Srillig return "comparison, parenthesized"; 221.4Srillig 231.4Srillig if ( 241.6Srillig# 25 "msg_159.c" 3 4 251.4Srillig (a == b) 261.6Srillig# 27 "msg_159.c" 271.4Srillig ) 281.4Srillig return "comparison, parenthesized, from system header"; 291.4Srillig 301.4Srillig /* expect+1: warning: assignment in conditional context [159] */ 311.4Srillig if (a = b) 321.4Srillig return "assignment, not parenthesized"; 331.4Srillig 341.4Srillig /* 351.5Srillig * GCC established the convention that an assignment that is 361.5Srillig * parenthesized is intended as an assignment, so don't warn about 371.5Srillig * that case. 381.4Srillig */ 391.4Srillig if ((a = b)) 401.4Srillig return "assignment, parenthesized"; 411.4Srillig 421.4Srillig if ((a = b) != 0) 431.4Srillig return "explicit comparison after assignment"; 441.4Srillig 451.4Srillig return "other"; 461.4Srillig} 47