1*09166ed3Srillig /* $NetBSD: lsym_question.c,v 1.5 2023/05/15 10:13:40 rillig Exp $ */ 29ae26de1Srillig 39ae26de1Srillig /* 49ae26de1Srillig * Tests for the token lsym_question, which represents the '?' in a '?:' 59ae26de1Srillig * conditional expression. 69ae26de1Srillig */ 79ae26de1Srillig 847306038Srillig //indent input 9d15bc7b9Srillig const char *result = cond ? "then" : "else"; 10d15bc7b9Srillig 11d15bc7b9Srillig const char *multi = cond1 ? "cond1" : cond2 ? "cond2" : cond3 ? "cond3" : ""; 1247306038Srillig //indent end 13d15bc7b9Srillig 1447306038Srillig //indent run-equals-input -di0 15d15bc7b9Srillig 16d15bc7b9Srillig 17d15bc7b9Srillig /* 18d15bc7b9Srillig * To make them easier to read, conditional expressions can be split into 19d15bc7b9Srillig * multiple lines. 20d15bc7b9Srillig */ 2147306038Srillig //indent input 22d15bc7b9Srillig const char *separate_lines = cond 23d15bc7b9Srillig ? "then" 24d15bc7b9Srillig : "else"; 2547306038Srillig //indent end 26d15bc7b9Srillig 2747306038Srillig //indent run -di0 28d15bc7b9Srillig const char *separate_lines = cond 29d15bc7b9Srillig // $ XXX: Continuation lines in expressions should be indented, even in column 1. 30d15bc7b9Srillig ? "then" 31d15bc7b9Srillig : "else"; 3247306038Srillig //indent end 33d15bc7b9Srillig 34d15bc7b9Srillig 35d15bc7b9Srillig /* 36d15bc7b9Srillig * In functions, conditional expressions are indented as intended. 37d15bc7b9Srillig */ 3847306038Srillig //indent input 39d15bc7b9Srillig void function(void)40d15bc7b9Srilligfunction(void) 41d15bc7b9Srillig { 42d15bc7b9Srillig return cond 43d15bc7b9Srillig ? "then" 44d15bc7b9Srillig : "else"; 45d15bc7b9Srillig } 4647306038Srillig //indent end 479ae26de1Srillig 4847306038Srillig //indent run-equals-input 49d15bc7b9Srillig 50d15bc7b9Srillig 51d15bc7b9Srillig /* 52d15bc7b9Srillig * In functions, conditional expressions are indented as intended. 53d15bc7b9Srillig */ 5447306038Srillig //indent input 55d15bc7b9Srillig void function(void)56d15bc7b9Srilligfunction(void) 57d15bc7b9Srillig { 58d15bc7b9Srillig const char *branch = cond 59d15bc7b9Srillig ? "then" 60d15bc7b9Srillig : "else"; 61*09166ed3Srillig 62*09166ed3Srillig const char *multiple_branches = cond1 63*09166ed3Srillig ? "then 1" 64*09166ed3Srillig : cond2 65*09166ed3Srillig ? "then 2" 66*09166ed3Srillig : "else"; 67*09166ed3Srillig 68*09166ed3Srillig const char *condensed = cond1 ? "condensed 1" 69*09166ed3Srillig : cond2 ? "condensed 2" 70*09166ed3Srillig : "condensed else"; 71d15bc7b9Srillig } 7247306038Srillig //indent end 73d15bc7b9Srillig 7447306038Srillig //indent run-equals-input -di0 75