summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-09-27 21:27:40 +0200
committerBram Moolenaar <Bram@vim.org>2020-09-27 21:27:40 +0200
commit06f9c6940a88d132c85eb2a1b5034fa7653518ce (patch)
tree5d40f32db31b95ebad2033e1fa10d3031d787e6e
parent6c542f77eba73a95447f285149b3fcb011aa9675 (diff)
downloadvim-git-06f9c6940a88d132c85eb2a1b5034fa7653518ce.tar.gz
patch 8.2.1764: Vim9: no error when assigning to script var with wrong typev8.2.1764
Problem: Vim9: no error when assigning to script var with wrong type. Solution: Fix off-by-one error. (closes #7028)
-rw-r--r--src/testdir/test_vim9_assign.vim10
-rw-r--r--src/version.c2
-rw-r--r--src/vim9compile.c2
3 files changed, 13 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 5d6dec110..cd3ba8ce6 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -567,6 +567,16 @@ def Test_assignment_vim9script()
assert_equal(44, t)
END
CheckScriptSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ var n: number
+ def Func()
+ n = 'string'
+ enddef
+ defcompile
+ END
+ CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got string')
enddef
def Mess(): string
diff --git a/src/version.c b/src/version.c
index 60ab7d1d6..4b459f2a6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1764,
+/**/
1763,
/**/
1762,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index e4f3a906e..830e8bb9b 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -4899,7 +4899,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
{
scriptvar_idx = get_script_item_idx(scriptvar_sid,
rawname, TRUE);
- if (scriptvar_idx > 0)
+ if (scriptvar_idx >= 0)
{
scriptitem_T *si = SCRIPT_ITEM(scriptvar_sid);
svar_T *sv =