refactor(governance): derive SelfDescribing for ManageNeuron nested types#9045
Conversation
There was a problem hiding this comment.
This pull request changes code owned by the Governance team. Therefore, make sure that
you have considered the following (for Governance-owned code):
-
Update
unreleased_changelog.md(if there are behavior changes, even if they are
non-breaking). -
Are there BREAKING changes?
-
Is a data migration needed?
-
Security review?
How to Satisfy This Automatic Review
-
Go to the bottom of the pull request page.
-
Look for where it says this bot is requesting changes.
-
Click the three dots to the right.
-
Select "Dismiss review".
-
In the text entry box, respond to each of the numbered items in the previous
section, declare one of the following:
-
Done.
-
$REASON_WHY_NO_NEED. E.g. for
unreleased_changelog.md, "No
canister behavior changes.", or for item 2, "Existing APIs
behave as before.".
Brief Guide to "Externally Visible" Changes
"Externally visible behavior change" is very often due to some NEW canister API.
Changes to EXISTING APIs are more likely to be "breaking".
If these changes are breaking, make sure that clients know how to migrate, how to
maintain their continuity of operations.
If your changes are behind a feature flag, then, do NOT add entrie(s) to
unreleased_changelog.md in this PR! But rather, add entrie(s) later, in the PR
that enables these changes in production.
Reference(s)
For a more comprehensive checklist, see here.
GOVERNANCE_CHECKLIST_REMINDER_DEDUP
b7428a8 to
765c566
Compare
f339da6 to
a007bea
Compare
a007bea to
a1675ed
Compare
…ypes (#9045) ## Why The `From<T> for SelfDescribingValue` impls for `ManageNeuron` nested types were hand-written boilerplate that simply listed each field. The `SelfDescribing` derive macro can generate these automatically. ## What - Added `SelfDescribing` derive to 12 `ManageNeuron` nested types (e.g., `IncreaseDissolveDelay`, `Split`, `Spawn`, `Merge`, etc.) and the `NeuronIdOrSubaccount` oneof in the protobuf generator config. - Removed the corresponding hand-written `From<T> for SelfDescribingValue` impls (~130 lines of boilerplate). - Updated test imports accordingly. ## Testing Existing unit tests cover the removed impls and verify the derive-generated versions produce equivalent output.
Why
The
From<T> for SelfDescribingValueimpls forManageNeuronnested typeswere hand-written boilerplate that simply listed each field. The
SelfDescribingderive macro can generate these automatically.What
SelfDescribingderive to 12ManageNeuronnested types(e.g.,
IncreaseDissolveDelay,Split,Spawn,Merge, etc.) andthe
NeuronIdOrSubaccountoneof in the protobuf generator config.From<T> for SelfDescribingValueimpls (~130 lines of boilerplate).
Testing
Existing unit tests cover the removed impls and verify the derive-generated
versions produce equivalent output.