/* $NetBSD: lsym_question.c,v 1.5 2023/05/15 10:13:40 rillig Exp $ */

/*
* Tests for the token lsym_question, which represents the '?' in a '?:'
* conditional expression.
*/

//indent input
const char *result = cond ? "then" : "else";

const char *multi = cond1 ? "cond1" : cond2 ? "cond2" : cond3 ? "cond3" : "";
//indent end

//indent run-equals-input -di0


/*
* To make them easier to read, conditional expressions can be split into
* multiple lines.
*/
//indent input
const char *separate_lines = cond
       ? "then"
       : "else";
//indent end

//indent run -di0
const char *separate_lines = cond
// $ XXX: Continuation lines in expressions should be indented, even in column 1.
? "then"
: "else";
//indent end


/*
* In functions, conditional expressions are indented as intended.
*/
//indent input
void
function(void)
{
       return cond
               ? "then"
               : "else";
}
//indent end

//indent run-equals-input


/*
* In functions, conditional expressions are indented as intended.
*/
//indent input
void
function(void)
{
       const char *branch = cond
               ? "then"
               : "else";

       const char *multiple_branches = cond1
               ? "then 1"
               : cond2
               ? "then 2"
               : "else";

       const char *condensed = cond1 ? "condensed 1"
               : cond2 ? "condensed 2"
               : "condensed else";
}
//indent end

//indent run-equals-input -di0