cue/parser: simplify else/fallback clause rules
Simplify the comprehension fallback clause rules:
- `else` is used only with single `if` or single `try` clause
- `fallback` is used for everything else (multiple clauses, for clauses, combinations)
This removes the ambiguity around which clauses require which keywords
and provides clearer semantics: `else` for binary choice, `fallback`
for all other cases.
Fixes:
- formatter and debug output now check ALL clauses for ForClause,
not just the first, ensuring correct keyword output for cases
like `if ... for ... fallback`
Updates:
- Parser validation logic simplified
- Error messages updated to reflect new rules
- Added comprehensive test cases for multi-clause combinations
(if-if-fallback, try-try-fallback, if-for-fallback)
- Updated specification and reference documentation
All tests pass.
Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I1297e93fd52ba7bc13d32baf3db58bbc00f2fd77
Reviewed-on: https://cue.gerrithub.io/c/cue-lang/cue/+/1231973
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>