root/tests/usr.bin/xlint/lint1/lex_comment.c
/*      $NetBSD: lex_comment.c,v 1.3 2024/10/04 11:38:03 rillig Exp $   */
# 3 "lex_comment.c"

/*
 * Tests for comments, including lint-style comments that
 * suppress a single diagnostic.
 */

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

signed char s8;
signed long long s64;

// A "LINTED" comment suppresses a single warning until the end of the next
// statement.
void
lint_comment(void)
{
        /* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
        s8 = s64;

        /* LINTED 132 */
        s8 = s64;

        /* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
        s8 = s64;

        /* LINTED 132 "comment" */
        s8 = s64;

        /* LINTED 132 */
        {
        }
        /* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
        s8 = s64;

        /* LINTED 132 */
        {
                s8 = s64;
        }
        /* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
        s8 = s64;

        if (s8 == 0)
                ;
        /* LINTED 132 */
        s8 = s64;

        if (s8 == 0) {
        }
        /* LINTED 132 */
        s8 = s64;

        if (s8 == 0)
                ;
        else
                ;
        /* LINTED 132 */
        s8 = s64;

        if (s8 == 0) {
        } else {
        }
        /* LINTED 132 */
        s8 = s64;

        if (s8 == 0) {
        } else if (s8 == 1)
                ;
        /* LINTED 132 */
        s8 = s64;

        if (s8 == 0) {
        } else if (s8 == 1) {
        }
        /* LINTED 132 */
        s8 = s64;
}


/*
 * Before lex.c 1.41 from 2021-06-19, lint ran into an endless loop when it
 * saw an unclosed comment at the end of the translation unit.  In practice
 * this was not relevant since the translation unit always comes from the C
 * preprocessor, which always emits a well-formed token sequence.
 */

/* expect+2: error: unterminated comment [256] */
/* unclosed comment