From 1a9ef372515652f2e1ce7f9d0b8728fb1e24c214 Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Mon, 11 Mar 2019 14:50:31 -0600 Subject: [PATCH] Update programs using simple error mapping to use CustomError --- Cargo.lock | 1 + programs/budget/src/lib.rs | 5 +++-- programs/system/Cargo.toml | 1 + programs/system/src/lib.rs | 7 ++++--- programs/token/src/lib.rs | 4 ++-- programs/token/src/token_program.rs | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dfab259d40..21f20e49d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2327,6 +2327,7 @@ dependencies = [ "bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "solana-runtime 0.12.0", "solana-sdk 0.12.0", ] diff --git a/programs/budget/src/lib.rs b/programs/budget/src/lib.rs index 7169fb4cc3..a5c4759d2d 100644 --- a/programs/budget/src/lib.rs +++ b/programs/budget/src/lib.rs @@ -5,7 +5,7 @@ use log::*; use solana_sdk::account::KeyedAccount; use solana_sdk::native_program::ProgramError; use solana_sdk::pubkey::Pubkey; -use solana_sdk::solana_entrypoint; +use solana_sdk::{custom_error, solana_entrypoint}; solana_entrypoint!(entrypoint); fn entrypoint( @@ -18,5 +18,6 @@ fn entrypoint( trace!("process_instruction: {:?}", data); trace!("keyed_accounts: {:?}", keyed_accounts); - process_instruction(program_id, keyed_accounts, data).map_err(|_| ProgramError::GenericError) + process_instruction(program_id, keyed_accounts, data) + .map_err(|e| ProgramError::CustomError(custom_error!(e))) } diff --git a/programs/system/Cargo.toml b/programs/system/Cargo.toml index 91a9af2f6d..7158bb194c 100644 --- a/programs/system/Cargo.toml +++ b/programs/system/Cargo.toml @@ -12,6 +12,7 @@ edition = "2018" bincode = "1.1.2" log = "0.4.2" serde = "1.0.89" +serde_derive = "1.0.89" solana-sdk = { path = "../../sdk", version = "0.12.0" } [dev-dependencies] diff --git a/programs/system/src/lib.rs b/programs/system/src/lib.rs index b3fe2798cf..163777d018 100644 --- a/programs/system/src/lib.rs +++ b/programs/system/src/lib.rs @@ -1,5 +1,7 @@ use log::*; +use serde_derive::Serialize; use solana_sdk::account::KeyedAccount; +use solana_sdk::custom_error; use solana_sdk::native_program::ProgramError; use solana_sdk::pubkey::Pubkey; use solana_sdk::system_instruction::SystemInstruction; @@ -8,7 +10,7 @@ use solana_sdk::system_program; const FROM_ACCOUNT_INDEX: usize = 0; const TO_ACCOUNT_INDEX: usize = 1; -#[derive(Debug, Clone, PartialEq)] +#[derive(Serialize, Debug, Clone, PartialEq)] enum SystemError { AccountAlreadyInUse, ResultWithNegativeLamports, @@ -96,11 +98,10 @@ pub fn entrypoint( program_id, } => create_system_account(keyed_accounts, lamports, space, &program_id).map_err(|e| { match e { - SystemError::AccountAlreadyInUse => ProgramError::InvalidArgument, SystemError::ResultWithNegativeLamports => { ProgramError::ResultWithNegativeLamports } - SystemError::SourceNotSystemAccount => ProgramError::InvalidArgument, + e => ProgramError::CustomError(custom_error!(e)), } }), SystemInstruction::Assign { program_id } => { diff --git a/programs/token/src/lib.rs b/programs/token/src/lib.rs index 4ad0667b67..97ea8fb766 100644 --- a/programs/token/src/lib.rs +++ b/programs/token/src/lib.rs @@ -2,7 +2,7 @@ use log::*; use solana_sdk::account::KeyedAccount; use solana_sdk::native_program::ProgramError; use solana_sdk::pubkey::Pubkey; -use solana_sdk::solana_entrypoint; +use solana_sdk::{custom_error, solana_entrypoint}; mod token_program; @@ -17,6 +17,6 @@ fn entrypoint( token_program::TokenProgram::process(program_id, info, input).map_err(|err| { error!("error: {:?}", err); - ProgramError::GenericError + ProgramError::CustomError(custom_error!(err)) }) } diff --git a/programs/token/src/token_program.rs b/programs/token/src/token_program.rs index e1a3b4db16..61f2671394 100644 --- a/programs/token/src/token_program.rs +++ b/programs/token/src/token_program.rs @@ -5,7 +5,7 @@ use solana_sdk::account::KeyedAccount; use solana_sdk::pubkey::Pubkey; use std; -#[derive(Debug, PartialEq)] +#[derive(Serialize, Debug, PartialEq)] pub enum Error { InvalidArgument, InsufficentFunds,