Skip to content

Commit

Permalink
C API: fix after rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
jlesquembre committed Feb 24, 2024
1 parent 3b5d6ca commit cca0542
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 7 deletions.
10 changes: 7 additions & 3 deletions src/libexpr/c/nix_api_external.cc
Original file line number Diff line number Diff line change
Expand Up @@ -108,17 +108,21 @@ class NixCExternalValue : public nix::ExternalValueBase
* Coerce the value to a string.
*/
virtual std::string coerceToString(
const nix::Pos & pos, nix::NixStringContext & context, bool copyMore, bool copyToStore) const override
nix::EvalState & state,
const nix::PosIdx & pos,
nix::NixStringContext & context,
bool copyMore,
bool copyToStore) const override
{
if (!desc.coerceToString) {
return nix::ExternalValueBase::coerceToString(pos, context, copyMore, copyToStore);
return nix::ExternalValueBase::coerceToString(state, pos, context, copyMore, copyToStore);
}
nix_string_context ctx{context};
nix_string_return res{""};
// todo: pos, errors
desc.coerceToString(v, &ctx, copyMore, copyToStore, &res);
if (res.str.empty()) {
return nix::ExternalValueBase::coerceToString(pos, context, copyMore, copyToStore);
return nix::ExternalValueBase::coerceToString(state, pos, context, copyMore, copyToStore);
}
return std::move(res.str);
}
Expand Down
4 changes: 2 additions & 2 deletions src/libexpr/c/nix_api_external.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ typedef struct NixCExternalValueDesc
} NixCExternalValueDesc;

/**
* @brief Create an external value, that can be given to nix_set_external
* @brief Create an external value, that can be given to nix_init_external
*
* Owned by the GC. Use nix_gc_decref when you're done with the pointer.
*
Expand All @@ -174,7 +174,7 @@ typedef struct NixCExternalValueDesc
* as the ExternalValue lives
* @param[in] v the value to store
* @returns external value, owned by the garbage collector
* @see nix_set_external
* @see nix_init_external
*/
ExternalValue * nix_create_external_value(nix_c_context * context, NixCExternalValueDesc * desc, void * v);

Expand Down
3 changes: 1 addition & 2 deletions src/libexpr/c/nix_api_value.cc
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,7 @@ static void nix_c_primop_wrapper(
f(userdata, &ctx, (EvalState *) &state, (Value **) args, (Value *) &v);
/* TODO: In the future, this should throw different errors depending on the error code */
if (ctx.last_err_code != NIX_OK)
state.debugThrowLastTrace(nix::Error(
{.msg = nix::hintfmt("Error from builtin function: %s", *ctx.last_err), .errPos = state.positions[pos]}));
state.error<nix::EvalError>("Error from builtin function: %s", *ctx.last_err).atPos(pos).debugThrow();
}

PrimOp * nix_alloc_primop(
Expand Down

0 comments on commit cca0542

Please sign in to comment.