root/tests/usr.bin/indent/lsym_do.c
/* $NetBSD: lsym_do.c,v 1.10 2023/06/05 09:41:40 rillig Exp $ */

/*
 * Tests for the token lsym_do, which represents the keyword 'do' that starts
 * a 'do-while' loop.
 *
 * See also:
 *      psym_do.c
 *      psym_do_stmt.c
 *      C11 6.8.5               "Iteration statements"
 *      C11 6.8.5.2             "The 'do' statement"
 */

//indent input
void
function(void)
{
        do stmt();while(cond);
}
//indent end

//indent run
void
function(void)
{
        do
                stmt();
        while (cond);
}
//indent end


//indent input
void
else_do(int i)
{
        if (i > 0) return; else do {} while (0);
}
//indent end

//indent run
void
else_do(int i)
{
        if (i > 0)
                return;
        else
                do {
                } while (0);
}
//indent end


//indent input
void
variants(void)
{
        do stmt(); while (0);

        do { stmt(); } while (0);

        do /* comment */ stmt(); while (0);

        while (0) do {} while (0);
}
//indent end

//indent run
void
variants(void)
{
        do
                stmt();
        while (0);

        do {
                stmt();
        } while (0);

        do                      /* comment */
                stmt();
        while (0);

        while (0)
                do {
                } while (0);
}
//indent end

//indent run -bl
void
variants(void)
{
        do
                stmt();
        while (0);

        do
        {
                stmt();
        } while (0);

        do                      /* comment */
                stmt();
        while (0);

        while (0)
                do
                {
                } while (0);
}
//indent end


/* Ensure that the 'do' starts a line. */
//indent input
{
        /* */ do {} while (false);

        word do {} while (false);

        label: do {} while (false);
}
//indent end

//indent run
{
        /* */
        do {
        } while (false);

        word
        do {
        } while (false);

label:  do {
        } while (false);
}
//indent end

//indent run-equals-prev-output -sob