diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-06-07 09:00:55 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-07 09:00:55 +0800 |
commit | 0e0a166a0cc5a2dc199136e313e58c27bfb91977 (patch) | |
tree | fe2c40eb718953905ad00c5e931b665d39e9ba35 /src/nvim/api/options.c | |
parent | b3d5138fd0066fda26ef7724a542ae45eb42fc84 (diff) | |
download | rneovim-0e0a166a0cc5a2dc199136e313e58c27bfb91977.tar.gz rneovim-0e0a166a0cc5a2dc199136e313e58c27bfb91977.tar.bz2 rneovim-0e0a166a0cc5a2dc199136e313e58c27bfb91977.zip |
refactor(api): adjust errors for setting options (#23942)
Diffstat (limited to 'src/nvim/api/options.c')
-rw-r--r-- | src/nvim/api/options.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/nvim/api/options.c b/src/nvim/api/options.c index ed13e51e90..b9a41adc3b 100644 --- a/src/nvim/api/options.c +++ b/src/nvim/api/options.c @@ -151,24 +151,19 @@ static Object optval_as_object(OptVal o) } /// Consume an API Object and convert it to an OptVal. -static OptVal object_as_optval(Object o, Error *err) +static OptVal object_as_optval(Object o, bool *error) { switch (o.type) { case kObjectTypeNil: return NIL_OPTVAL; - break; case kObjectTypeBoolean: return BOOLEAN_OPTVAL(o.data.boolean); - break; case kObjectTypeInteger: return NUMBER_OPTVAL(o.data.integer); - break; case kObjectTypeString: return STRING_OPTVAL(o.data.string); - break; default: - // Some Object types don't have an OptVal equivalent. Error out in those cases. - api_set_error(err, kErrorTypeException, "Invalid option value"); + *error = true; return NIL_OPTVAL; } } @@ -281,13 +276,13 @@ void nvim_set_option_value(uint64_t channel_id, String name, Object value, Dict( } } - OptVal optval = object_as_optval(value, err); + bool error = false; + OptVal optval = object_as_optval(value, &error); // Handle invalid option value type. - if (ERROR_SET(err)) { - api_clear_error(err); - - VALIDATE_EXP(false, name.data, "Integer/Boolean/String", api_typename(value.type), { + if (error) { + // Don't use `name` in the error message here, because `name` can be any String. + VALIDATE_EXP(false, "value", "Integer/Boolean/String", api_typename(value.type), { return; }); } |