diff options
Diffstat (limited to 'src/nvim/eval.c')
| -rw-r--r-- | src/nvim/eval.c | 59 | 
1 files changed, 30 insertions, 29 deletions
| diff --git a/src/nvim/eval.c b/src/nvim/eval.c index c9da08acd0..19e23190b1 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -446,7 +446,7 @@ typedef struct {    bool rpc;    int refcount;    Callback on_stdout, on_stderr, on_exit; -  int *status_ptr; +  varnumber_T *status_ptr;    uint64_t id;    MultiQueue *events;  } TerminalJobData; @@ -970,7 +970,7 @@ eval_to_bool (      emsg_skip--;    } -  return retval; +  return (int)retval;  }  /// Top level evaluation function, returning a string @@ -1081,10 +1081,10 @@ char_u *eval_to_string_safe(char_u *arg, char_u **nextcmd, int use_sandbox)   * Evaluates "expr" silently.   * Returns -1 for an error.   */ -int eval_to_number(char_u *expr) +varnumber_T eval_to_number(char_u *expr)  {    typval_T rettv; -  int retval; +  varnumber_T retval;    char_u      *p = skipwhite(expr);    ++emsg_off; @@ -1203,7 +1203,7 @@ int call_vim_function(      typval_T *rettv  )  { -  long n; +  varnumber_T n;    int len;    int doesrange;    void        *save_funccalp = NULL; @@ -1261,7 +1261,7 @@ int call_vim_function(   * Returns -1 when calling the function fails.   * Uses argv[argc] for the function arguments.   */ -long  +varnumber_T  call_func_retnr (      char_u *func,      int argc, @@ -1270,7 +1270,7 @@ call_func_retnr (  )  {    typval_T rettv; -  long retval; +  varnumber_T retval;    /* All arguments are passed as strings, no conversion to number. */    if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) @@ -1399,7 +1399,7 @@ void prof_child_exit(proftime_T *tm /* where waittime was stored */  int eval_foldexpr(char_u *arg, int *cp)  {    typval_T tv; -  int retval; +  varnumber_T retval;    char_u      *s;    int use_sandbox = was_set_insecurely((char_u *)"foldexpr",        OPT_LOCAL); @@ -1432,7 +1432,7 @@ int eval_foldexpr(char_u *arg, int *cp)      --sandbox;    --textlock; -  return retval; +  return (int)retval;  }  /* @@ -2286,7 +2286,7 @@ static char_u *get_lval(char_u *const name, typval_T *const rettv,        if (empty1) {          lp->ll_n1 = 0;        } else { -        lp->ll_n1 = tv_get_number(&var1);  // Is number or string. +        lp->ll_n1 = (long)tv_get_number(&var1);  // Is number or string.          tv_clear(&var1);        }        lp->ll_dict = NULL; @@ -2315,7 +2315,7 @@ static char_u *get_lval(char_u *const name, typval_T *const rettv,         * Otherwise "lp->ll_n2" is set to the second index.         */        if (lp->ll_range && !lp->ll_empty2) { -        lp->ll_n2 = tv_get_number(&var2);  // Is number or string. +        lp->ll_n2 = (long)tv_get_number(&var2);  // Is number or string.          tv_clear(&var2);          if (lp->ll_n2 < 0) {            ni = tv_list_find(lp->ll_list, lp->ll_n2); @@ -3525,7 +3525,7 @@ static int eval4(char_u **arg, typval_T *rettv, int evaluate)    exptype_T type = TYPE_UNKNOWN;    int type_is = FALSE;              /* TRUE for "is" and "isnot" */    int len = 2; -  long n1, n2; +  varnumber_T n1, n2;    int ic;    /* @@ -3787,7 +3787,7 @@ static int eval5(char_u **arg, typval_T *rettv, int evaluate)    typval_T var2;    typval_T var3;    int op; -  long n1, n2; +  varnumber_T n1, n2;    float_T f1 = 0, f2 = 0;    char_u      *p; @@ -3938,7 +3938,7 @@ eval6 (  {    typval_T var2;    int op; -  long n1, n2; +  varnumber_T n1, n2;    int use_float = FALSE;    float_T f1 = 0, f2;    bool error = false; @@ -4032,11 +4032,11 @@ eval6 (          else if (op == '/') {            if (n2 == 0) {                /* give an error message? */              if (n1 == 0) -              n1 = -0x7fffffffL - 1L;                   /* similar to NaN */ +              n1 = -0x7fffffffffffffff - 1; /* similar to NaN */              else if (n1 < 0) -              n1 = -0x7fffffffL; +              n1 = -0x7fffffffffffffff;              else -              n1 = 0x7fffffffL; +              n1 = 0x7fffffffffffffff;            } else              n1 = n1 / n2;          } else { @@ -4087,7 +4087,7 @@ static int eval7(      int want_string                 // after "." operator  )  { -  long n; +  varnumber_T n;    int len;    char_u      *s;    char_u      *start_leader, *end_leader; @@ -4285,7 +4285,7 @@ static int eval7(    // Apply logical NOT and unary '-', from right to left, ignore '+'.    if (ret == OK && evaluate && end_leader > start_leader) {      bool error = false; -    int val = 0; +    varnumber_T val = 0;      float_T f = 0.0;      if (rettv->v_type == VAR_FLOAT) { @@ -7614,9 +7614,9 @@ static void f_cursor(typval_T *argvars, typval_T *rettv, FunPtr fptr)      }    } else {      line = tv_get_lnum(argvars); -    col = tv_get_number_chk(&argvars[1], NULL); +    col = (long)tv_get_number_chk(&argvars[1], NULL);      if (argvars[2].v_type != VAR_UNKNOWN) { -      coladd = tv_get_number_chk(&argvars[2], NULL); +      coladd = (long)tv_get_number_chk(&argvars[2], NULL);      }    }    if (line < 0 || col < 0 @@ -8170,7 +8170,7 @@ static void f_extend(typval_T *argvars, typval_T *rettv, FunPtr fptr)      } else if (!tv_check_lock(l1->lv_lock, arg_errmsg, TV_TRANSLATE)) {        listitem_T *item;        if (argvars[2].v_type != VAR_UNKNOWN) { -        before = tv_get_number_chk(&argvars[2], &error); +        before = (long)tv_get_number_chk(&argvars[2], &error);          if (error) {            return;  // Type error; errmsg already given.          } @@ -10516,6 +10516,7 @@ static void f_has(typval_T *argvars, typval_T *rettv, FunPtr fptr)      "mouse",      "multi_byte",      "multi_lang", +    "num64",      "packages",      "path_extra",      "persistent_undo", @@ -12945,7 +12946,7 @@ static void f_range(typval_T *argvars, typval_T *rettv, FunPtr fptr)    varnumber_T start;    varnumber_T end;    varnumber_T stride = 1; -  long i; +  varnumber_T i;    bool error = false;    start = tv_get_number_chk(&argvars[0], &error); @@ -13163,7 +13164,7 @@ static int list2proftime(typval_T *arg, proftime_T *tm) FUNC_ATTR_NONNULL_ALL    // in f_reltime() we split up the 64-bit proftime_T into two 32-bit    // values, now we combine them again.    union { -    struct { varnumber_T low, high; } split; +    struct { int32_t low, high; } split;      proftime_T prof;    } u = { .split.high = n1, .split.low = n2 }; @@ -13204,7 +13205,7 @@ static void f_reltime(typval_T *argvars, typval_T *rettv, FunPtr fptr)    // (varnumber_T is defined as int). For all our supported platforms, int's    // are at least 32-bits wide. So we'll use two 32-bit values to store it.    union { -    struct { varnumber_T low, high; } split; +    struct { int32_t low, high; } split;      proftime_T prof;    } u = { .prof = res }; @@ -15152,8 +15153,8 @@ static int item_compare(const void *s1, const void *s2, bool keep_zero)    int res;    if (sortinfo->item_compare_numbers) { -    const long v1 = tv_get_number(tv1); -    const long v2 = tv_get_number(tv2); +    const varnumber_T v1 = tv_get_number(tv1); +    const varnumber_T v2 = tv_get_number(tv2);      res = v1 == v2 ? 0 : v1 > v2 ? 1 : -1;      goto item_compare_end; @@ -15697,7 +15698,7 @@ static void f_str2float(typval_T *argvars, typval_T *rettv, FunPtr fptr)  static void f_str2nr(typval_T *argvars, typval_T *rettv, FunPtr fptr)  {    int base = 10; -  long n; +  varnumber_T n;    int what;    if (argvars[1].v_type != VAR_UNKNOWN) { @@ -18108,7 +18109,7 @@ static int eval_isnamec1(int c)  /*   * Get number v: variable value.   */ -long get_vim_var_nr(int idx) FUNC_ATTR_PURE +varnumber_T get_vim_var_nr(int idx) FUNC_ATTR_PURE  {    return vimvars[idx].vv_nr;  } | 
