Skip to content

Commit

Permalink
solitaire: Infer entry point argument type in solitaire! macro (wormh…
Browse files Browse the repository at this point in the history
…ole-foundation#927)

The type of the `ix_data` binding withing the solitaire! macro expansion
is explicitly annotated with its type, which comes from the macro's
pattern binding `$kind`. However, this type annotation is entirely
optional, since `ix_data` is passed in as an argument to `$fn`, whose
type forecs `ix_data` anyway, and rust will happily infer that from the
application. So we remove the explicit annotation which makes the entry
point macro easier to use.

commit-id:d428306c
  • Loading branch information
kcsongor authored Mar 16, 2022
1 parent b718225 commit f60acc5
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 36 deletions.
2 changes: 1 addition & 1 deletion solana/bridge/cpi_poster/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ pub use api::{
};

solitaire! {
PostMessage(PostMessageData) => post_message,
PostMessage => post_message,
}
16 changes: 8 additions & 8 deletions solana/bridge/program/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,12 @@ pub use vaa::{
};

solitaire! {
Initialize(InitializeData) => initialize,
PostMessage(PostMessageData) => post_message,
PostVAA(PostVAAData) => post_vaa,
SetFees(SetFeesData) => set_fees,
TransferFees(TransferFeesData) => transfer_fees,
UpgradeContract(UpgradeContractData) => upgrade_contract,
UpgradeGuardianSet(UpgradeGuardianSetData) => upgrade_guardian_set,
VerifySignatures(VerifySignaturesData) => verify_signatures,
Initialize => initialize,
PostMessage => post_message,
PostVAA => post_vaa,
SetFees => set_fees,
TransferFees => transfer_fees,
UpgradeContract => upgrade_contract,
UpgradeGuardianSet => upgrade_guardian_set,
VerifySignatures => verify_signatures,
}
6 changes: 3 additions & 3 deletions solana/bridge/program_stub/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ pub use api::{
use bridge::PostVAAData;

solitaire! {
Initialize(InitializeData) => initialize,
PostMessage(PostMessageData) => post_message,
PostVAA(PostVAAData) => post_vaa,
Initialize => initialize,
PostMessage => post_message,
PostVAA => post_vaa,
}
10 changes: 5 additions & 5 deletions solana/migration/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ impl From<MigrationError> for SolitaireError {
}

solitaire! {
AddLiquidity(AddLiquidityData) => add_liquidity,
RemoveLiquidity(RemoveLiquidityData) => remove_liquidity,
ClaimShares(ClaimSharesData) => claim_shares,
CreatePool(CreatePoolData) => create_pool,
MigrateTokens(MigrateTokensData) => migrate_tokens,
AddLiquidity => add_liquidity,
RemoveLiquidity => remove_liquidity,
ClaimShares => claim_shares,
CreatePool => create_pool,
MigrateTokens => migrate_tokens,
}
16 changes: 8 additions & 8 deletions solana/modules/nft_bridge/program/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,12 @@ impl From<TokenBridgeError> for SolitaireError {
}

solitaire! {
Initialize(InitializeData) => initialize,
CompleteNative(CompleteNativeData) => complete_native,
CompleteWrapped(CompleteWrappedData) => complete_wrapped,
CompleteWrappedMeta(CompleteWrappedMetaData) => complete_wrapped_meta,
TransferWrapped(TransferWrappedData) => transfer_wrapped,
TransferNative(TransferNativeData) => transfer_native,
RegisterChain(RegisterChainData) => register_chain,
UpgradeContract(UpgradeContractData) => upgrade_contract,
Initialize => initialize,
CompleteNative => complete_native,
CompleteWrapped => complete_wrapped,
CompleteWrappedMeta => complete_wrapped_meta,
TransferWrapped => transfer_wrapped,
TransferNative => transfer_native,
RegisterChain => register_chain,
UpgradeContract => upgrade_contract,
}
18 changes: 9 additions & 9 deletions solana/modules/token_bridge/program/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ impl From<TokenBridgeError> for SolitaireError {
}

solitaire! {
Initialize(InitializeData) => initialize,
AttestToken(AttestTokenData) => attest_token,
CompleteNative(CompleteNativeData) => complete_native,
CompleteWrapped(CompleteWrappedData) => complete_wrapped,
TransferWrapped(TransferWrappedData) => transfer_wrapped,
TransferNative(TransferNativeData) => transfer_native,
RegisterChain(RegisterChainData) => register_chain,
CreateWrapped(CreateWrappedData) => create_wrapped,
UpgradeContract(UpgradeContractData) => upgrade_contract,
Initialize => initialize,
AttestToken => attest_token,
CompleteNative => complete_native,
CompleteWrapped => complete_wrapped,
TransferWrapped => transfer_wrapped,
TransferNative => transfer_native,
RegisterChain => register_chain,
CreateWrapped => create_wrapped,
UpgradeContract => upgrade_contract,
}
4 changes: 2 additions & 2 deletions solana/solitaire/program/src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ macro_rules! trace_impl {
/// - A set of client calls scoped to the module `api` that can generate instructions.
#[macro_export]
macro_rules! solitaire {
{ $($row:ident($kind:ty) => $fn:ident),+ $(,)* } => {
{ $($row:ident => $fn:ident),+ $(,)* } => {
pub mod instruction {
use super::*;
use borsh::{
Expand Down Expand Up @@ -66,7 +66,7 @@ macro_rules! solitaire {

#[inline(never)]
pub fn execute<'a, 'b: 'a, 'c>(p: &Pubkey, a: &'c [AccountInfo<'b>], d: &[u8]) -> Result<()> {
let ix_data: $kind = BorshDeserialize::try_from_slice(d).map_err(|e| SolitaireError::InstructionDeserializeFailed(e))?;
let ix_data = BorshDeserialize::try_from_slice(d).map_err(|e| SolitaireError::InstructionDeserializeFailed(e))?;
let mut accounts = FromAccounts::from(p, &mut a.iter(), &())?;
$fn(&ExecutionContext{program_id: p, accounts: a}, &mut accounts, ix_data)?;
Persist::persist(&accounts, p)?;
Expand Down

0 comments on commit f60acc5

Please sign in to comment.