Debian Patches

Status for rust-const-random-macro/0.1.16-2

Patch Description Author Forwarded Bugs Origin Last update
rustc-1.77.patch commit 618d64c2e0c3faa1acc5bf2cd2c7b7fa73b479e9

Fix `proc macro panicked` with `Invalid type` in `const_random!` in Rust 1.77.

With Rust nightly 1.77, any invocation of `const_random!` with a `u8`
array causes a compile-time panic. This can be seen when running `cargo
test`:
```
error: proc macro panicked
--> tests/tests.rs:52:28
|
52 | const VALUE1: &[u8] = &const_random!([u8; 30]);
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= help: message: Invalid type
```
This is because the proc macro starts by calling `to_string` on the
input token stream, and then uses substring matching to "parse" it. In
Rust 1.77 the `Display` impl for `TokenStream` has changed, and what
used to be converted to the string `"[u8 ; 30]"` is now `"[u8; 30]"`. As
a result, the `byte_array.starts_with("[u8 ; ")` call fails.

Note that substring matching is inherently flawed because the whitespace
in the output of `to_string` is not guaranteed.

This commit rewrites the proc macro to be robust in the face of
`to_string` whitespace changes, by iterating over the individual
`TokenTrees`s.

The commit also adds a comment explaining why `usize` and `isize` are
handled differently, because it's subtle.

Note: I ran `cargo fmt` within `macro/` to format the changes to
`macro/src/lib.rs` and it made some minor changes to `macro/src/span.rs`
as well.

diff --git macro/src/lib.rs macro/src/lib.rs
index f65695631..732028394 100644
Nicholas Nethercote <n.nethercote@gmail.com> no 2024-01-26

All known versions for source package 'rust-const-random-macro'

Links