diff options
author | dundargoc <33953936+dundargoc@users.noreply.github.com> | 2021-09-18 18:34:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-18 09:34:23 -0700 |
commit | 51a98aa0c2fe3231a0ffc8a78189bc6fafd6abf6 (patch) | |
tree | b0a582d67883864eda3231bce45dc7c159cbe97f /src/nvim/eval/executor.c | |
parent | 6cad86fffdb91d3997a707ff6adb0b5991587b3e (diff) | |
download | rneovim-51a98aa0c2fe3231a0ffc8a78189bc6fafd6abf6.tar.gz rneovim-51a98aa0c2fe3231a0ffc8a78189bc6fafd6abf6.tar.bz2 rneovim-51a98aa0c2fe3231a0ffc8a78189bc6fafd6abf6.zip |
refactor: format #15702
Diffstat (limited to 'src/nvim/eval/executor.c')
-rw-r--r-- | src/nvim/eval/executor.c | 193 |
1 files changed, 100 insertions, 93 deletions
diff --git a/src/nvim/eval/executor.c b/src/nvim/eval/executor.c index 5ced2a0535..8eceda84cf 100644 --- a/src/nvim/eval/executor.c +++ b/src/nvim/eval/executor.c @@ -1,12 +1,12 @@ // This is an open source non-commercial project. Dear PVS-Studio, please check // it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com -#include "nvim/eval/typval.h" -#include "nvim/eval/executor.h" #include "nvim/eval.h" +#include "nvim/eval/executor.h" +#include "nvim/eval/typval.h" +#include "nvim/globals.h" #include "nvim/message.h" #include "nvim/vim.h" -#include "nvim/globals.h" #ifdef INCLUDE_GENERATED_DECLARATIONS # include "eval/executor.c.generated.h" @@ -23,117 +23,124 @@ char *e_listidx = N_("E684: list index out of range: %" PRId64); /// @param[in] op Used operator. /// /// @return OK or FAIL. -int eexe_mod_op(typval_T *const tv1, const typval_T *const tv2, - const char *const op) +int eexe_mod_op(typval_T *const tv1, const typval_T *const tv2, const char *const op) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NO_SANITIZE_UNDEFINED { // Can't do anything with a Funcref, a Dict or special value on the right. if (tv2->v_type != VAR_FUNC && tv2->v_type != VAR_DICT && tv2->v_type != VAR_BOOL && tv2->v_type != VAR_SPECIAL) { switch (tv1->v_type) { - case VAR_DICT: - case VAR_FUNC: - case VAR_PARTIAL: - case VAR_BOOL: - case VAR_SPECIAL: { + case VAR_DICT: + case VAR_FUNC: + case VAR_PARTIAL: + case VAR_BOOL: + case VAR_SPECIAL: + break; + case VAR_BLOB: + if (*op != '+' || tv2->v_type != VAR_BLOB) { break; } - case VAR_BLOB: { - if (*op != '+' || tv2->v_type != VAR_BLOB) { - break; - } - // Blob += Blob - if (tv1->vval.v_blob != NULL && tv2->vval.v_blob != NULL) { - blob_T *const b1 = tv1->vval.v_blob; - blob_T *const b2 = tv2->vval.v_blob; - for (int i = 0; i < tv_blob_len(b2); i++) { - ga_append(&b1->bv_ga, (char)tv_blob_get(b2, i)); - } - } - return OK; - } - case VAR_LIST: { - if (*op != '+' || tv2->v_type != VAR_LIST) { - break; - } - // List += List - if (tv1->vval.v_list != NULL && tv2->vval.v_list != NULL) { - tv_list_extend(tv1->vval.v_list, tv2->vval.v_list, NULL); + // Blob += Blob + if (tv1->vval.v_blob != NULL && tv2->vval.v_blob != NULL) { + blob_T *const b1 = tv1->vval.v_blob; + blob_T *const b2 = tv2->vval.v_blob; + for (int i = 0; i < tv_blob_len(b2); i++) { + ga_append(&b1->bv_ga, (char)tv_blob_get(b2, i)); } - return OK; } - case VAR_NUMBER: - case VAR_STRING: { - if (tv2->v_type == VAR_LIST) { - break; - } - if (vim_strchr((char_u *)"+-*/%", *op) != NULL) { - // nr += nr or nr -= nr, nr *= nr, nr /= nr, nr %= nr - varnumber_T n = tv_get_number(tv1); - if (tv2->v_type == VAR_FLOAT) { - float_T f = (float_T)n; + return OK; + case VAR_LIST: + if (*op != '+' || tv2->v_type != VAR_LIST) { + break; + } + // List += List + if (tv1->vval.v_list != NULL && tv2->vval.v_list != NULL) { + tv_list_extend(tv1->vval.v_list, tv2->vval.v_list, NULL); + } + return OK; + case VAR_NUMBER: + case VAR_STRING: + if (tv2->v_type == VAR_LIST) { + break; + } + if (vim_strchr((char_u *)"+-*/%", *op) != NULL) { + // nr += nr or nr -= nr, nr *= nr, nr /= nr, nr %= nr + varnumber_T n = tv_get_number(tv1); + if (tv2->v_type == VAR_FLOAT) { + float_T f = (float_T)n; - if (*op == '%') { - break; - } - switch (*op) { - case '+': f += tv2->vval.v_float; break; - case '-': f -= tv2->vval.v_float; break; - case '*': f *= tv2->vval.v_float; break; - case '/': f /= tv2->vval.v_float; break; - } - tv_clear(tv1); - tv1->v_type = VAR_FLOAT; - tv1->vval.v_float = f; - } else { - switch (*op) { - case '+': n += tv_get_number(tv2); break; - case '-': n -= tv_get_number(tv2); break; - case '*': n *= tv_get_number(tv2); break; - case '/': n = num_divide(n, tv_get_number(tv2)); break; - case '%': n = num_modulus(n, tv_get_number(tv2)); break; - } - tv_clear(tv1); - tv1->v_type = VAR_NUMBER; - tv1->vval.v_number = n; + if (*op == '%') { + break; + } + switch (*op) { + case '+': + f += tv2->vval.v_float; break; + case '-': + f -= tv2->vval.v_float; break; + case '*': + f *= tv2->vval.v_float; break; + case '/': + f /= tv2->vval.v_float; break; } + tv_clear(tv1); + tv1->v_type = VAR_FLOAT; + tv1->vval.v_float = f; } else { - // str .= str - if (tv2->v_type == VAR_FLOAT) { - break; + switch (*op) { + case '+': + n += tv_get_number(tv2); break; + case '-': + n -= tv_get_number(tv2); break; + case '*': + n *= tv_get_number(tv2); break; + case '/': + n = num_divide(n, tv_get_number(tv2)); break; + case '%': + n = num_modulus(n, tv_get_number(tv2)); break; } - const char *tvs = tv_get_string(tv1); - char numbuf[NUMBUFLEN]; - char *const s = (char *)concat_str( - (const char_u *)tvs, (const char_u *)tv_get_string_buf(tv2, - numbuf)); tv_clear(tv1); - tv1->v_type = VAR_STRING; - tv1->vval.v_string = (char_u *)s; + tv1->v_type = VAR_NUMBER; + tv1->vval.v_number = n; } - return OK; - } - case VAR_FLOAT: { - if (*op == '%' || *op == '.' - || (tv2->v_type != VAR_FLOAT - && tv2->v_type != VAR_NUMBER - && tv2->v_type != VAR_STRING)) { + } else { + // str .= str + if (tv2->v_type == VAR_FLOAT) { break; } - const float_T f = (tv2->v_type == VAR_FLOAT + const char *tvs = tv_get_string(tv1); + char numbuf[NUMBUFLEN]; + char *const s = + (char *)concat_str((const char_u *)tvs, (const char_u *)tv_get_string_buf(tv2, + numbuf)); + tv_clear(tv1); + tv1->v_type = VAR_STRING; + tv1->vval.v_string = (char_u *)s; + } + return OK; + case VAR_FLOAT: { + if (*op == '%' || *op == '.' + || (tv2->v_type != VAR_FLOAT + && tv2->v_type != VAR_NUMBER + && tv2->v_type != VAR_STRING)) { + break; + } + const float_T f = (tv2->v_type == VAR_FLOAT ? tv2->vval.v_float : (float_T)tv_get_number(tv2)); - switch (*op) { - case '+': tv1->vval.v_float += f; break; - case '-': tv1->vval.v_float -= f; break; - case '*': tv1->vval.v_float *= f; break; - case '/': tv1->vval.v_float /= f; break; - } - return OK; - } - case VAR_UNKNOWN: { - abort(); + switch (*op) { + case '+': + tv1->vval.v_float += f; break; + case '-': + tv1->vval.v_float -= f; break; + case '*': + tv1->vval.v_float *= f; break; + case '/': + tv1->vval.v_float /= f; break; } + return OK; + } + case VAR_UNKNOWN: + abort(); } } |