Mercurial > vim
diff src/typval.c @ 21831:d8422de73113 v8.2.1465
patch 8.2.1465: Vim9: subscript not handled properly
Commit: https://github.com/vim/vim/commit/56acb0943ede35cd9d2f6667cde2442819ccbf59
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Aug 16 14:48:19 2020 +0200
patch 8.2.1465: Vim9: subscript not handled properly
Problem: Vim9: subscript not handled properly.
Solution: Adjust error message. Remove dead code. Disallow string to
number conversion in scripts.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 16 Aug 2020 15:00:05 +0200 |
parents | a6c316ef161a |
children | 727820154b1a |
line wrap: on
line diff
--- a/src/typval.c +++ b/src/typval.c @@ -204,6 +204,11 @@ tv_get_number_chk(typval_T *varp, int *d emsg(_("E703: Using a Funcref as a Number")); break; case VAR_STRING: + if (in_vim9script()) + { + emsg(_(e_using_string_as_number)); + break; + } if (varp->vval.v_string != NULL) vim_str2nr(varp->vval.v_string, NULL, NULL, STR2NR_ALL, &n, NULL, 0, FALSE); @@ -216,6 +221,11 @@ tv_get_number_chk(typval_T *varp, int *d break; case VAR_BOOL: case VAR_SPECIAL: + if (in_vim9script()) + { + emsg(_("E611: Using a Special as a Number")); + break; + } return varp->vval.v_number == VVAL_TRUE ? 1 : 0; case VAR_JOB: #ifdef FEAT_JOB_CHANNEL @@ -1461,9 +1471,10 @@ eval_env_var(char_u **arg, typval_T *ret linenr_T tv_get_lnum(typval_T *argvars) { - linenr_T lnum; + linenr_T lnum = 0; - lnum = (linenr_T)tv_get_number_chk(&argvars[0], NULL); + if (argvars[0].v_type != VAR_STRING || !in_vim9script()) + lnum = (linenr_T)tv_get_number_chk(&argvars[0], NULL); if (lnum == 0) // no valid number, try using arg like line() { int fnum;