Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Derive fails when using non-literal const generic default #2449

Closed
cmyr opened this issue May 9, 2023 · 1 comment · Fixed by dtolnay/syn#1483
Closed

Derive fails when using non-literal const generic default #2449

cmyr opened this issue May 9, 2023 · 1 comment · Fixed by dtolnay/syn#1483

Comments

@cmyr
Copy link

cmyr commented May 9, 2023

I imagine this is simplest with an illustration. The following code does not compile for me:

const MY_DEFAULT: usize = 4;

#[derive(serde::Deserialize)]
struct MyStruct<const N: usize = MY_DEFAULT>(bool);

but the following seems to be fine:

#[derive(serde::Deserialize)]
struct MyStruct<const N: usize = 4>(bool);

The error I see in the first case is that MY_DEFAULT is an unexpected token. I poked around the derive source here for a few minutes and didn't see anything jump out at me (it looks like syn parses this as an expression, not a literal, so it should at least parse?) but it looks like something isn't right.

If anyone has any insight, that would be much appreciated!

rustc 1.69.0 (84c898d65 2023-04-16)
serde v1.0.162

@oli-obk
Copy link
Member

oli-obk commented May 10, 2023

I think this is solely a syn bug

crapStone added a commit to Calciumdibromid/CaBr2 that referenced this issue Jul 10, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [serde](https://serde.rs) ([source](https://github.com/serde-rs/serde)) | dependencies | patch | `1.0.167` -> `1.0.171` |

---

### Release Notes

<details>
<summary>serde-rs/serde (serde)</summary>

### [`v1.0.171`](https://github.com/serde-rs/serde/releases/tag/v1.0.171)

[Compare Source](serde-rs/serde@v1.0.170...v1.0.171)

-   Support `derive(Deserialize)` on unit structs that have const generics ([#&#8203;2500](serde-rs/serde#2500), thanks [@&#8203;Baptistemontan](https://github.com/Baptistemontan))

### [`v1.0.170`](https://github.com/serde-rs/serde/releases/tag/v1.0.170)

[Compare Source](serde-rs/serde@v1.0.169...v1.0.170)

-   Produce error message on suffixed string literals inside serde attributes ([#&#8203;2242](serde-rs/serde#2242))
-   Support single identifier as unbraced default value for const generic parameter ([#&#8203;2449](serde-rs/serde#2449))

### [`v1.0.169`](https://github.com/serde-rs/serde/releases/tag/v1.0.169)

[Compare Source](serde-rs/serde@v1.0.168...v1.0.169)

-   Add Deserializer::deserialize_identifier support for adjacently tagged enums ([#&#8203;2475](serde-rs/serde#2475), thanks [@&#8203;Baptistemontan](https://github.com/Baptistemontan))
-   Fix unused_braces lint in generated Deserialize impl that uses braced const generic expressions ([#&#8203;2414](serde-rs/serde#2414))

### [`v1.0.168`](https://github.com/serde-rs/serde/releases/tag/v1.0.168)

[Compare Source](serde-rs/serde@v1.0.167...v1.0.168)

-   Allow `serde::de::IgnoredAny` to be the type for a `serde(flatten)` field ([#&#8203;2436](serde-rs/serde#2436), thanks [@&#8203;Mingun](https://github.com/Mingun))
-   Allow larger preallocated capacity for smaller elements ([#&#8203;2494](serde-rs/serde#2494))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi42LjAiLCJ1cGRhdGVkSW5WZXIiOiIzNi42LjAiLCJ0YXJnZXRCcmFuY2giOiJkZXZlbG9wIn0=-->

Co-authored-by: cabr2-bot <cabr2.help@gmail.com>
Co-authored-by: crapStone <crapstone01@gmail.com>
Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1959
Reviewed-by: crapStone <crapstone01@gmail.com>
Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

2 participants