Skip to content

Commit

Permalink
style(common): remove unwraps from production code (#1143)
Browse files Browse the repository at this point in the history
  • Loading branch information
yoavGrs authored Sep 10, 2023
1 parent 98be514 commit c3b1d77
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 50 deletions.
5 changes: 2 additions & 3 deletions crates/papyrus_base_layer/src/ethereum_base_layer_contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,9 @@ impl BaseLayerContract for EthereumBaseLayerContract {
.get_block_number()
.await?
.checked_sub(min_confirmations.unwrap_or(0).into());
if ethereum_block_number.is_none() {
let Some(ethereum_block_number) = ethereum_block_number else {
return Ok(None);
}
let ethereum_block_number = ethereum_block_number.unwrap();
};

let call_state_block_number =
self.contract.method::<_, I256>("stateBlockNumber", ())?.block(ethereum_block_number);
Expand Down
16 changes: 11 additions & 5 deletions crates/papyrus_common/src/transaction_hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,20 @@ use starknet_api::StarknetApiError;
use starknet_crypto::{pedersen_hash, FieldElement};

lazy_static! {
static ref DECLARE: StarkFelt = ascii_as_felt("declare").unwrap();
static ref DEPLOY: StarkFelt = ascii_as_felt("deploy").unwrap();
static ref DEPLOY_ACCOUNT: StarkFelt = ascii_as_felt("deploy_account").unwrap();
static ref INVOKE: StarkFelt = ascii_as_felt("invoke").unwrap();
static ref L1_HANDLER: StarkFelt = ascii_as_felt("l1_handler").unwrap();
static ref DECLARE: StarkFelt =
#[allow(clippy::unwrap_used)] ascii_as_felt("declare").unwrap();
static ref DEPLOY: StarkFelt =
#[allow(clippy::unwrap_used)] ascii_as_felt("deploy").unwrap();
static ref DEPLOY_ACCOUNT: StarkFelt =
#[allow(clippy::unwrap_used)] ascii_as_felt("deploy_account").unwrap();
static ref INVOKE: StarkFelt =
#[allow(clippy::unwrap_used)] ascii_as_felt("invoke").unwrap();
static ref L1_HANDLER: StarkFelt =
#[allow(clippy::unwrap_used)] ascii_as_felt("l1_handler").unwrap();
// The first 250 bits of the Keccak256 hash on "constructor".
// The correctness of this constant is enforced by a test.
static ref CONSTRUCTOR_ENTRY_POINT_SELECTOR: StarkFelt =
#[allow(clippy::unwrap_used)]
StarkFelt::try_from("0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194")
.unwrap();

Expand Down
10 changes: 6 additions & 4 deletions crates/papyrus_config/src/loading.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ pub fn load_and_process_config<T: for<'a> Deserialize<'a>>(
args: Vec<String>,
) -> Result<T, ConfigError> {
let deserialized_default_config: Map<String, Value> =
serde_json::from_reader(default_config_file).unwrap();
serde_json::from_reader(default_config_file)?;

// Store the pointers separately from the default values. The pointers will receive a value
// only at the end of the process.
Expand Down Expand Up @@ -123,8 +123,8 @@ pub(crate) fn update_config_map_by_custom_configs(
custom_config_paths: Values<PathBuf>,
) -> Result<(), ConfigError> {
for config_path in custom_config_paths {
let file = std::fs::File::open(config_path).unwrap();
let custom_config: Map<String, Value> = serde_json::from_reader(file).unwrap();
let file = std::fs::File::open(config_path)?;
let custom_config: Map<String, Value> = serde_json::from_reader(file)?;
for (param_path, json_value) in custom_config {
update_config_map(config_map, types_map, param_path.as_str(), json_value)?;
}
Expand Down Expand Up @@ -157,7 +157,9 @@ pub(crate) fn update_optional_values(config_map: &mut BTreeMap<ParamPath, Value>
.collect();
let mut none_params = vec![];
for optional_param in optional_params {
let value = config_map.remove(&format!("{optional_param}.{IS_NONE_MARK}")).unwrap();
let value = config_map
.remove(&format!("{optional_param}.{IS_NONE_MARK}"))
.expect("Not found optional param");
if value == json!(true) {
none_params.push(optional_param);
}
Expand Down
1 change: 1 addition & 0 deletions crates/papyrus_load_test/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![allow(clippy::unwrap_used)]
// config compiler to support no_coverage feature when running coverage in nightly mode within this
// crate
#![cfg_attr(coverage_nightly, feature(no_coverage))]
Expand Down
27 changes: 13 additions & 14 deletions crates/papyrus_rpc/src/v0_3_0/api/api_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -211,17 +211,15 @@ impl JsonRpcV0_3Server for JsonRpcServerV0_3Impl {
let header: BlockHeader = get_block_header_by_number(&txn, block_number)?;

// Get the old root.
let parent_block_number = get_block_number(
let old_root = match get_block_number(
&txn,
BlockId::HashOrNumber(BlockHashOrNumber::Hash(header.parent_hash)),
);
let mut old_root =
GlobalRoot(StarkHash::try_from(GENESIS_HASH).map_err(internal_server_error)?);
if parent_block_number.is_ok() {
let parent_header: BlockHeader =
get_block_header_by_number(&txn, parent_block_number.unwrap())?;
old_root = parent_header.new_root;
}
) {
Ok(parent_block_number) => {
get_block_header_by_number::<_, BlockHeader>(&txn, parent_block_number)?.new_root
}
Err(_) => GlobalRoot(StarkHash::try_from(GENESIS_HASH).map_err(internal_server_error)?),
};

// Get the block state diff.
let thin_state_diff = txn
Expand Down Expand Up @@ -406,11 +404,10 @@ impl JsonRpcV0_3Server for JsonRpcServerV0_3Impl {
filter.to_block.map_or(get_latest_block_number(&txn), |block_id| {
get_block_number(&txn, block_id).map(Some)
})?;
if maybe_to_block_number.is_none() {
let Some(to_block_number) = maybe_to_block_number else {
// There are no blocks.
return Ok(EventsChunk { events: vec![], continuation_token: None });
}
let to_block_number = maybe_to_block_number.unwrap();
};
if from_block_number > to_block_number {
return Ok(EventsChunk { events: vec![], continuation_token: None });
}
Expand Down Expand Up @@ -438,8 +435,10 @@ impl JsonRpcV0_3Server for JsonRpcServerV0_3Impl {
if block_number > to_block_number {
break;
}
if filter.address.is_some() && from_address != filter.address.unwrap() {
break;
if let Some(filter_address) = filter.address {
if from_address != filter_address {
break;
}
}
// TODO: Consider changing empty sets in the filer keys to None.
if filter.keys.iter().enumerate().all(|(i, keys)| {
Expand Down
2 changes: 1 addition & 1 deletion crates/papyrus_rpc/src/v0_3_0/deprecated_contract_class.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ impl TryFrom<starknet_api::deprecated_contract_class::ContractClass> for Contrac
program_value.as_object_mut().unwrap().remove("compiler_version");
}

let abi = if class.abi.is_none() { vec![] } else { class.abi.unwrap() };
let abi = class.abi.unwrap_or(vec![]);

Ok(Self {
abi,
Expand Down
27 changes: 13 additions & 14 deletions crates/papyrus_rpc/src/v0_4_0/api/api_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -264,17 +264,15 @@ impl JsonRpcV0_4Server for JsonRpcServerV0_4Impl {
let header: BlockHeader = get_block_header_by_number(&txn, block_number)?;

// Get the old root.
let parent_block_number = get_block_number(
let old_root = match get_block_number(
&txn,
BlockId::HashOrNumber(BlockHashOrNumber::Hash(header.parent_hash)),
);
let mut old_root =
GlobalRoot(StarkHash::try_from(GENESIS_HASH).map_err(internal_server_error)?);
if parent_block_number.is_ok() {
let parent_header: BlockHeader =
get_block_header_by_number(&txn, parent_block_number.unwrap())?;
old_root = parent_header.new_root;
}
) {
Ok(parent_block_number) => {
get_block_header_by_number::<_, BlockHeader>(&txn, parent_block_number)?.new_root
}
Err(_) => GlobalRoot(StarkHash::try_from(GENESIS_HASH).map_err(internal_server_error)?),
};

// Get the block state diff.
let thin_state_diff = txn
Expand Down Expand Up @@ -453,11 +451,10 @@ impl JsonRpcV0_4Server for JsonRpcServerV0_4Impl {
filter.to_block.map_or(get_latest_block_number(&txn), |block_id| {
get_block_number(&txn, block_id).map(Some)
})?;
if maybe_to_block_number.is_none() {
let Some(to_block_number) = maybe_to_block_number else {
// There are no blocks.
return Ok(EventsChunk { events: vec![], continuation_token: None });
}
let to_block_number = maybe_to_block_number.unwrap();
};
if from_block_number > to_block_number {
return Ok(EventsChunk { events: vec![], continuation_token: None });
}
Expand Down Expand Up @@ -485,8 +482,10 @@ impl JsonRpcV0_4Server for JsonRpcServerV0_4Impl {
if block_number > to_block_number {
break;
}
if filter.address.is_some() && from_address != filter.address.unwrap() {
break;
if let Some(filter_address) = filter.address {
if from_address != filter_address {
break;
}
}
// TODO: Consider changing empty sets in the filer keys to None.
if filter.keys.iter().enumerate().all(|(i, keys)| {
Expand Down
2 changes: 1 addition & 1 deletion crates/papyrus_rpc/src/v0_4_0/deprecated_contract_class.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ impl TryFrom<starknet_api::deprecated_contract_class::ContractClass> for Contrac
program_value.as_object_mut().unwrap().remove("compiler_version");
}

let abi = if class.abi.is_none() { vec![] } else { class.abi.unwrap() };
let abi = class.abi.unwrap_or(vec![]);

Ok(Self {
abi,
Expand Down
13 changes: 5 additions & 8 deletions crates/papyrus_storage/src/body/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,13 @@ pub trait EventsReader<'txn, 'env> {
impl<'txn, 'env> EventsReader<'txn, 'env> for StorageTxn<'env, RO> {
fn iter_events(
&'env self,
address: Option<ContractAddress>,
optional_address: Option<ContractAddress>,
event_index: EventIndex,
to_block_number: BlockNumber,
) -> StorageResult<EventIter<'txn, 'env>> {
if address.is_some() {
if let Some(address) = optional_address {
return Ok(EventIter::ByContractAddress(
self.iter_events_by_contract_address((address.unwrap(), event_index))?,
self.iter_events_by_contract_address((address, event_index))?,
));
}

Expand All @@ -120,14 +120,11 @@ impl Iterator for EventIter<'_, '_> {
type Item = EventsTableKeyValue;

fn next(&mut self) -> Option<Self::Item> {
let res = match self {
match self {
EventIter::ByContractAddress(it) => it.next(),
EventIter::ByEventIndex(it) => it.next(),
};
if res.is_err() {
return None;
}
res.unwrap()
.unwrap_or(None)
}
}

Expand Down
6 changes: 6 additions & 0 deletions crates/starknet_client/src/reader/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -229,31 +229,37 @@ impl StarknetReader for StarknetFeederGatewayClient {
// FIXME: Remove the following default CasmContractClass once integration environment gets
// regenesissed.
// Use default value for CasmConractClass that are malformed in the integration environment.
// TODO: Make this array a const.
if [
#[allow(clippy::unwrap_used)]
ClassHash(
starknet_api::hash::StarkFelt::try_from(
"0x4e70b19333ae94bd958625f7b61ce9eec631653597e68645e13780061b2136c",
)
.unwrap(),
),
#[allow(clippy::unwrap_used)]
ClassHash(
starknet_api::hash::StarkFelt::try_from(
"0x6208b3f9f94e6220f3d6a3562fe06a35a66181a202d946c3522fd28eda9ea1b",
)
.unwrap(),
),
#[allow(clippy::unwrap_used)]
ClassHash(
starknet_api::hash::StarkFelt::try_from(
"0xd6916ff38c93f834e7223a95b41d4542152d8288ff388b5d3dcdf8126a784a",
)
.unwrap(),
),
#[allow(clippy::unwrap_used)]
ClassHash(
starknet_api::hash::StarkFelt::try_from(
"0x161354521d46ca89a5b64aa41fa4e77ffeadc0f9796272d9b94227dbbb3840e",
)
.unwrap(),
),
#[allow(clippy::unwrap_used)]
ClassHash(
starknet_api::hash::StarkFelt::try_from(
"0x6a9eb910b3f83989900c8d65f9d67d67016f2528cc1b834019cf489f4f7d716",
Expand Down
1 change: 1 addition & 0 deletions crates/test_utils/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#![allow(clippy::unwrap_used)]
#[cfg(test)]
mod precision_test;

Expand Down

0 comments on commit c3b1d77

Please sign in to comment.