From 55fca464cce3baae34ef4b53c5cf9331d1176a59 Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Wed, 11 Oct 2023 17:53:04 -0400 Subject: [PATCH] fix: clippy and git-hooks --- .cargo-husky/hooks/pre-commit | 3 -- .cargo-husky/hooks/pre-push | 6 +++- .../tests/fixtures/test-wasms/udt/src/lib.rs | 3 +- cmd/soroban-rpc/lib/preflight/src/fees.rs | 33 +++++++++++-------- .../lib/preflight/src/ledger_storage.rs | 6 ++-- cmd/soroban-rpc/lib/preflight/src/lib.rs | 2 +- .../lib/preflight/src/preflight.rs | 5 ++- .../lib/preflight/src/state_expiration.rs | 2 +- 8 files changed, 34 insertions(+), 26 deletions(-) diff --git a/.cargo-husky/hooks/pre-commit b/.cargo-husky/hooks/pre-commit index d08d9f9ff..9ffe923d6 100755 --- a/.cargo-husky/hooks/pre-commit +++ b/.cargo-husky/hooks/pre-commit @@ -4,6 +4,3 @@ set -e echo '+cargo fmt --check' cargo fmt --check || (cargo fmt && exit 1) - -echo '+cargo run --bin doc-gen --features clap-markdown' -cargo run --bin doc-gen --features clap-markdown diff --git a/.cargo-husky/hooks/pre-push b/.cargo-husky/hooks/pre-push index 48102f655..9181ab3be 100755 --- a/.cargo-husky/hooks/pre-push +++ b/.cargo-husky/hooks/pre-push @@ -13,4 +13,8 @@ echo '+cargo clippy -- -Dwarnings -Dclippy::all -Dclippy::pedantic' cargo clippy --all -- -Dwarnings echo '+cargo test --all' -cargo test --all || (echo "might need to rebuild make build-snapshot` && exit 1) +cargo build +cargo test --all || (echo "might need to rebuild make build-snapshot" && exit 1) + +echo '+cargo run --bin doc-gen --features clap-markdown' +cargo run --bin doc-gen --features clap-markdown diff --git a/cmd/crates/soroban-test/tests/fixtures/test-wasms/udt/src/lib.rs b/cmd/crates/soroban-test/tests/fixtures/test-wasms/udt/src/lib.rs index ee0cc1375..695d8a7a3 100644 --- a/cmd/crates/soroban-test/tests/fixtures/test-wasms/udt/src/lib.rs +++ b/cmd/crates/soroban-test/tests/fixtures/test-wasms/udt/src/lib.rs @@ -34,6 +34,7 @@ pub struct Contract; #[contractimpl] impl Contract { + #[allow(clippy::unnecessary_fold)] pub fn add(a: UdtEnum, b: UdtEnum) -> i64 { let a = match a { UdtEnum::UdtA => 0, @@ -45,7 +46,7 @@ impl Contract { UdtEnum::UdtA => 0, UdtEnum::UdtB(udt) => udt.a + udt.b, UdtEnum::UdtC(val) => val as i64, - UdtEnum::UdtD(tup) => tup.0 + tup.1.iter().fold(0i64, |sum, i| sum + i), + UdtEnum::UdtD(tup) => tup.0 + tup.1.iter().sum::(), }; a + b } diff --git a/cmd/soroban-rpc/lib/preflight/src/fees.rs b/cmd/soroban-rpc/lib/preflight/src/fees.rs index 86d3a9b44..d30497700 100644 --- a/cmd/soroban-rpc/lib/preflight/src/fees.rs +++ b/cmd/soroban-rpc/lib/preflight/src/fees.rs @@ -27,12 +27,14 @@ use std::convert::{TryFrom, TryInto}; /// Serialize XDR size for any `ExpirationEntry` ledger entry. const EXPIRATION_ENTRY_SIZE: u32 = 48; +// TODO: this should perhaps be an new type +#[allow(clippy::too_many_arguments)] pub(crate) fn compute_host_function_transaction_data_and_min_fee( op: &InvokeHostFunctionOp, pre_storage: &LedgerStorage, post_storage: &Storage, budget: &Budget, - events: &Vec, + events: &[DiagnosticEvent], invocation_result: &ScVal, bucket_list_size: u64, current_ledger_seq: u32, @@ -127,8 +129,9 @@ fn estimate_max_transaction_size_for_operation( Ok(u32::try_from(envelope_size)?) } +#[allow(clippy::cast_possible_truncation)] fn calculate_host_function_soroban_resources( - ledger_changes: &Vec, + ledger_changes: &[LedgerEntryChange], footprint: &Footprint, budget: &Budget, ) -> Result { @@ -162,6 +165,7 @@ fn calculate_host_function_soroban_resources( }) } +#[allow(clippy::cast_possible_wrap)] fn get_fee_configurations( ledger_storage: &LedgerStorage, bucket_list_size: u64, @@ -232,18 +236,19 @@ fn get_fee_configurations( } // Calculate the implicit ExpirationEntry bytes that will be read for expirable LedgerEntries -fn calculate_expiration_entry_bytes(ledger_entries: &Vec) -> Result { - Ok(ledger_entries +fn calculate_expiration_entry_bytes(ledger_entries: &[LedgerKey]) -> u32 { + ledger_entries .iter() .map(|lk| match lk { LedgerKey::ContractData(_) | LedgerKey::ContractCode(_) => EXPIRATION_ENTRY_SIZE, _ => 0, }) - .sum()) + .sum() } +#[allow(clippy::cast_possible_truncation)] fn calculate_unmodified_ledger_entry_bytes( - ledger_entries: &Vec, + ledger_entries: &[LedgerKey], pre_storage: &LedgerStorage, include_expired: bool, ) -> Result { @@ -258,7 +263,7 @@ fn calculate_unmodified_ledger_entry_bytes( Ok(res as u32) } -fn calculate_contract_events_size_bytes(events: &Vec) -> Result { +fn calculate_contract_events_size_bytes(events: &[DiagnosticEvent]) -> Result { let mut res: u32 = 0; for e in events { if e.event.type_ != ContractEventType::Contract @@ -302,7 +307,7 @@ fn finalize_transaction_data_and_min_fee( .context("failed to obtain configuration settings from the network")?; let (non_refundable_fee, refundable_fee) = compute_transaction_resource_fee(transaction_resources, &fee_configuration); - let rent_fee = compute_rent_fee(&rent_changes, &rent_fee_configuration, current_ledger_seq); + let rent_fee = compute_rent_fee(rent_changes, &rent_fee_configuration, current_ledger_seq); let transaction_data = SorobanTransactionData { resources: soroban_resources, refundable_fee: refundable_fee + rent_fee, @@ -330,10 +335,10 @@ pub(crate) fn compute_bump_footprint_exp_transaction_data_and_min_fee( ) .context("cannot compute bump rent changes")?; - let expiration_bytes: u32 = calculate_expiration_entry_bytes(footprint.read_only.as_vec())?; + let expiration_bytes = calculate_expiration_entry_bytes(footprint.read_only.as_slice()); let unmodified_entry_bytes = calculate_unmodified_ledger_entry_bytes( - footprint.read_only.as_vec(), + footprint.read_only.as_slice(), ledger_storage, false, ) @@ -363,7 +368,7 @@ pub(crate) fn compute_bump_footprint_exp_transaction_data_and_min_fee( contract_events_size_bytes: 0, }; finalize_transaction_data_and_min_fee( - &ledger_storage, + ledger_storage, &transaction_resources, soroban_resources, &rent_changes, @@ -372,6 +377,7 @@ pub(crate) fn compute_bump_footprint_exp_transaction_data_and_min_fee( ) } +#[allow(clippy::cast_possible_truncation)] fn compute_bump_footprint_rent_changes( footprint: &LedgerFootprint, ledger_storage: &LedgerStorage, @@ -380,7 +386,7 @@ fn compute_bump_footprint_rent_changes( ) -> Result> { let mut rent_changes: Vec = Vec::with_capacity(footprint.read_only.len()); - for key in (&footprint).read_only.as_vec() { + for key in footprint.read_only.as_slice() { let unmodified_entry_and_expiration = ledger_storage .get(key, false) .with_context(|| format!("cannot find bump footprint ledger entry with key {key:?}"))?; @@ -426,7 +432,7 @@ pub(crate) fn compute_restore_footprint_transaction_data_and_min_fee( ) .context("cannot compute restore rent changes")?; - let expiration_bytes: u32 = calculate_expiration_entry_bytes(footprint.read_write.as_vec())?; + let expiration_bytes = calculate_expiration_entry_bytes(footprint.read_write.as_vec()); let write_bytes = calculate_unmodified_ledger_entry_bytes( footprint.read_write.as_vec(), ledger_storage, @@ -465,6 +471,7 @@ pub(crate) fn compute_restore_footprint_transaction_data_and_min_fee( ) } +#[allow(clippy::cast_possible_truncation)] fn compute_restore_footprint_rent_changes( footprint: &LedgerFootprint, ledger_storage: &LedgerStorage, diff --git a/cmd/soroban-rpc/lib/preflight/src/ledger_storage.rs b/cmd/soroban-rpc/lib/preflight/src/ledger_storage.rs index b000994c9..4eac57269 100644 --- a/cmd/soroban-rpc/lib/preflight/src/ledger_storage.rs +++ b/cmd/soroban-rpc/lib/preflight/src/ledger_storage.rs @@ -143,7 +143,7 @@ impl LedgerStorage { if res.xdr.is_null() { return Err(Error::NotFound); } - let v = from_c_xdr(res.clone()); + let v = from_c_xdr(res); unsafe { FreeGoXDR(res) }; Ok(v) } @@ -250,7 +250,7 @@ impl SnapshotSource for LedgerStorage { } let entry_and_expiration = ::get(self, key, false).map_err(HostError::from)?; - return Ok((entry_and_expiration.0.into(), entry_and_expiration.1)); + Ok((entry_and_expiration.0.into(), entry_and_expiration.1)) } fn has(&self, key: &Rc) -> Result { @@ -260,6 +260,6 @@ impl SnapshotSource for LedgerStorage { return Ok(false); } } - return result.map(|_| true); + result.map(|_| true) } } diff --git a/cmd/soroban-rpc/lib/preflight/src/lib.rs b/cmd/soroban-rpc/lib/preflight/src/lib.rs index 4df90fb64..18a1976a8 100644 --- a/cmd/soroban-rpc/lib/preflight/src/lib.rs +++ b/cmd/soroban-rpc/lib/preflight/src/lib.rs @@ -257,7 +257,7 @@ fn option_xdr_to_c(v: Option) -> CXDR { fn xdr_vec_to_c(v: Vec) -> CXDRVector { let c_v = v.into_iter().map(xdr_to_c).collect(); let (array, len) = vec_to_c_array(c_v); - return CXDRVector { array, len }; + CXDRVector { array, len } } fn string_to_c(str: String) -> *mut libc::c_char { diff --git a/cmd/soroban-rpc/lib/preflight/src/preflight.rs b/cmd/soroban-rpc/lib/preflight/src/preflight.rs index 6071f977f..c6c5ac0e4 100644 --- a/cmd/soroban-rpc/lib/preflight/src/preflight.rs +++ b/cmd/soroban-rpc/lib/preflight/src/preflight.rs @@ -209,7 +209,7 @@ fn host_events_to_diagnostic_events(events: &Events) -> Vec { } res } - +#[allow(clippy::cast_sign_loss)] fn get_budget_from_network_config_params(ledger_storage: &LedgerStorage) -> Result { let ConfigSettingEntry::ContractComputeV0(compute) = ledger_storage.get_configuration_setting(ConfigSettingId::ContractComputeV0)? @@ -228,10 +228,9 @@ fn get_budget_from_network_config_params(ledger_storage: &LedgerStorage) -> Resu else { bail!("unexpected config setting entry for CostParamsMemoryBytes key"); }; - let budget = Budget::try_from_configs( compute.tx_max_instructions as u64, - compute.tx_memory_limit as u64, + u64::from(compute.tx_memory_limit), cost_params_cpu, cost_params_memory, ) diff --git a/cmd/soroban-rpc/lib/preflight/src/state_expiration.rs b/cmd/soroban-rpc/lib/preflight/src/state_expiration.rs index d0c9bbff1..c5a485f1f 100644 --- a/cmd/soroban-rpc/lib/preflight/src/state_expiration.rs +++ b/cmd/soroban-rpc/lib/preflight/src/state_expiration.rs @@ -66,5 +66,5 @@ pub(crate) fn get_restored_ledger_sequence( current_ledger_seq: u32, min_persistent_entry_expiration: u32, ) -> u32 { - return current_ledger_seq + min_persistent_entry_expiration - 1; + current_ledger_seq + min_persistent_entry_expiration - 1 }