root/tests/usr.bin/xlint/lint1/msg_159.c
/*      $NetBSD: msg_159.c,v 1.7 2023/07/07 19:45:22 rillig Exp $       */
# 3 "msg_159.c"

// Test for message: assignment in conditional context [159]

/* lint1-extra-flags: -h -X 351 */

const char *
example(int a, int b)
{

        if (a == b)
                return "comparison, not parenthesized";

        /*
         * Clang-Tidy marks a comparison with extra parentheses as an error,
         * expecting that assignments are parenthesized and comparisons
         * aren't.
         */
        if ((a == b))
                return "comparison, parenthesized";

        if (
# 25 "msg_159.c" 3 4
            (a == b)
# 27 "msg_159.c"
            )
                return "comparison, parenthesized, from system header";

        /* expect+1: warning: assignment in conditional context [159] */
        if (a = b)
                return "assignment, not parenthesized";

        /*
         * GCC established the convention that an assignment that is
         * parenthesized is intended as an assignment, so don't warn about
         * that case.
         */
        if ((a = b))
                return "assignment, parenthesized";

        if ((a = b) != 0)
                return "explicit comparison after assignment";

        return "other";
}