Files
rust/compiler
Nicholas Nethercote ae4fd17093 Streamline query modifier macros.
There are six small macros used in `define_callbacks` that all expand to
one thing if a particular query modifier is present, and to another
thing otherwise.

One of these macros looks for the `arena_cache` modifier:
- `query_if_arena`

Two of these macros look for the `return_result_from_ensure_ok`
modifier:
- `query_ensure_select`
- `ensure_ok_result`

Three of these macros look for the `separate_provide_extern` modifier:
- `local_key_if_separate_extern`
- `separate_provide_extern_decl`
- `separate_provide_extern_default`

(There is also `query_helper_param_ty!`, but it follows a different
pattern, and I will deal with it later.)

The "one thing"/"another thing" is different for every macro. For most
of them you can't see at the macro call site what the expansion will be;
you have to look at the macro definition. This is annoying.

This commit reduces the six macros into three macros:
- `if_arena_cache`
- `if_return_result_from_ensure_ok`
- `if_separate_provide_extern`

They all have the same form: they look for a modifier and then expand to
one *given* thing or the other *given* thing. You can see at the call
site the two possible expansions, which is much nicer. (Note:
`query_if_arena` already had this form.)

Ideally there would be a single macro instead of three, but I couldn't
work out a way to combine them.
2026-02-21 06:05:28 +11:00
..
2026-02-17 11:25:50 +00:00
2026-02-16 12:24:15 +00:00
2026-02-17 11:25:50 +00:00
2026-01-19 16:08:54 +00:00