root/tests/usr.bin/indent/opt_lp.c
/* $NetBSD: opt_lp.c,v 1.10 2023/06/09 06:36:58 rillig Exp $ */

/*
 * Tests for the options '-lp' and '-nlp'.
 *
 * The option '-lp' lines up code surrounded by parentheses in continuation
 * lines. With '-lp', if a line has a left parenthesis that is not closed on
 * that line, continuation lines are lined up to start at the character
 * position just after the left parenthesis.
 *
 * The option '-nlp' indents continuation lines with the continuation
 * indentation; see '-ci'.
 */

//indent input
void
example(void)
{
        p1 = first_procedure(second_procedure(p2, p3),
            third_procedure(p4, p5));

        p1 = first_procedure(second_procedure(p2,
            p3),
            third_procedure(p4,
                p5));

        p1 = first_procedure(
         second_procedure(p2, p3),
         third_procedure(p4, p5));
}
//indent end

//indent run -lp
void
example(void)
{
        p1 = first_procedure(second_procedure(p2, p3),
                             third_procedure(p4, p5));

        p1 = first_procedure(second_procedure(p2,
                                              p3),
                             third_procedure(p4,
                                             p5));

        p1 = first_procedure(
                             second_procedure(p2, p3),
                             third_procedure(p4, p5));
}
//indent end

//indent run -nlp
void
example(void)
{
        p1 = first_procedure(second_procedure(p2, p3),
                third_procedure(p4, p5));

        p1 = first_procedure(second_procedure(p2,
                        p3),
                third_procedure(p4,
                        p5));

        p1 = first_procedure(
                second_procedure(p2, p3),
                third_procedure(p4, p5));
}
//indent end

//indent run -nlp -ci4
void
example(void)
{
        p1 = first_procedure(second_procedure(p2, p3),
            third_procedure(p4, p5));

        p1 = first_procedure(second_procedure(p2,
                p3),
            third_procedure(p4,
                p5));

        p1 = first_procedure(
            second_procedure(p2, p3),
            third_procedure(p4, p5));
}
//indent end


/*
 * Ensure that in multi-line else-if conditions, all lines are indented by the
 * correct amount.  The 'else if' condition is tricky because it has the same
 * indentation as the preceding 'if' condition.
 */
//indent input
{
if (cond11a
&& cond11b
&& cond11c) {
stmt11;
} else if (cond12a
&& cond12b
&& cond12c) {
stmt12;
}
}

{
if (cond21a
&& cond21b
&& cond21c)
stmt21;
else if (cond22a
&& cond22b
&& cond22c)
stmt22;
}
//indent end

//indent run -ci4 -nlp
{
        if (cond11a
            && cond11b
            && cond11c) {
                stmt11;
        } else if (cond12a
            && cond12b
            && cond12c) {
                stmt12;
        }
}

{
        if (cond21a
            && cond21b
            && cond21c)
                stmt21;
        else if (cond22a
            && cond22b
            && cond22c)
                stmt22;
}
//indent end