Update programs using simple error mapping to use CustomError

This commit is contained in:
Tyera Eulberg 2019-03-11 14:50:31 -06:00 committed by Greg Fitzgerald
parent db5370c5df
commit 1a9ef37251
6 changed files with 12 additions and 8 deletions

1
Cargo.lock generated
View File

@ -2327,6 +2327,7 @@ dependencies = [
"bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "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)", "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 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-runtime 0.12.0",
"solana-sdk 0.12.0", "solana-sdk 0.12.0",
] ]

View File

@ -5,7 +5,7 @@ use log::*;
use solana_sdk::account::KeyedAccount; use solana_sdk::account::KeyedAccount;
use solana_sdk::native_program::ProgramError; use solana_sdk::native_program::ProgramError;
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use solana_sdk::solana_entrypoint; use solana_sdk::{custom_error, solana_entrypoint};
solana_entrypoint!(entrypoint); solana_entrypoint!(entrypoint);
fn entrypoint( fn entrypoint(
@ -18,5 +18,6 @@ fn entrypoint(
trace!("process_instruction: {:?}", data); trace!("process_instruction: {:?}", data);
trace!("keyed_accounts: {:?}", keyed_accounts); 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)))
} }

View File

@ -12,6 +12,7 @@ edition = "2018"
bincode = "1.1.2" bincode = "1.1.2"
log = "0.4.2" log = "0.4.2"
serde = "1.0.89" serde = "1.0.89"
serde_derive = "1.0.89"
solana-sdk = { path = "../../sdk", version = "0.12.0" } solana-sdk = { path = "../../sdk", version = "0.12.0" }
[dev-dependencies] [dev-dependencies]

View File

@ -1,5 +1,7 @@
use log::*; use log::*;
use serde_derive::Serialize;
use solana_sdk::account::KeyedAccount; use solana_sdk::account::KeyedAccount;
use solana_sdk::custom_error;
use solana_sdk::native_program::ProgramError; use solana_sdk::native_program::ProgramError;
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use solana_sdk::system_instruction::SystemInstruction; use solana_sdk::system_instruction::SystemInstruction;
@ -8,7 +10,7 @@ use solana_sdk::system_program;
const FROM_ACCOUNT_INDEX: usize = 0; const FROM_ACCOUNT_INDEX: usize = 0;
const TO_ACCOUNT_INDEX: usize = 1; const TO_ACCOUNT_INDEX: usize = 1;
#[derive(Debug, Clone, PartialEq)] #[derive(Serialize, Debug, Clone, PartialEq)]
enum SystemError { enum SystemError {
AccountAlreadyInUse, AccountAlreadyInUse,
ResultWithNegativeLamports, ResultWithNegativeLamports,
@ -96,11 +98,10 @@ pub fn entrypoint(
program_id, program_id,
} => create_system_account(keyed_accounts, lamports, space, &program_id).map_err(|e| { } => create_system_account(keyed_accounts, lamports, space, &program_id).map_err(|e| {
match e { match e {
SystemError::AccountAlreadyInUse => ProgramError::InvalidArgument,
SystemError::ResultWithNegativeLamports => { SystemError::ResultWithNegativeLamports => {
ProgramError::ResultWithNegativeLamports ProgramError::ResultWithNegativeLamports
} }
SystemError::SourceNotSystemAccount => ProgramError::InvalidArgument, e => ProgramError::CustomError(custom_error!(e)),
} }
}), }),
SystemInstruction::Assign { program_id } => { SystemInstruction::Assign { program_id } => {

View File

@ -2,7 +2,7 @@ use log::*;
use solana_sdk::account::KeyedAccount; use solana_sdk::account::KeyedAccount;
use solana_sdk::native_program::ProgramError; use solana_sdk::native_program::ProgramError;
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use solana_sdk::solana_entrypoint; use solana_sdk::{custom_error, solana_entrypoint};
mod token_program; mod token_program;
@ -17,6 +17,6 @@ fn entrypoint(
token_program::TokenProgram::process(program_id, info, input).map_err(|err| { token_program::TokenProgram::process(program_id, info, input).map_err(|err| {
error!("error: {:?}", err); error!("error: {:?}", err);
ProgramError::GenericError ProgramError::CustomError(custom_error!(err))
}) })
} }

View File

@ -5,7 +5,7 @@ use solana_sdk::account::KeyedAccount;
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use std; use std;
#[derive(Debug, PartialEq)] #[derive(Serialize, Debug, PartialEq)]
pub enum Error { pub enum Error {
InvalidArgument, InvalidArgument,
InsufficentFunds, InsufficentFunds,