agra
a049e2940c
ERR/E2.1b: value-carrying failable consumers (try / catch)
...
The consumer side of the error-channel tuple ABI. A value-carrying `-> (T, !E)`
failable can now be consumed by `try` and `catch` (not just destructured).
Single-value; multi-value `-> (T1, T2, !)` consumers bail (E2).
- lowerTry: a value-carrying callee returns `{v, err}`. Extract `err`
(tuple_get field 1), branch; on success the try value is `tuple_get(field 0)`,
on error propagate via emitErrorReturn (pure caller → `ret(tag)`;
value-carrying caller → `ret {undef..., tag}`). Widening now runs for
value-carrying callees too. Retires the two value-carrying bails.
- lowerCatch: a value-carrying LHS merges through a block-param phi — the
success edge feeds `tuple_get(field 0)`, the handler edge feeds the body's
value (coerced to the success type). runCatchBody factors the bound-tag body
lowering (force_block_value for the value case). Pure-failable catch
unchanged.
- A non-diverging value-carrying catch body that yields no value is now a
clean diagnostic ("`catch` body must produce a value … or diverge") instead
of coercing `void` into a bad ref / failing LLVM verification — caught by an
adversarial review of the lowering.
Tests: examples/229-value-failable-consume.sx (try in value-carrying + pure
callers, catch block/bare/match-body/diverging bodies; exit 32),
examples/230-value-failable-reject.sx (void catch body rejected; exit 1).
Gates: zig build, zig build test, 268/268 examples.
2026-05-31 22:05:44 +03:00
..
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-03-06 10:46:28 +02:00
2026-05-30 17:36:35 +03:00
2026-05-29 12:33:27 +03:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-14 13:17:22 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-24 15:10:02 +02:00
2026-05-24 22:59:20 +03:00
2026-02-24 17:37:52 +02:00
2026-05-28 14:02:10 +03:00
2026-02-11 14:22:25 +02:00
2026-02-09 18:07:41 +02:00
2026-02-24 17:37:52 +02:00
2026-02-14 13:17:22 +02:00
2026-02-09 18:07:41 +02:00
2026-02-11 13:03:04 +02:00
2026-05-27 21:30:48 +03:00
2026-05-27 21:30:48 +03:00
2026-02-14 14:52:39 +02:00
2026-02-24 17:37:52 +02:00
2026-02-16 01:13:34 +02:00
2026-02-24 06:20:38 +02:00
2026-02-11 01:05:21 +02:00
2026-02-22 22:16:30 +02:00
2026-02-11 20:41:43 +02:00
2026-02-26 02:25:02 +02:00
2026-02-12 12:27:35 +02:00
2026-02-14 13:17:22 +02:00
2026-02-14 14:52:39 +02:00
2026-05-24 22:59:20 +03:00
2026-02-22 22:16:30 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-24 17:37:52 +02:00
2026-02-25 15:51:22 +02:00
2026-03-02 21:00:55 +02:00
2026-05-27 21:30:48 +03:00
2026-03-04 17:12:56 +02:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 17:46:17 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-24 22:59:20 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-19 12:06:08 +03:00
2026-05-19 12:06:08 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-27 00:34:26 +03:00
2026-05-25 08:41:50 +03:00
2026-05-18 18:32:55 +03:00
2026-05-24 22:59:20 +03:00
2026-05-19 00:22:35 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 19:18:31 +03:00
2026-05-19 21:14:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-27 21:30:48 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-23 01:28:32 +03:00
2026-05-24 22:59:20 +03:00
2026-05-25 15:33:28 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-25 15:23:13 +03:00
2026-05-25 09:50:37 +03:00
2026-05-25 11:41:59 +03:00
2026-05-25 12:18:27 +03:00
2026-05-25 15:01:58 +03:00
2026-05-25 15:33:28 +03:00
2026-05-25 15:45:33 +03:00
2026-05-25 15:59:32 +03:00
2026-05-25 17:52:53 +03:00
2026-05-25 21:15:44 +03:00
2026-05-25 21:16:32 +03:00
2026-05-25 21:33:20 +03:00
2026-05-25 22:08:23 +03:00
2026-05-25 22:14:31 +03:00
2026-05-25 22:23:59 +03:00
2026-05-25 22:58:20 +03:00
2026-05-25 23:17:30 +03:00
2026-05-25 23:25:13 +03:00
2026-05-25 23:33:52 +03:00
2026-05-25 23:40:51 +03:00
2026-05-25 23:43:46 +03:00
2026-05-27 09:49:41 +03:00
2026-05-26 01:45:21 +03:00
2026-05-26 01:49:31 +03:00
2026-05-26 01:56:25 +03:00
2026-05-27 12:09:04 +03:00
2026-05-27 12:50:23 +03:00
2026-05-27 13:49:44 +03:00
2026-05-27 14:52:43 +03:00
2026-05-27 15:44:05 +03:00
2026-05-27 16:22:49 +03:00
2026-05-27 16:34:26 +03:00
2026-05-27 16:34:26 +03:00
2026-05-30 02:09:41 +03:00
2026-05-31 10:57:21 +03:00
2026-05-27 16:43:04 +03:00
2026-05-27 17:20:37 +03:00
2026-05-27 17:23:47 +03:00
2026-05-27 17:26:27 +03:00
2026-05-27 17:48:39 +03:00
2026-05-27 18:52:41 +03:00
2026-05-27 19:05:16 +03:00
2026-05-27 19:19:32 +03:00
2026-05-27 19:20:54 +03:00
2026-05-27 21:09:25 +03:00
2026-05-27 21:29:08 +03:00
2026-05-27 21:44:39 +03:00
2026-05-27 21:48:10 +03:00
2026-05-27 21:57:47 +03:00
2026-05-28 07:50:59 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:08:54 +03:00
2026-05-28 12:14:52 +03:00
2026-05-28 12:14:52 +03:00
2026-05-28 12:14:52 +03:00
2026-05-28 12:14:52 +03:00
2026-05-28 12:14:52 +03:00
2026-05-28 12:14:52 +03:00
2026-05-28 12:17:49 +03:00
2026-05-28 12:24:49 +03:00
2026-05-28 14:02:10 +03:00
2026-05-29 19:45:49 +03:00
2026-05-29 17:55:11 +03:00
2026-05-29 18:01:48 +03:00
2026-05-29 18:53:32 +03:00
2026-05-29 19:24:06 +03:00
2026-05-29 19:34:03 +03:00
2026-05-29 19:45:49 +03:00
2026-05-29 19:53:04 +03:00
2026-05-29 20:07:41 +03:00
2026-05-29 20:39:57 +03:00
2026-05-31 10:57:21 +03:00
2026-05-29 22:00:42 +03:00
2026-05-30 01:50:29 +03:00
2026-05-30 02:09:41 +03:00
2026-05-30 02:17:55 +03:00
2026-05-30 02:30:49 +03:00
2026-05-30 02:41:01 +03:00
2026-05-30 02:45:46 +03:00
2026-05-30 03:00:58 +03:00
2026-05-30 03:06:03 +03:00
2026-05-30 03:11:55 +03:00
2026-05-30 03:15:07 +03:00
2026-05-30 03:25:04 +03:00
2026-05-30 03:46:46 +03:00
2026-05-30 10:30:57 +03:00
2026-05-31 13:56:45 +03:00
2026-05-31 14:17:25 +03:00
2026-05-31 17:59:47 +03:00
2026-05-31 17:59:47 +03:00
2026-05-31 19:09:32 +03:00
2026-05-31 19:09:32 +03:00
2026-05-31 19:47:19 +03:00
2026-05-31 19:47:19 +03:00
2026-05-31 20:21:44 +03:00
2026-05-31 20:21:44 +03:00
2026-05-31 21:04:06 +03:00
2026-05-31 21:10:56 +03:00
2026-05-31 21:10:56 +03:00
2026-05-31 21:42:51 +03:00
2026-05-31 22:05:44 +03:00
2026-05-31 22:05:44 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-25 09:50:37 +03:00
2026-05-19 11:51:34 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 12:01:01 +03:00
2026-05-19 11:59:18 +03:00
2026-05-19 11:59:18 +03:00
2026-05-19 11:59:18 +03:00
2026-05-22 13:13:43 +03:00
2026-05-27 21:30:48 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 15:13:33 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-25 16:32:32 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 10:32:56 +03:00
2026-05-20 10:47:07 +03:00
2026-05-20 12:51:48 +03:00
2026-05-20 14:50:21 +03:00
2026-05-20 16:57:30 +03:00
2026-05-25 16:32:32 +03:00
2026-05-26 22:46:56 +03:00
2026-05-26 22:46:56 +03:00
2026-05-26 22:38:32 +03:00
2026-05-26 22:58:30 +03:00
2026-05-26 22:58:30 +03:00
2026-05-19 12:40:21 +03:00
2026-05-19 12:48:38 +03:00
2026-05-19 13:01:28 +03:00
2026-05-19 18:39:10 +03:00
2026-05-19 18:44:14 +03:00
2026-05-19 18:50:26 +03:00
2026-05-19 18:51:56 +03:00
2026-05-19 18:53:19 +03:00
2026-05-19 21:14:31 +03:00
2026-05-20 15:13:33 +03:00
2026-05-19 20:12:09 +03:00
2026-05-19 21:19:09 +03:00
2026-05-25 23:29:55 +03:00
2026-05-28 14:24:02 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:32:32 +03:00
2026-05-25 16:55:32 +03:00
2026-05-25 17:03:16 +03:00
2026-05-31 10:29:16 +03:00
2026-05-31 11:13:57 +03:00
2026-05-17 21:17:17 +03:00
2026-05-30 17:36:35 +03:00