From 3cc24bcf1e66119101940286f0cd21ba39bd70bf Mon Sep 17 00:00:00 2001 From: Vito <5780819+Tapanito@users.noreply.github.com> Date: Wed, 24 Jun 2026 13:47:05 +0200 Subject: [PATCH] fix: post merge build errors --- src/libxrpl/ledger/helpers/VaultHelpers.cpp | 12 ++--- src/libxrpl/tx/invariants/VaultInvariant.cpp | 10 ++-- .../tx/transactors/vault/VaultWithdraw.cpp | 6 ++- src/test/app/Invariants_test.cpp | 48 +++++++++---------- src/test/app/VaultHelpers_test.cpp | 34 ++++++------- 5 files changed, 57 insertions(+), 53 deletions(-) diff --git a/src/libxrpl/ledger/helpers/VaultHelpers.cpp b/src/libxrpl/ledger/helpers/VaultHelpers.cpp index b1c2716489..5d0f76a361 100644 --- a/src/libxrpl/ledger/helpers/VaultHelpers.cpp +++ b/src/libxrpl/ledger/helpers/VaultHelpers.cpp @@ -353,7 +353,7 @@ computeDeposit( try { auto const shares = assetsToSharesDeposit(rules, vault, issuance, assets); - if (shares == beast::zero) + if (shares == beast::kZero) return std::unexpected(tecPRECISION_LOSS); auto const assetsOut = sharesToAssetsDeposit(rules, vault, issuance, shares); @@ -365,7 +365,7 @@ computeDeposit( // LCOV_EXCL_STOP } - return ExchangeResult{assetsOut, shares}; + return ExchangeResult{.assets = assetsOut, .shares = shares}; } catch (std::overflow_error const&) { @@ -408,11 +408,11 @@ computeWithdrawByAssets( try { auto const shares = assetsToSharesWithdraw(rules, vault, issuance, assets); - if (shares == beast::zero) + if (shares == beast::kZero) return std::unexpected(tecPRECISION_LOSS); auto const assetsOut = sharesToAssetsWithdraw(rules, vault, issuance, shares); - return ExchangeResult{assetsOut, shares}; + return ExchangeResult{.assets = assetsOut, .shares = shares}; } catch (std::overflow_error const&) { @@ -455,7 +455,7 @@ computeWithdrawByShares( try { auto const assets = sharesToAssetsWithdraw(rules, vault, issuance, shares); - return ExchangeResult{assets, shares}; + return ExchangeResult{.assets = assets, .shares = shares}; } catch (std::overflow_error const&) { @@ -520,7 +520,7 @@ computeClawback( } } - return ExchangeResult{assetsRecovered, sharesDestroyed}; + return ExchangeResult{.assets = assetsRecovered, .shares = sharesDestroyed}; } catch (std::overflow_error const&) { diff --git a/src/libxrpl/tx/invariants/VaultInvariant.cpp b/src/libxrpl/tx/invariants/VaultInvariant.cpp index cb8a34bd73..83f17a4f74 100644 --- a/src/libxrpl/tx/invariants/VaultInvariant.cpp +++ b/src/libxrpl/tx/invariants/VaultInvariant.cpp @@ -495,7 +495,7 @@ ValidVault::finalize( if (view.rules().enabled(featureLendingProtocolV1_1)) { - if (afterVault.interestUnrealized < zero) + if (afterVault.interestUnrealized < kZero) { JLOG(j.fatal()) << "Invariant failed: interest unrealized must be non-negative"; result = false; @@ -510,8 +510,8 @@ ValidVault::finalize( // Deposit net asset value = AssetsTotal - InterestUnrealized must be > 0 when vault // has assets. - if (afterVault.assetsTotal > zero && - afterVault.assetsTotal - afterVault.interestUnrealized <= zero) + if (afterVault.assetsTotal > kZero && + afterVault.assetsTotal - afterVault.interestUnrealized <= kZero) { JLOG(j.fatal()) << "Invariant failed: deposit net asset value must be positive"; result = false; @@ -520,14 +520,14 @@ ValidVault::finalize( // Withdrawal net asset value = AssetsTotal - InterestUnrealized - LossUnrealized // must not go negative. if (afterVault.assetsTotal - afterVault.interestUnrealized - afterVault.lossUnrealized < - zero) + kZero) { JLOG(j.fatal()) << "Invariant failed: withdrawal net asset value must not be negative"; result = false; } // If there's unrealized interest, shares must be outstanding. - if (updatedShares && afterVault.interestUnrealized > zero && + if (updatedShares && afterVault.interestUnrealized > kZero && updatedShares->sharesTotal == 0) { JLOG(j.fatal()) << "Invariant failed: interest unrealized with no outstanding shares"; diff --git a/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp b/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp index b009817a61..efaf25f5f2 100644 --- a/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp @@ -185,6 +185,9 @@ VaultWithdraw::doApply() // to deposit into it, and this means you are also indefinitely authorized // to withdraw from it. + STAmount assetsWithdrawn; + STAmount sharesRedeemed; + auto const amount = ctx_.tx[sfAmount]; Asset const vaultAsset = vault->at(sfAsset); @@ -200,7 +203,8 @@ VaultWithdraw::doApply() }(); if (!result) return result.error(); - auto const& [assetsWithdrawn, sharesRedeemed] = *result; + assetsWithdrawn = result.value().assets; + sharesRedeemed = result.value().shares; if (accountHolds( view(), accountID_, share, FreezeHandling::ZeroIfFrozen, AuthHandling::IgnoreAuth, j_) < diff --git a/src/test/app/Invariants_test.cpp b/src/test/app/Invariants_test.cpp index 365807162b..4ad78dc201 100644 --- a/src/test/app/Invariants_test.cpp +++ b/src/test/app/Invariants_test.cpp @@ -3356,9 +3356,9 @@ class Invariants_test : public beast::unit_test::Suite {"interest unrealized must be non-negative"}, [&](Account const& A1, Account const& A2, ApplyContext& ac) { auto const keylet = keylet::vault(A1.id(), ac.view().seq()); - adjust(ac.view(), keylet, args(A2.id(), 10, [](Adjustments& adj) { - adj.interestUnrealized = -1; - })); + kAdjust(ac.view(), keylet, kArgs(A2.id(), 10, [](Adjustments& adj) { + adj.interestUnrealized = -1; + })); return true; }, @@ -3375,10 +3375,10 @@ class Invariants_test : public beast::unit_test::Suite {"interest unrealized exceeds lent assets"}, [&](Account const& A1, Account const& A2, ApplyContext& ac) { auto const keylet = keylet::vault(A1.id(), ac.view().seq()); - adjust(ac.view(), keylet, args(A2.id(), 10, [](Adjustments& adj) { - adj.assetsAvailable = (DROPS_PER_XRP * -10).value(); - adj.interestUnrealized = (DROPS_PER_XRP * 20).value(); - })); + kAdjust(ac.view(), keylet, kArgs(A2.id(), 10, [](Adjustments& adj) { + adj.assetsAvailable = (kDropsPerXrp * -10).value(); + adj.interestUnrealized = (kDropsPerXrp * 20).value(); + })); return true; }, @@ -3394,10 +3394,10 @@ class Invariants_test : public beast::unit_test::Suite {"deposit net asset value must be positive"}, [&](Account const& A1, Account const& A2, ApplyContext& ac) { auto const keylet = keylet::vault(A1.id(), ac.view().seq()); - adjust(ac.view(), keylet, args(A2.id(), 10, [](Adjustments& adj) { - adj.assetsAvailable = (DROPS_PER_XRP * -20).value(); - adj.interestUnrealized = (DROPS_PER_XRP * 30 + 10).value(); - })); + kAdjust(ac.view(), keylet, kArgs(A2.id(), 10, [](Adjustments& adj) { + adj.assetsAvailable = (kDropsPerXrp * -20).value(); + adj.interestUnrealized = (kDropsPerXrp * 30 + 10).value(); + })); return true; }, @@ -3413,11 +3413,11 @@ class Invariants_test : public beast::unit_test::Suite {"withdrawal net asset value must not be negative"}, [&](Account const& A1, Account const& A2, ApplyContext& ac) { auto const keylet = keylet::vault(A1.id(), ac.view().seq()); - adjust(ac.view(), keylet, args(A2.id(), 10, [](Adjustments& adj) { - adj.assetsAvailable = (DROPS_PER_XRP * -20).value(); - adj.interestUnrealized = (DROPS_PER_XRP * 15).value(); - adj.lossUnrealized = (DROPS_PER_XRP * 20).value(); - })); + kAdjust(ac.view(), keylet, kArgs(A2.id(), 10, [](Adjustments& adj) { + adj.assetsAvailable = (kDropsPerXrp * -20).value(); + adj.interestUnrealized = (kDropsPerXrp * 15).value(); + adj.lossUnrealized = (kDropsPerXrp * 20).value(); + })); return true; }, @@ -3432,10 +3432,10 @@ class Invariants_test : public beast::unit_test::Suite {"interest unrealized with no outstanding shares"}, [&](Account const& A1, Account const& A2, ApplyContext& ac) { auto const keylet = keylet::vault(A1.id(), ac.view().seq()); - adjust(ac.view(), keylet, args(A2.id(), 10, [](Adjustments& adj) { - adj.assetsAvailable = (DROPS_PER_XRP * -10).value(); - adj.interestUnrealized = (DROPS_PER_XRP * 5).value(); - })); + kAdjust(ac.view(), keylet, kArgs(A2.id(), 10, [](Adjustments& adj) { + adj.assetsAvailable = (kDropsPerXrp * -10).value(); + adj.interestUnrealized = (kDropsPerXrp * 5).value(); + })); // Zero out shares auto sleVault = ac.view().peek(keylet); @@ -3459,10 +3459,10 @@ class Invariants_test : public beast::unit_test::Suite {"vault transaction must not change interest unrealized"}, [&](Account const& A1, Account const& A2, ApplyContext& ac) { auto const keylet = keylet::vault(A1.id(), ac.view().seq()); - adjust(ac.view(), keylet, args(A2.id(), 10, [](Adjustments& adj) { - adj.assetsAvailable = (DROPS_PER_XRP * -10).value(); - adj.interestUnrealized = (DROPS_PER_XRP * 5).value(); - })); + kAdjust(ac.view(), keylet, kArgs(A2.id(), 10, [](Adjustments& adj) { + adj.assetsAvailable = (kDropsPerXrp * -10).value(); + adj.interestUnrealized = (kDropsPerXrp * 5).value(); + })); return true; }, diff --git a/src/test/app/VaultHelpers_test.cpp b/src/test/app/VaultHelpers_test.cpp index 042253e3d8..e16173c38f 100644 --- a/src/test/app/VaultHelpers_test.cpp +++ b/src/test/app/VaultHelpers_test.cpp @@ -18,7 +18,7 @@ namespace xrpl { namespace test { -class VaultHelpers_test : public beast::unit_test::suite +class VaultHelpers_test : public beast::unit_test::Suite { jtx::Env* env_ = nullptr; AccountID const issuerID{0x2}; @@ -338,7 +338,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 0, .shareTotal = 100'000'000, .withdrawAssets = 50, - .truncate = TruncateShares::no, + .truncate = TruncateShares::No, // NAV = 100 .expectedShares = shares(Number{100'000'000LL * 50} / 100), }, @@ -349,7 +349,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 3, .shareTotal = 10, .withdrawAssets = 1, - .truncate = TruncateShares::yes, + .truncate = TruncateShares::Yes, // NAV = 7; shares = floor(10 * 1 / 7) .expectedShares = shares(Number{(10 * 1) / 7}.truncate()), }, @@ -360,7 +360,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 3, .shareTotal = 10, .withdrawAssets = Number{11, -1}, - .truncate = TruncateShares::yes, + .truncate = TruncateShares::Yes, // NAV = 7; shares = floor(10 * 1.1 / 7) .expectedShares = shares(((Number{10} * Number{11, -1}) / 7).truncate()), }, @@ -371,7 +371,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 0, .shareTotal = 10, .withdrawAssets = Number{15, -1}, - .truncate = TruncateShares::yes, + .truncate = TruncateShares::Yes, // NAV = 10; shares = floor(10 * 1.5 / 10) .expectedShares = shares(((Number{10} * Number{15, -1}) / 10).truncate()), }, @@ -382,7 +382,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 50, .shareTotal = 500, .withdrawAssets = 10, - .truncate = TruncateShares::no, + .truncate = TruncateShares::No, .expectedShares = shares(0), }, { @@ -392,7 +392,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 2, .shareTotal = 10, .withdrawAssets = 3, - .truncate = TruncateShares::yes, + .truncate = TruncateShares::Yes, // NAV = 8; shares = floor(10 * 3 / 8) .expectedShares = shares(Number{(10 * 3) / 8}.truncate()), }, @@ -403,7 +403,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 100, .shareTotal = 500, .withdrawAssets = 100, - .truncate = TruncateShares::no, + .truncate = TruncateShares::No, // NAV = 800; raw = 62.5, assigned to MPT STAmount .expectedShares = shares(Number{500 * 100} / 800), }, @@ -414,7 +414,7 @@ class VaultHelpers_test : public beast::unit_test::suite .lossUnrealized = 100, .shareTotal = 500, .withdrawAssets = 100, - .truncate = TruncateShares::yes, + .truncate = TruncateShares::Yes, // NAV = 800; shares = floor(500 * 100 / 800) .expectedShares = shares(Number{(500 * 100) / 800}.truncate()), }, @@ -585,7 +585,7 @@ class VaultHelpers_test : public beast::unit_test::suite BEAST_EXPECT(result.has_value()); if (result) { - BEAST_EXPECT(result->shares != beast::zero); + BEAST_EXPECT(result->shares != beast::kZero); BEAST_EXPECT(result->assets <= asset(50)); } } @@ -600,7 +600,7 @@ class VaultHelpers_test : public beast::unit_test::suite BEAST_EXPECT(result.has_value()); if (result) { - BEAST_EXPECT(result->shares != beast::zero); + BEAST_EXPECT(result->shares != beast::kZero); BEAST_EXPECT(result->assets == asset(100)); } } @@ -634,8 +634,8 @@ class VaultHelpers_test : public beast::unit_test::suite BEAST_EXPECT(result.has_value()); if (result) { - BEAST_EXPECT(result->shares != beast::zero); - BEAST_EXPECT(result->assets != beast::zero); + BEAST_EXPECT(result->shares != beast::kZero); + BEAST_EXPECT(result->assets != beast::kZero); } } @@ -667,7 +667,7 @@ class VaultHelpers_test : public beast::unit_test::suite BEAST_EXPECT(result.has_value()); if (result) { - BEAST_EXPECT(result->assets != beast::zero); + BEAST_EXPECT(result->assets != beast::kZero); BEAST_EXPECT(result->shares == shares(50)); } } @@ -688,8 +688,8 @@ class VaultHelpers_test : public beast::unit_test::suite BEAST_EXPECT(result.has_value()); if (result) { - BEAST_EXPECT(result->assets != beast::zero); - BEAST_EXPECT(result->shares != beast::zero); + BEAST_EXPECT(result->assets != beast::kZero); + BEAST_EXPECT(result->shares != beast::kZero); } } @@ -711,7 +711,7 @@ class VaultHelpers_test : public beast::unit_test::suite Sandbox makeSandbox(SLE::pointer vault, SLE::pointer issuance) { - Sandbox sb(env_->current().get(), tapNONE); + Sandbox sb(env_->current().get(), TapNone); sb.insert(vault); sb.insert(issuance); return sb;