# HG changeset patch # User Bram Moolenaar # Date 1618400704 -7200 # Node ID f388a033e5683b1d0dfe60dcf2b2d9ab68ab8a92 # Parent a06244a53881f6e4faaf1185b450a4f763402c9e patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level Commit: https://github.com/vim/vim/commit/a3589a0d6cdb314e70421c0f2e5a2d1abf68e597 Author: Bram Moolenaar Date: Wed Apr 14 13:30:46 2021 +0200 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level Problem: Vim9: cannot use type in for loop unpack at script level. Solution: Advance over the type name. diff --git a/src/evalvars.c b/src/evalvars.c --- a/src/evalvars.c +++ b/src/evalvars.c @@ -1523,7 +1523,7 @@ ex_let_one( else { set_var_lval(&lv, p, tv, copy, flags, op, var_idx); - arg_end = p; + arg_end = lv.ll_name_end; } } clear_lval(&lv); diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -2336,8 +2336,22 @@ def Test_for_loop() endfor assert_equal(6, total) + # with type + total = 0 + for n: number in [1, 2, 3] + total += n + endfor + assert_equal(6, total) + + # unpack with type + var res = '' + for [n: number, s: string] in [[1, 'a'], [2, 'b']] + res ..= n .. s + endfor + assert_equal('1a2b', res) + # loop over string - var res = '' + res = '' for c in 'aéc̀d' res ..= c .. '-' endfor @@ -2364,13 +2378,6 @@ def Test_for_loop() assert_equal([{a: 'Cat', counter: 12}], foo) END CheckDefAndScriptSuccess(lines) - - # TODO: should also work at script level - var res = "" - for [n: number, s: string] in [[1, 'a'], [2, 'b']] - res ..= n .. s - endfor - assert_equal('1a2b', res) enddef def Test_for_loop_fails() diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 2763, +/**/ 2762, /**/ 2761,