Skip to content

Commit 8ff16e0

Browse files
committed
patch 8.2.2107: Vim9: some errors not tested
Problem: Vim9: some errors not tested. Solution: Add tests. Fix getting the right error.
1 parent b237ae7 commit 8ff16e0

4 files changed

Lines changed: 56 additions & 14 deletions

File tree

src/testdir/test_vim9_assign.vim

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,45 @@ def Test_assignment()
225225
END
226226
enddef
227227

228+
def Test_assign_unpack()
229+
var lines =<< trim END
230+
var v1: number
231+
var v2: number
232+
[v1, v2] = [1, 2]
233+
assert_equal(1, v1)
234+
assert_equal(2, v2)
235+
END
236+
CheckDefAndScriptSuccess(lines)
237+
238+
lines =<< trim END
239+
var v1: number
240+
var v2: number
241+
[v1, v2] =
242+
END
243+
CheckDefFailure(lines, 'E1097:', 5)
244+
245+
lines =<< trim END
246+
var v1: number
247+
var v2: number
248+
[v1, v2] = xxx
249+
END
250+
CheckDefFailure(lines, 'E1001:', 3)
251+
252+
lines =<< trim END
253+
var v1: number
254+
var v2: number
255+
[v1, v2] = popup_clear()
256+
END
257+
CheckDefFailure(lines, 'E1031:', 3)
258+
259+
lines =<< trim END
260+
var v1: number
261+
var v2: number
262+
[v1, v2] = ''
263+
END
264+
CheckDefFailure(lines, 'E1012: Type mismatch; expected list<any> but got string', 3)
265+
enddef
266+
228267
def Test_assign_linebreak()
229268
var nr: number
230269
nr =
@@ -237,7 +276,7 @@ def Test_assign_linebreak()
237276
assert_equal(12, nr)
238277
assert_equal(34, n2)
239278

240-
CheckDefFailure(["var x = #"], 'E1097:', 2)
279+
CheckDefFailure(["var x = #"], 'E1097:', 3)
241280
enddef
242281

243282
def Test_assign_index()

src/testdir/test_vim9_expr.vim

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@ func Test_expr1_trinary_fails()
188188
call CheckDefExecFailure(["var x = [] ? 'one' : 'two'"], 'E745:', 1)
189189
call CheckDefExecFailure(["var x = {} ? 'one' : 'two'"], 'E728:', 1)
190190

191-
call CheckDefExecFailure(["var x = false ? "], 'E1097:', 2)
192-
call CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 2)
191+
call CheckDefExecFailure(["var x = false ? "], 'E1097:', 3)
192+
call CheckDefExecFailure(["var x = false ? 'one' : "], 'E1097:', 3)
193193

194194
call CheckDefExecFailure(["var x = true ? xxx : 'foo'"], 'E1001:', 1)
195195
call CheckDefExecFailure(["var x = false ? 'foo' : xxx"], 'E1001:', 1)
@@ -352,7 +352,7 @@ def Test_expr2_fails()
352352
call CheckDefFailure(["var x = 1 ||2"], msg, 1)
353353
call CheckDefFailure(["var x = 1|| 2"], msg, 1)
354354

355-
call CheckDefFailure(["var x = false || "], 'E1097:', 2)
355+
call CheckDefFailure(["var x = false || "], 'E1097:', 3)
356356

357357
call CheckDefFailure(["var x = 1 || xxx"], 'E1001:', 1)
358358
call CheckDefFailure(["var x = [] || false"], 'E1012:', 1)
@@ -587,7 +587,7 @@ def Test_expr4_equal()
587587
CheckDefAndScriptSuccess(lines)
588588

589589
CheckDefFailure(["var x = 'a' == xxx"], 'E1001:', 1)
590-
CheckDefFailure(["var x = 'a' == "], 'E1097:', 2)
590+
CheckDefFailure(["var x = 'a' == "], 'E1097:', 3)
591591

592592
CheckDefExecFailure(['var items: any', 'eval 1', 'eval 2', 'if items == []', 'endif'], 'E691:', 4)
593593
enddef
@@ -1359,7 +1359,7 @@ def Test_expr6()
13591359
CheckDefAndScriptSuccess(lines)
13601360

13611361
CheckDefFailure(["var x = 6 * xxx"], 'E1001:', 1)
1362-
CheckDefFailure(["var d = 6 * "], 'E1097:', 2)
1362+
CheckDefFailure(["var d = 6 * "], 'E1097:', 3)
13631363
enddef
13641364

13651365
def Test_expr6_vim9script()
@@ -1531,7 +1531,7 @@ def Test_expr7t()
15311531
assert_equal(234, nr)
15321532

15331533
CheckDefFailure(["var x = <nr>123"], 'E1010:', 1)
1534-
CheckDefFailure(["var x = <number>"], 'E1097:', 2)
1534+
CheckDefFailure(["var x = <number>"], 'E1097:', 3)
15351535
CheckDefFailure(["var x = <number >123"], 'E1068:', 1)
15361536
CheckDefFailure(["var x = <number 123"], 'E1104:', 1)
15371537
enddef
@@ -1684,8 +1684,8 @@ def Test_expr7_list()
16841684
CheckDefExecFailure(["echo 1", "var x = [][0]", "echo 3"], 'E684:', 2)
16851685

16861686
CheckDefExecFailure(["var x = g:list_mixed['xx']"], 'E1012:', 1)
1687-
CheckDefFailure(["var x = g:list_mixed["], 'E1097:', 2)
1688-
CheckDefFailure(["var x = g:list_mixed[0"], 'E1097:', 2)
1687+
CheckDefFailure(["var x = g:list_mixed["], 'E1097:', 3)
1688+
CheckDefFailure(["var x = g:list_mixed[0"], 'E1097:', 3)
16891689
CheckDefExecFailure(["var x = g:list_empty[3]"], 'E684:', 1)
16901690
CheckDefExecFailure(["var l: list<number> = [234, 'x']"], 'E1012:', 1)
16911691
CheckDefExecFailure(["var l: list<number> = ['x', 234]"], 'E1012:', 1)
@@ -1948,8 +1948,8 @@ def Test_expr7_dict()
19481948
CheckDefAndScriptSuccess(lines)
19491949

19501950
# legacy syntax doesn't work
1951-
CheckDefFailure(["var x = #{key: 8}"], 'E1097:', 2)
1952-
CheckDefFailure(["var x = 'a' .. #{a: 1}"], 'E1097:', 2)
1951+
CheckDefFailure(["var x = #{key: 8}"], 'E1097:', 3)
1952+
CheckDefFailure(["var x = 'a' .. #{a: 1}"], 'E1097:', 3)
19531953

19541954
CheckDefFailure(["var x = {a:8}"], 'E1069:', 1)
19551955
CheckDefFailure(["var x = {a : 8}"], 'E1059:', 1)
@@ -2609,15 +2609,15 @@ def Test_expr7_string_subscript()
26092609
lines =<< trim END
26102610
var d = 'asdf'[1:
26112611
END
2612-
CheckDefFailure(lines, 'E1097:', 2)
2612+
CheckDefFailure(lines, 'E1097:', 3)
26132613
lines =<< trim END
26142614
var d = 'asdf'[1:xxx]
26152615
END
26162616
CheckDefFailure(lines, 'E1001:', 1)
26172617
lines =<< trim END
26182618
var d = 'asdf'[1:2
26192619
END
2620-
CheckDefFailure(lines, 'E1097:', 2)
2620+
CheckDefFailure(lines, 'E1097:', 3)
26212621
lines =<< trim END
26222622
var d = 'asdf'[1:2
26232623
echo d

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,8 @@ static char *(features[]) =
750750

751751
static int included_patches[] =
752752
{ /* Add new patch number below this line */
753+
/**/
754+
2107,
753755
/**/
754756
2106,
755757
/**/

src/vim9compile.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2229,6 +2229,7 @@ may_get_next_line_error(char_u *whitep, char_u **arg, cctx_T *cctx)
22292229
{
22302230
if (may_get_next_line(whitep, arg, cctx) == FAIL)
22312231
{
2232+
SOURCING_LNUM = cctx->ctx_lnum + 1;
22322233
emsg(_(e_line_incomplete));
22332234
return FAIL;
22342235
}
@@ -5300,7 +5301,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
53005301

53015302
wp = op + oplen;
53025303
p = skipwhite(wp);
5303-
if (may_get_next_line(wp, &p, cctx) == FAIL)
5304+
if (may_get_next_line_error(wp, &p, cctx) == FAIL)
53045305
return FAIL;
53055306
if (compile_expr0(&p, cctx) == FAIL)
53065307
return NULL;

0 commit comments

Comments
 (0)