From 227cea949132c062088d067b9f6b7ea4be9e4d16 Mon Sep 17 00:00:00 2001 From: ilyalesokhin-starkware Date: Tue, 1 Oct 2024 14:32:57 +0300 Subject: [PATCH] Fix returned error array. (#6442) --- crates/cairo-lang-runner/src/casm_run/mod.rs | 12 +++++++++--- .../cairo_level_tests/interoperability.cairo | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/cairo-lang-runner/src/casm_run/mod.rs b/crates/cairo-lang-runner/src/casm_run/mod.rs index 0e14d928c1a..dd2b301f8ab 100644 --- a/crates/cairo-lang-runner/src/casm_run/mod.rs +++ b/crates/cairo-lang-runner/src/casm_run/mod.rs @@ -307,6 +307,12 @@ enum SyscallResult { } macro_rules! fail_syscall { + ([$reason1:expr, $reason2:expr]) => { + return Ok(SyscallResult::Failure(vec![ + Felt252::from_bytes_be_slice($reason1), + Felt252::from_bytes_be_slice($reason2), + ])) + }; ($reason:expr) => { return Ok(SyscallResult::Failure(vec![Felt252::from_bytes_be_slice($reason)])) }; @@ -1035,7 +1041,7 @@ impl<'a> CairoHintProcessor<'a> { // Get the class hash of the contract. let Some(class_hash) = self.starknet_state.deployed_contracts.get(&contract_address) else { - fail_syscall!(b"CONTRACT_NOT_DEPLOYED"); + fail_syscall!([b"CONTRACT_NOT_DEPLOYED", b"ENTRYPOINT_FAILED"]); }; // Prepare runner for running the ctor. @@ -1047,7 +1053,7 @@ impl<'a> CairoHintProcessor<'a> { // Call the function. let Some(entry_point) = contract_info.externals.get(&selector) else { - fail_syscall!(b"ENTRYPOINT_NOT_FOUND"); + fail_syscall!([b"ENTRYPOINT_NOT_FOUND", b"ENTRYPOINT_FAILED"]); }; let old_addrs = self.starknet_state.open_caller_context(( @@ -1085,7 +1091,7 @@ impl<'a> CairoHintProcessor<'a> { // Call the function. let Some(entry_point) = contract_info.externals.get(&selector) else { - fail_syscall!(b"ENTRYPOINT_NOT_FOUND"); + fail_syscall!([b"ENTRYPOINT_NOT_FOUND", b"ENTRYPOINT_FAILED"]); }; match self.call_entry_point(gas_counter, runner, entry_point, calldata, vm) { Ok((res_data_start, res_data_end)) => { diff --git a/crates/cairo-lang-starknet/cairo_level_tests/interoperability.cairo b/crates/cairo-lang-starknet/cairo_level_tests/interoperability.cairo index 055bb18b0ad..2892567fb0f 100644 --- a/crates/cairo-lang-starknet/cairo_level_tests/interoperability.cairo +++ b/crates/cairo-lang-starknet/cairo_level_tests/interoperability.cairo @@ -108,7 +108,7 @@ fn test_class_hash_not_found() { } #[test] -#[should_panic(expected: ('CONTRACT_NOT_DEPLOYED',))] +#[should_panic(expected: ('CONTRACT_NOT_DEPLOYED', 'ENTRYPOINT_FAILED',))] fn test_contract_not_deployed() { let mut contract = IContractDispatcher { contract_address: 5.try_into().unwrap() }; contract.foo(10);