fix: post merge build errors

This commit is contained in:
Vito
2026-06-24 13:47:05 +02:00
parent 461a7aee66
commit 3cc24bcf1e
5 changed files with 57 additions and 53 deletions

View File

@@ -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&)
{

View File

@@ -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";

View File

@@ -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_) <

View File

@@ -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;
},

View File

@@ -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;