On Tue Jun 16, 2026 at 4:24 PM BST, Gary Guo wrote:
> The `diff` parameter is needed currently because doctests want to override
> the line number. Simplify it by changing it to use `line!()`. Have doctests
> override `line!()` macro to achieve the current behavior.
>
> A few current doctests (or their invoked macros) require `line!()` to
> expand to literal; they're updated to use `::core::line!()` instead.

I've found a way to make `concat!()` still work by having a proc macro thats
does the compute at expansion time (which would eliminate the device_id/str.rs
changes). However, doing so would require the full `proc_macro_span` feature, as
it needs to use `.source()` to replicate the
behaviour of `line!()` (which returns the line number of the out-most
macro invocation, not just the caller one-level up).

Alternatively, this can be implemented by using `expand_expr` to invoke
`::core::line!()` itself, however that is also unstable.

Best,
Gary

>
> Signed-off-by: Gary Guo <[email protected]>
> ---
>  rust/kernel/device_id.rs    |  2 +-
>  rust/kernel/kunit.rs        |  8 ++++----
>  rust/kernel/str.rs          |  2 +-
>  rust/macros/kunit.rs        |  4 ++--
>  scripts/rustdoc_test_gen.rs | 16 ++++++++++++----
>  5 files changed, 20 insertions(+), 12 deletions(-)

Reply via email to