/* $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