fixup: fixup: fixup: fixup:

This commit is contained in:
TJ DeVries 2020-10-22 16:21:35 -04:00
parent 7fca3ddcca
commit a83b76790b
2 changed files with 13 additions and 9 deletions

View File

@ -972,11 +972,11 @@ void nvim_buf_delete(Buffer buffer, Dictionary opts, Error *err)
bool unload = false;
for (size_t i = 0; i < opts.size; i++) {
String k = opts.items[i].key;
Object *v = &opts.items[i].value;
Object v = opts.items[i].value;
if (strequal("force", k.data)) {
force = api_coerce_to_bool(*v, "force", false, err);
force = api_coerce_to_bool(v, "force", false, err);
} else if (strequal("unload", k.data)) {
unload = api_coerce_to_bool(*v, "unload", false, err);
unload = api_coerce_to_bool(v, "unload", false, err);
} else {
api_set_error(err, kErrorTypeValidation, "unexpected key: %s", k.data);
return;

View File

@ -1621,18 +1621,22 @@ free_exit:
/// Force obj to bool.
/// If it fails, returns false and sets err
/// @param obj The object to coerce to a boolean
/// @param what The name of the object, used for error message
/// @param if_nil What to return if the type is nil.
/// @param err Set if there was an error in converting to a bool
bool api_coerce_to_bool(Object obj, const char *what, bool if_nil, Error *err)
/// @param obj The object to coerce to a boolean
/// @param what The name of the object, used for error message
/// @param nil_value What to return if the type is nil.
/// @param err Set if there was an error in converting to a bool
bool api_coerce_to_bool(
Object obj,
const char *what,
bool nil_value,
Error *err)
{
if (obj.type == kObjectTypeBoolean) {
return obj.data.boolean;
} else if (obj.type == kObjectTypeInteger) {
return obj.data.integer; // C semantics: non-zero int is true
} else if (obj.type == kObjectTypeNil) {
return if_nil; // caller decides what NIL (missing retval in lua) means
return nil_value; // caller decides what NIL (missing retval in lua) means
} else {
api_set_error(err, kErrorTypeValidation, "%s is not an boolean", what);
return false;