1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-21 09:49:36 +01:00

Use std::variant to enforce BuildResult invariants

There is now a clean separation between successful and failing build
results.
This commit is contained in:
John Ericson 2025-09-23 18:09:56 -04:00
parent 43550e8edb
commit e731c43eae
29 changed files with 568 additions and 397 deletions

View file

@ -241,12 +241,13 @@ void LegacySSHStore::buildPaths(
conn->to.flush();
BuildResult result;
result.status = (BuildResult::Status) readInt(conn->from);
if (!result.success()) {
conn->from >> result.errorMsg;
throw Error(result.status, result.errorMsg);
auto status = readInt(conn->from);
if (!BuildResult::Success::statusIs(status)) {
BuildResult::Failure failure{
.status = (BuildResult::Failure::Status) status,
};
conn->from >> failure.errorMsg;
throw Error(failure.status, std::move(failure.errorMsg));
}
}