diff --git a/CHANGELOG.md b/CHANGELOG.md index 2347fe9b07..0a9077d5f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1341,3 +1341,9 @@ snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v #### Added - Initial release + +### Cast + +#### Changed + +- Error in case of redeclaration was improved. diff --git a/crates/sncast/src/response/errors.rs b/crates/sncast/src/response/errors.rs index de2a62955e..b836041c5a 100644 --- a/crates/sncast/src/response/errors.rs +++ b/crates/sncast/src/response/errors.rs @@ -2,6 +2,7 @@ use crate::{ErrorData, WaitForTransactionError, handle_rpc_error}; use anyhow::anyhow; use console::style; use conversions::serde::serialize::CairoSerialize; +use starknet_types_core::felt::Felt; use conversions::byte_array::ByteArray; @@ -51,6 +52,8 @@ pub enum StarknetCommandError { WaitForTransactionError(#[from] WaitForTransactionError), #[error(transparent)] ProviderError(#[from] SNCastProviderError), + #[error("Contract with class hash {0} is already declared on Starknet.")] + ClassAlreadyDeclared(Felt), } #[must_use] diff --git a/crates/sncast/src/starknet_commands/declare.rs b/crates/sncast/src/starknet_commands/declare.rs index 8c2525bfe8..b18aed5b93 100644 --- a/crates/sncast/src/starknet_commands/declare.rs +++ b/crates/sncast/src/starknet_commands/declare.rs @@ -135,7 +135,9 @@ pub async fn declare( class_hash: class_hash.into_(), })) } - Err(Provider(error)) => Err(StarknetCommandError::ProviderError(error.into())), + Err(Provider(ProviderError::StarknetError(StarknetError::ClassAlreadyDeclared))) => Err( + StarknetCommandError::ClassAlreadyDeclared(class_hash.into_()), + ), Err(error) => Err(anyhow!(format!("Unexpected error occurred: {error}")).into()), } } diff --git a/crates/sncast/tests/e2e/declare.rs b/crates/sncast/tests/e2e/declare.rs index 63faf15cb4..ad874c3817 100644 --- a/crates/sncast/tests/e2e/declare.rs +++ b/crates/sncast/tests/e2e/declare.rs @@ -245,7 +245,7 @@ async fn test_contract_already_declared() { output, indoc! {r" Command: declare - Error: Contract with the same class hash is already declared + Error: Contract with class hash 3108664225240562387851974058679424955795215347221665253736957753632123141297 is already declared on Starknet. "}, ); }