22
33use {
44 crate :: keys:: KeyMap ,
5- mollusk_svm_error:: error:: { MolluskError , MolluskPanic } ,
5+ mollusk_svm_error:: error:: MolluskError ,
66 solana_account:: { Account , AccountSharedData } ,
77 solana_instruction:: Instruction ,
88 solana_pubkey:: Pubkey ,
@@ -56,17 +56,22 @@ pub fn compile_transaction_accounts_for_instruction(
5656 key_map
5757 . keys ( )
5858 . map ( |key| {
59- if let Some ( stub_out_program_account) = & stub_out_program_account {
60- if instruction. program_id == * key {
61- return ( * key, stub_out_program_account ( ) . into ( ) ) ;
62- }
63- }
6459 let account = accounts
6560 . iter ( )
6661 . find ( |( k, _) | k == key)
67- . map ( |( _, account) | AccountSharedData :: from ( account. clone ( ) ) )
68- . or_panic_with ( MolluskError :: AccountMissing ( key) ) ;
69- ( * key, account)
62+ . map ( |( _, account) | AccountSharedData :: from ( account. clone ( ) ) ) ;
63+
64+ if let Some ( account) = account {
65+ ( * key, account)
66+ } else if let Some ( stub_out_program_account) = & stub_out_program_account {
67+ if instruction. program_id == * key {
68+ ( * key, stub_out_program_account ( ) . into ( ) )
69+ } else {
70+ panic ! ( "{}" , MolluskError :: AccountMissing ( key) )
71+ }
72+ } else {
73+ panic ! ( "{}" , MolluskError :: AccountMissing ( key) )
74+ }
7075 } )
7176 . collect ( )
7277}
@@ -80,17 +85,22 @@ pub fn compile_transaction_accounts(
8085 key_map
8186 . keys ( )
8287 . map ( |key| {
83- if let Some ( stub_out_program_account) = & stub_out_program_account {
84- if instructions. iter ( ) . any ( |ix| ix. program_id == * key) {
85- return ( * key, stub_out_program_account ( ) . into ( ) ) ;
86- }
87- }
8888 let account = accounts
8989 . iter ( )
9090 . find ( |( k, _) | k == key)
91- . map ( |( _, account) | AccountSharedData :: from ( account. clone ( ) ) )
92- . or_panic_with ( MolluskError :: AccountMissing ( key) ) ;
93- ( * key, account)
91+ . map ( |( _, account) | AccountSharedData :: from ( account. clone ( ) ) ) ;
92+
93+ if let Some ( account) = account {
94+ ( * key, account)
95+ } else if let Some ( stub_out_program_account) = & stub_out_program_account {
96+ if instructions. iter ( ) . any ( |ix| ix. program_id == * key) {
97+ ( * key, stub_out_program_account ( ) . into ( ) )
98+ } else {
99+ panic ! ( "{}" , MolluskError :: AccountMissing ( key) )
100+ }
101+ } else {
102+ panic ! ( "{}" , MolluskError :: AccountMissing ( key) )
103+ }
94104 } )
95105 . collect ( )
96106}
0 commit comments