Commit fe9f503
committed
cue: add fallback keyword for for comprehensions
Add support for the 'fallback' keyword in for comprehensions,
distinct from 'else' used with if/try comprehensions:
- 'for ... fallback { }' - when no iterations produce results
- 'if ... else { }' - binary true/false choice
- 'try ... else { }' - success/failure handling
This provides clearer semantics: 'else' implies binary choice
while 'fallback' indicates a default when no results are produced.
Changes:
- Add FALLBACK token to lexer
- Rename ElseClause to FallbackClause in AST
- Parser validates correct keyword per clause type
- Both keywords can still be used as field labels
- Update formatter and exporter for correct output
- Gate both else and fallback clauses behind @experiment(try)
- Undo spec changes to move them to the "holding" CL
Signed-off-by: Marcel van Lohuizen <[email protected]>
Change-Id: I3682486cd94f30bcfd3eba55b3f31dcdf3507542
Reviewed-on: https://cue.gerrithub.io/c/cue-lang/cue/+/1231630
Unity-Result: CUE porcuepine <[email protected]>
Reviewed-by: Daniel Martí <[email protected]>
TryBot-Result: CUEcueckoo <[email protected]>1 parent c76dc5a commit fe9f503
File tree
30 files changed
+686
-319
lines changed- cue
- ast
- astutil
- format
- parser
- testdata/comprehensions
- token
- doc
- ref
- specs/comprehension-else
- encoding/jsonschema
- internal
- astinternal
- ci/base
- core
- adt
- compile
- debug
- dep
- testdata
- export
- testdata/main
- walk
30 files changed
+686
-319
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
389 | 389 | | |
390 | 390 | | |
391 | 391 | | |
392 | | - | |
393 | | - | |
394 | | - | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
395 | 395 | | |
396 | 396 | | |
397 | 397 | | |
| |||
401 | 401 | | |
402 | 402 | | |
403 | 403 | | |
404 | | - | |
405 | | - | |
| 404 | + | |
| 405 | + | |
406 | 406 | | |
407 | 407 | | |
408 | 408 | | |
| |||
723 | 723 | | |
724 | 724 | | |
725 | 725 | | |
726 | | - | |
727 | | - | |
728 | | - | |
729 | | - | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
730 | 734 | | |
731 | 735 | | |
732 | 736 | | |
| |||
882 | 886 | | |
883 | 887 | | |
884 | 888 | | |
885 | | - | |
886 | | - | |
887 | | - | |
888 | | - | |
889 | | - | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | | - | |
895 | | - | |
896 | | - | |
897 | | - | |
898 | | - | |
899 | | - | |
900 | | - | |
901 | | - | |
902 | | - | |
903 | | - | |
904 | | - | |
905 | | - | |
906 | | - | |
907 | | - | |
908 | | - | |
909 | | - | |
910 | | - | |
911 | | - | |
912 | | - | |
913 | | - | |
914 | | - | |
915 | | - | |
916 | | - | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
917 | 921 | | |
918 | 922 | | |
919 | 923 | | |
| |||
943 | 947 | | |
944 | 948 | | |
945 | 949 | | |
946 | | - | |
947 | | - | |
948 | | - | |
949 | | - | |
950 | | - | |
951 | | - | |
952 | | - | |
953 | | - | |
954 | | - | |
955 | | - | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
956 | 960 | | |
957 | 961 | | |
958 | 962 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
479 | | - | |
| 479 | + | |
480 | 480 | | |
481 | 481 | | |
482 | 482 | | |
| |||
493 | 493 | | |
494 | 494 | | |
495 | 495 | | |
496 | | - | |
| 496 | + | |
497 | 497 | | |
498 | 498 | | |
499 | 499 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
380 | 380 | | |
381 | 381 | | |
382 | 382 | | |
383 | | - | |
| 383 | + | |
384 | 384 | | |
385 | | - | |
386 | | - | |
| 385 | + | |
| 386 | + | |
387 | 387 | | |
388 | 388 | | |
389 | 389 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
159 | | - | |
| 159 | + | |
160 | 160 | | |
161 | 161 | | |
162 | 162 | | |
| |||
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | | - | |
| 176 | + | |
177 | 177 | | |
178 | 178 | | |
179 | 179 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
254 | | - | |
255 | | - | |
256 | | - | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
257 | 264 | | |
258 | 265 | | |
259 | 266 | | |
| |||
497 | 504 | | |
498 | 505 | | |
499 | 506 | | |
500 | | - | |
501 | | - | |
502 | | - | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
503 | 517 | | |
504 | 518 | | |
505 | 519 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
866 | 866 | | |
867 | 867 | | |
868 | 868 | | |
869 | | - | |
870 | | - | |
871 | | - | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
872 | 875 | | |
873 | 876 | | |
874 | 877 | | |
875 | 878 | | |
876 | 879 | | |
877 | 880 | | |
878 | 881 | | |
879 | | - | |
880 | | - | |
881 | | - | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
882 | 885 | | |
883 | 886 | | |
884 | 887 | | |
| |||
950 | 953 | | |
951 | 954 | | |
952 | 955 | | |
953 | | - | |
| 956 | + | |
| 957 | + | |
954 | 958 | | |
955 | 959 | | |
956 | 960 | | |
| |||
1041 | 1045 | | |
1042 | 1046 | | |
1043 | 1047 | | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
1044 | 1052 | | |
1045 | 1053 | | |
1046 | 1054 | | |
| |||
1231 | 1239 | | |
1232 | 1240 | | |
1233 | 1241 | | |
1234 | | - | |
1235 | | - | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
1236 | 1247 | | |
1237 | | - | |
| 1248 | + | |
1238 | 1249 | | |
1239 | 1250 | | |
1240 | | - | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
| 1267 | + | |
1241 | 1268 | | |
1242 | | - | |
1243 | | - | |
1244 | | - | |
1245 | | - | |
| 1269 | + | |
| 1270 | + | |
| 1271 | + | |
| 1272 | + | |
1246 | 1273 | | |
1247 | 1274 | | |
1248 | 1275 | | |
| |||
1366 | 1393 | | |
1367 | 1394 | | |
1368 | 1395 | | |
1369 | | - | |
1370 | | - | |
1371 | | - | |
| 1396 | + | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
1372 | 1402 | | |
1373 | 1403 | | |
1374 | 1404 | | |
1375 | 1405 | | |
1376 | 1406 | | |
1377 | 1407 | | |
1378 | 1408 | | |
1379 | | - | |
1380 | | - | |
1381 | | - | |
| 1409 | + | |
| 1410 | + | |
| 1411 | + | |
1382 | 1412 | | |
1383 | 1413 | | |
1384 | 1414 | | |
| |||
0 commit comments