idl: Fix using Pubkey
constants with seeds::program
#3559
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Using
Pubkey
constants withseeds::program
:results in the following compile error:
This is because we don't have a reliable way to decide the seed expression's actual type inside macros. As a workaround, the IDL generation assumes the type to be
Pubkey
if the identifier ends withID
:anchor/lang/syn/src/idl/accounts.rs
Lines 369 to 378 in fa38102
However, this means if people don't append the
ID
suffix, it likely won't compile (e.g. #3558).Summary of changes
Fix using
Pubkey
constants withseeds::program
in IDL generation by usingAsRef::<[u8]>::as_ref
before usingInto::into
.Fixes #3558