coral-xyz / anchor

⚓ Solana Sealevel Framework
https://anchor-lang.com
Apache License 2.0
3.36k stars 1.25k forks source link

bug: Generic structs error in the idl if they're populated with custom structs #3013

Closed cryptopapi997 closed 3 weeks ago

cryptopapi997 commented 3 weeks ago

The title says it all - if we do:

#[account]
struct MyAccount {
    data: GStruct<u32>,
}

#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
struct GStruct<T> {
    data: T,
}

the generated idl is fine and can be used. If we do

#[account]
struct MyAccount {
    data: GStruct<MyStruct>,
}

#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
struct GStruct<T> {
    data: T,
}

#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
struct MyStruct {
    data: u32,
}

the generated idl is unparsable. Might open a PR for this later, but in case I forget wanted to at least have the issue. MRE for this here: https://github.com/cryptopapi997/anchor-generics-mre

cryptopapi997 commented 3 weeks ago

Should be fixed by https://github.com/coral-xyz/anchor/pull/3016, feel free to take a look @acheroncrypto