generated from codama-idl/renderers-demo
-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
Problem 1
When an IDL contains event types with "type": "[u8, 32]" fields, the generated Rust code fails to compile:
mismatched types expected reference &u8 found reference &[u8; 32] (rustc E0308) hint: Actual error occurred here
pub padding0: [u8; 32],{
"name": "padding_0",
"type": { "array": ["u8", 32] }
}Problem 2
Rust codegen removes "_" character from fields. This can lead to duplicate field issues when a badly written Anchor program has two fields in the same account "padding_0" and "_padding_0":
pub struct MeteoraDammMigrationMetadata {
pub discriminator: [u8; 8],
...
/// !!! BE CAREFUL to use tomestone field, previous is pool creator
pub padding0: [u8; 32],
...
/// padding
pub padding0: u8,
...{
"name": "padding_0",
"type": { "array": ["u8", 32] }
}
...
{ "name": "_padding_0", "docs": ["padding"], "type": "u8" },Solution
Codegen with correct types and allow "_" character if its index 0 of a field name.
Workaround
Manually changed field name in IDL, however you shouldn't have to do this in the first place.
IDL and Program
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
https://solscan.io/account/dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN#programIdl
Metadata
Metadata
Assignees
Labels
No labels