mlugg 6026a5f217
compiler: ensure result of block_comptime is comptime-known
To avoid this PR regressing error messages, most of the work here has
gone towards improving error notes for why code was comptime-evaluated.
ZIR `block_comptime` now stores a "comptime reason", the enum for which
is also used by Sema. There are two types in Sema:

* `ComptimeReason` represents the reason we started evaluating something
  at comptime.
* `BlockComptimeReason` represents the reason a given block is evaluated
  at comptime; it's either a `ComptimeReason` with an attached source
  location, or it's because we're in a function which was called at
  comptime (and that function's `Block` should be consulted for the
  "parent" reason).

Every `Block` stores a `?BlockComptimeReason`. The old `is_comptime`
field is replaced with a trivial `isComptime()` method which returns
whether that reason is non-`null`.

Lastly, the handling for `block_comptime` has been simplified. It was
previously going through an unnecessary runtime-handling path; now, it
is a trivial sub block exited through a `break_inline` instruction.

Resolves: #22296
2024-12-31 09:55:03 +00:00
..
2024-12-16 20:56:29 -05:00
2024-12-19 17:10:03 -05:00
2024-12-15 03:40:20 -08:00
2024-02-23 02:37:11 -07:00
2024-07-23 11:43:12 -07:00
2024-07-09 14:25:42 -07:00
2024-03-10 18:13:30 -07:00
2024-08-22 08:44:08 +02:00
2024-08-29 20:39:11 +01:00
2024-03-21 14:11:46 -07:00
2024-11-01 02:04:27 +03:30
2024-08-07 00:48:32 -07:00
2024-11-25 14:18:55 -08:00
2024-07-31 16:57:42 -07:00
2024-11-22 15:30:07 -08:00
2024-07-19 00:30:32 -07:00
2024-07-19 00:30:32 -07:00
2024-08-29 23:43:52 +01:00
2024-07-09 14:25:42 -07:00
2024-10-23 13:47:44 -07:00
2024-12-13 13:24:38 +01:00
2024-06-17 16:12:19 -04:00