patch 8.2.0732: Vim9: storing value in dict messes up stack
Problem: Vim9: storing value in dict messes up stack.
Solution: Correct item count of stack.
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 12260c3..55d756a 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -54,6 +54,12 @@
assert_equal('asdf', l[1])
assert_equal('asdf', l[-1])
assert_equal('value', l[-2])
+
+ let nrl: list<number> = []
+ for i in range(5)
+ nrl[i] = i
+ endfor
+ assert_equal([0, 1, 2, 3, 4], nrl)
enddef
def Test_assign_dict()
@@ -64,6 +70,12 @@
d[123] = 'qwerty'
assert_equal('qwerty', d[123])
assert_equal('qwerty', d['123'])
+
+ let nrd: dict<number> = {}
+ for i in range(3)
+ nrd[i] = i
+ endfor
+ assert_equal({'0': 0, '1': 1, '2': 2}, nrd)
enddef
diff --git a/src/version.c b/src/version.c
index efb3c31..6a29592 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 732,
+/**/
731,
/**/
730,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index ba4ae478..4356e2a 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1286,6 +1286,7 @@
}
clear_tv(tv_idx);
clear_tv(tv_list);
+ ectx.ec_stack.ga_len -= 3;
}
break;
@@ -1319,6 +1320,7 @@
}
clear_tv(tv_key);
clear_tv(tv_dict);
+ ectx.ec_stack.ga_len -= 3;
}
break;