Mercurial > vim
annotate src/testdir/test_vim9_assign.vim @ 24363:1a145eb83a28 v8.2.2722
patch 8.2.2722: Vim9: crash when using LHS with double index
Commit: https://github.com/vim/vim/commit/b9c0cd897ab4ad54f514187e89719c0241393f8b
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Apr 5 20:51:00 2021 +0200
patch 8.2.2722: Vim9: crash when using LHS with double index
Problem: Vim9: crash when using LHS with double index.
Solution: Handle lhs_dest which is "dest_expr". (closes https://github.com/vim/vim/issues/8068)
Fix confusing error message for missing dict item.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 05 Apr 2021 21:00:04 +0200 |
parents | 108a6e2497f6 |
children | 95b8937804d3 |
rev | line source |
---|---|
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 " Test Vim9 assignments |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 source check.vim |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
4 source vim9.vim |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 let s:appendToMe = 'xxx' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 let s:addToMe = 111 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 let g:existing = 'yes' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 let g:inc_counter = 1 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 let $SOME_ENV_VAR = 'some' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 let g:alist = [7] |
23982
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
12 let g:adict = #{a: 1} |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 let g:astring = 'text' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 def Test_assignment_bool() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
16 var bool1: bool = true |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 assert_equal(v:true, bool1) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
18 var bool2: bool = false |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 assert_equal(v:false, bool2) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
21 var bool3: bool = 0 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 assert_equal(false, bool3) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
23 var bool4: bool = 1 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 assert_equal(true, bool4) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
25 |
22494
4c21f7f6f9e3
patch 8.2.1795: Vim9: operators && and || have a confusing result
Bram Moolenaar <Bram@vim.org>
parents:
22458
diff
changeset
|
26 var bool5: bool = 1 && true |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
27 assert_equal(true, bool5) |
22494
4c21f7f6f9e3
patch 8.2.1795: Vim9: operators && and || have a confusing result
Bram Moolenaar <Bram@vim.org>
parents:
22458
diff
changeset
|
28 var bool6: bool = 0 && 1 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
29 assert_equal(false, bool6) |
22494
4c21f7f6f9e3
patch 8.2.1795: Vim9: operators && and || have a confusing result
Bram Moolenaar <Bram@vim.org>
parents:
22458
diff
changeset
|
30 var bool7: bool = 0 || 1 && true |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
31 assert_equal(true, bool7) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
32 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
33 var lines =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
34 vim9script |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
35 def GetFlag(): bool |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
36 var flag: bool = 1 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
37 return flag |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
38 enddef |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
39 var flag: bool = GetFlag() |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
40 assert_equal(true, flag) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
41 flag = 0 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
42 assert_equal(false, flag) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
43 flag = 1 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
44 assert_equal(true, flag) |
22494
4c21f7f6f9e3
patch 8.2.1795: Vim9: operators && and || have a confusing result
Bram Moolenaar <Bram@vim.org>
parents:
22458
diff
changeset
|
45 flag = 1 || true |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
46 assert_equal(true, flag) |
22494
4c21f7f6f9e3
patch 8.2.1795: Vim9: operators && and || have a confusing result
Bram Moolenaar <Bram@vim.org>
parents:
22458
diff
changeset
|
47 flag = 1 && false |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
48 assert_equal(false, flag) |
23422
bb0c53f4ef8b
patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents:
23338
diff
changeset
|
49 |
bb0c53f4ef8b
patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents:
23338
diff
changeset
|
50 var cp: bool = &cp |
bb0c53f4ef8b
patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents:
23338
diff
changeset
|
51 var fen: bool = &l:fen |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
53 CheckScriptSuccess(lines) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
54 CheckDefAndScriptFailure(['var x: bool = 2'], 'E1012:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
55 CheckDefAndScriptFailure(['var x: bool = -1'], 'E1012:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
56 CheckDefAndScriptFailure(['var x: bool = [1]'], 'E1012:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
57 CheckDefAndScriptFailure(['var x: bool = {}'], 'E1012:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
58 CheckDefAndScriptFailure(['var x: bool = "x"'], 'E1012:') |
23707
6e8a4a30d94d
patch 8.2.2395: Vim9: error for wrong type may report wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
23679
diff
changeset
|
59 |
6e8a4a30d94d
patch 8.2.2395: Vim9: error for wrong type may report wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
23679
diff
changeset
|
60 CheckDefAndScriptFailure(['var x: bool = "x"', '', 'eval 0'], 'E1012:', 1) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
61 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
62 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
63 def Test_syntax() |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
64 var name = 234 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
65 var other: list<string> = ['asdf'] |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
67 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
68 def Test_assignment() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
69 CheckDefFailure(['var x:string'], 'E1069:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
70 CheckDefFailure(['var x:string = "x"'], 'E1069:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
71 CheckDefFailure(['var a:string = "x"'], 'E1069:') |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23422
diff
changeset
|
72 CheckDefFailure(['var lambda = () => "lambda"'], 'E704:') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
73 CheckScriptFailure(['var x = "x"'], 'E1124:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
74 |
24154
6e8f49a4a193
patch 8.2.2618: Vim9: cannot use a normal list name to store function refs
Bram Moolenaar <Bram@vim.org>
parents:
24047
diff
changeset
|
75 # lower case name is OK for a list |
6e8f49a4a193
patch 8.2.2618: Vim9: cannot use a normal list name to store function refs
Bram Moolenaar <Bram@vim.org>
parents:
24047
diff
changeset
|
76 var lambdaLines =<< trim END |
6e8f49a4a193
patch 8.2.2618: Vim9: cannot use a normal list name to store function refs
Bram Moolenaar <Bram@vim.org>
parents:
24047
diff
changeset
|
77 var lambdaList: list<func> = [Test_syntax] |
6e8f49a4a193
patch 8.2.2618: Vim9: cannot use a normal list name to store function refs
Bram Moolenaar <Bram@vim.org>
parents:
24047
diff
changeset
|
78 lambdaList[0] = () => "lambda" |
6e8f49a4a193
patch 8.2.2618: Vim9: cannot use a normal list name to store function refs
Bram Moolenaar <Bram@vim.org>
parents:
24047
diff
changeset
|
79 END |
6e8f49a4a193
patch 8.2.2618: Vim9: cannot use a normal list name to store function refs
Bram Moolenaar <Bram@vim.org>
parents:
24047
diff
changeset
|
80 CheckDefAndScriptSuccess(lambdaLines) |
6e8f49a4a193
patch 8.2.2618: Vim9: cannot use a normal list name to store function refs
Bram Moolenaar <Bram@vim.org>
parents:
24047
diff
changeset
|
81 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
82 var nr: number = 1234 |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
83 CheckDefFailure(['var nr: number = "asdf"'], 'E1012:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
84 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
85 var a: number = 6 #comment |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
86 assert_equal(6, a) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
87 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
88 if has('channel') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
89 var chan1: channel |
22618
c2d8b596dd0f
patch 8.2.1857: Vim9: using job_status() on an unused var gives an error
Bram Moolenaar <Bram@vim.org>
parents:
22610
diff
changeset
|
90 assert_equal('fail', ch_status(chan1)) |
c2d8b596dd0f
patch 8.2.1857: Vim9: using job_status() on an unused var gives an error
Bram Moolenaar <Bram@vim.org>
parents:
22610
diff
changeset
|
91 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
92 var job1: job |
22618
c2d8b596dd0f
patch 8.2.1857: Vim9: using job_status() on an unused var gives an error
Bram Moolenaar <Bram@vim.org>
parents:
22610
diff
changeset
|
93 assert_equal('fail', job_status(job1)) |
c2d8b596dd0f
patch 8.2.1857: Vim9: using job_status() on an unused var gives an error
Bram Moolenaar <Bram@vim.org>
parents:
22610
diff
changeset
|
94 |
22582
a3df1fb28d44
patch 8.2.1839: Vim9: memory leaks reported in assign test
Bram Moolenaar <Bram@vim.org>
parents:
22545
diff
changeset
|
95 # calling job_start() is in test_vim9_fails.vim, it causes leak reports |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
96 endif |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
97 if has('float') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
98 var float1: float = 3.4 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
99 endif |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
100 var Funky1: func |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
101 var Funky2: func = function('len') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
102 var Party2: func = funcref('g:Test_syntax') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
103 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
104 g:newvar = 'new' #comment |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
105 assert_equal('new', g:newvar) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
106 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
107 assert_equal('yes', g:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
108 g:existing = 'no' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
109 assert_equal('no', g:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
110 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
111 v:char = 'abc' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
112 assert_equal('abc', v:char) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
113 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
114 $ENVVAR = 'foobar' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
115 assert_equal('foobar', $ENVVAR) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
116 $ENVVAR = '' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
117 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
118 var lines =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
119 vim9script |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
120 $ENVVAR = 'barfoo' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
121 assert_equal('barfoo', $ENVVAR) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
122 $ENVVAR = '' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
123 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
124 CheckScriptSuccess(lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
125 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
126 s:appendToMe ..= 'yyy' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
127 assert_equal('xxxyyy', s:appendToMe) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
128 s:addToMe += 222 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
129 assert_equal(333, s:addToMe) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
130 s:newVar = 'new' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
131 assert_equal('new', s:newVar) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
132 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
133 set ts=7 |
23422
bb0c53f4ef8b
patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents:
23338
diff
changeset
|
134 var ts: number = &ts |
bb0c53f4ef8b
patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents:
23338
diff
changeset
|
135 assert_equal(7, ts) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
136 &ts += 1 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
137 assert_equal(8, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
138 &ts -= 3 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
139 assert_equal(5, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
140 &ts *= 2 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
141 assert_equal(10, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
142 &ts /= 3 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
143 assert_equal(3, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
144 set ts=10 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
145 &ts %= 4 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
146 assert_equal(2, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
147 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
148 if has('float') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
149 var f100: float = 100.0 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
150 f100 /= 5 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
151 assert_equal(20.0, f100) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
152 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
153 var f200: float = 200.0 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
154 f200 /= 5.0 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
155 assert_equal(40.0, f200) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
156 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
157 CheckDefFailure(['var nr: number = 200', 'nr /= 5.0'], 'E1012:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
158 endif |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
159 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
160 lines =<< trim END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
161 &ts = 6 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
162 &ts += 3 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
163 assert_equal(9, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
164 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
165 &l:ts = 6 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
166 assert_equal(6, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
167 &l:ts += 2 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
168 assert_equal(8, &ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
169 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
170 &g:ts = 6 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
171 assert_equal(6, &g:ts) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
172 &g:ts += 2 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
173 assert_equal(8, &g:ts) |
23509
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
174 |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
175 &number = true |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
176 assert_equal(true, &number) |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
177 &number = 0 |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
178 assert_equal(false, &number) |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
179 &number = 1 |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
180 assert_equal(true, &number) |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
181 &number = false |
18f3dc6974af
patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents:
23495
diff
changeset
|
182 assert_equal(false, &number) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
183 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
184 CheckDefAndScriptSuccess(lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
185 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
186 CheckDefFailure(['¬ex += 3'], 'E113:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
187 CheckDefFailure(['&ts ..= "xxx"'], 'E1019:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
188 CheckDefFailure(['&ts = [7]'], 'E1012:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
189 CheckDefExecFailure(['&ts = g:alist'], 'E1012: Type mismatch; expected number but got list<number>') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
190 CheckDefFailure(['&ts = "xx"'], 'E1012:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
191 CheckDefExecFailure(['&ts = g:astring'], 'E1012: Type mismatch; expected number but got string') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
192 CheckDefFailure(['&path += 3'], 'E1012:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
193 CheckDefExecFailure(['&bs = "asdf"'], 'E474:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
194 # test freeing ISN_STOREOPT |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
195 CheckDefFailure(['&ts = 3', 'var asdf'], 'E1022:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
196 &ts = 8 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
197 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
198 lines =<< trim END |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
199 var save_TI = &t_TI |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
200 &t_TI = '' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
201 assert_equal('', &t_TI) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
202 &t_TI = 'xxx' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
203 assert_equal('xxx', &t_TI) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
204 &t_TI = save_TI |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
205 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
206 CheckDefAndScriptSuccess(lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
207 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
208 CheckDefFailure(['&t_TI = 123'], 'E1012:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
209 CheckScriptFailure(['vim9script', '&t_TI = 123'], 'E928:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
210 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
211 CheckDefFailure(['var s:var = 123'], 'E1101:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
212 CheckDefFailure(['var s:var: number'], 'E1101:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
213 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
214 lines =<< trim END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
215 vim9script |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
216 def SomeFunc() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
217 s:var = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
218 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
219 defcompile |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
220 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
221 CheckScriptFailure(lines, 'E1089:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
222 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
223 g:inc_counter += 1 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
224 assert_equal(2, g:inc_counter) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
225 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
226 $SOME_ENV_VAR ..= 'more' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
227 assert_equal('somemore', $SOME_ENV_VAR) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
228 CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
229 CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
230 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
231 lines =<< trim END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
232 @c = 'areg' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
233 @c ..= 'add' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
234 assert_equal('aregadd', @c) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
235 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
236 CheckDefAndScriptSuccess(lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
237 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
238 CheckDefFailure(['@a += "more"'], 'E1051:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
239 CheckDefFailure(['@a += 123'], 'E1012:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
240 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
241 v:errmsg = 'none' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
242 v:errmsg ..= 'again' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
243 assert_equal('noneagain', v:errmsg) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
244 CheckDefFailure(['v:errmsg += "more"'], 'E1051:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
245 CheckDefFailure(['v:errmsg += 123'], 'E1012:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
246 |
22582
a3df1fb28d44
patch 8.2.1839: Vim9: memory leaks reported in assign test
Bram Moolenaar <Bram@vim.org>
parents:
22545
diff
changeset
|
247 var text =<< trim END |
a3df1fb28d44
patch 8.2.1839: Vim9: memory leaks reported in assign test
Bram Moolenaar <Bram@vim.org>
parents:
22545
diff
changeset
|
248 some text |
a3df1fb28d44
patch 8.2.1839: Vim9: memory leaks reported in assign test
Bram Moolenaar <Bram@vim.org>
parents:
22545
diff
changeset
|
249 END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
250 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
251 |
23122
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
252 def Test_assign_unpack() |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
253 var lines =<< trim END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
254 var v1: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
255 var v2: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
256 [v1, v2] = [1, 2] |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
257 assert_equal(1, v1) |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
258 assert_equal(2, v2) |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
259 END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
260 CheckDefAndScriptSuccess(lines) |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
261 |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
262 lines =<< trim END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
263 var v1: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
264 var v2: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
265 [v1, v2] = |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
266 END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
267 CheckDefFailure(lines, 'E1097:', 5) |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
268 |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
269 lines =<< trim END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
270 var v1: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
271 var v2: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
272 [v1, v2] = xxx |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
273 END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
274 CheckDefFailure(lines, 'E1001:', 3) |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
275 |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
276 lines =<< trim END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
277 var v1: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
278 var v2: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
279 [v1, v2] = popup_clear() |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
280 END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
281 CheckDefFailure(lines, 'E1031:', 3) |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
282 |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
283 lines =<< trim END |
23450
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
284 [v1, v2] = [1, 2] |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
285 END |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
286 CheckDefFailure(lines, 'E1089', 1) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
287 CheckScriptFailure(['vim9script'] + lines, 'E1089', 2) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
288 |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
289 lines =<< trim END |
23122
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
290 var v1: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
291 var v2: number |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
292 [v1, v2] = '' |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
293 END |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
294 CheckDefFailure(lines, 'E1012: Type mismatch; expected list<any> but got string', 3) |
23917
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
295 |
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
296 lines =<< trim END |
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
297 g:values = [false, 0] |
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
298 var x: bool |
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
299 var y: string |
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
300 [x, y] = g:values |
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
301 END |
4b417b776b95
patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents:
23707
diff
changeset
|
302 CheckDefExecAndScriptFailure(lines, 'E1163: Variable 2: type mismatch, expected string but got number') |
23122
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
303 enddef |
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
304 |
23070
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
305 def Test_assign_linebreak() |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
306 var nr: number |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
307 nr = |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
308 123 |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
309 assert_equal(123, nr) |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
310 |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
311 var n2: number |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
312 [nr, n2] = |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
313 [12, 34] |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
314 assert_equal(12, nr) |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
315 assert_equal(34, n2) |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
316 |
23122
60a0221beab0
patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
317 CheckDefFailure(["var x = #"], 'E1097:', 3) |
24329
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
318 |
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
319 var lines =<< trim END |
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
320 var x: list<string> = ['a'] |
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
321 var y: list<number> = x |
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
322 ->copy() |
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
323 ->copy() |
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
324 END |
cd9f77409393
patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents:
24325
diff
changeset
|
325 CheckDefFailure(lines, 'E1012:', 2) |
23070
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
326 enddef |
6a70803f4cbe
patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23052
diff
changeset
|
327 |
23033
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
328 def Test_assign_index() |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
329 # list of list |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
330 var l1: list<number> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
331 l1[0] = 123 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
332 assert_equal([123], l1) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
333 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
334 var l2: list<list<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
335 l2[0] = [] |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
336 l2[0][0] = 123 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
337 assert_equal([[123]], l2) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
338 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
339 var l3: list<list<list<number>>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
340 l3[0] = [] |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
341 l3[0][0] = [] |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
342 l3[0][0][0] = 123 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
343 assert_equal([[[123]]], l3) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
344 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
345 var lines =<< trim END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
346 var l3: list<list<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
347 l3[0] = [] |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
348 l3[0][0] = [] |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
349 END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
350 CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown>', 3) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
351 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
352 # dict of dict |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
353 var d1: dict<number> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
354 d1.one = 1 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
355 assert_equal({one: 1}, d1) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
356 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
357 var d2: dict<dict<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
358 d2.one = {} |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
359 d2.one.two = 123 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
360 assert_equal({one: {two: 123}}, d2) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
361 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
362 var d3: dict<dict<dict<number>>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
363 d3.one = {} |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
364 d3.one.two = {} |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
365 d3.one.two.three = 123 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
366 assert_equal({one: {two: {three: 123}}}, d3) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
367 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
368 lines =<< trim END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
369 var d3: dict<dict<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
370 d3.one = {} |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
371 d3.one.two = {} |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
372 END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
373 CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got dict<unknown>', 3) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
374 |
23187
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
375 lines =<< trim END |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
376 var lines: list<string> |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
377 lines['a'] = 'asdf' |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
378 END |
23662
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
379 CheckDefFailure(lines, 'E1012:', 2) |
23187
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
380 |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
381 lines =<< trim END |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
382 var lines: string |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
383 lines[9] = 'asdf' |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
384 END |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
385 CheckDefFailure(lines, 'E1141:', 2) |
013aa8e2be8c
patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents:
23185
diff
changeset
|
386 |
23033
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
387 # list of dict |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
388 var ld: list<dict<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
389 ld[0] = {} |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
390 ld[0].one = 123 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
391 assert_equal([{one: 123}], ld) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
392 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
393 lines =<< trim END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
394 var ld: list<dict<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
395 ld[0] = [] |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
396 END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
397 CheckDefFailure(lines, 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
398 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
399 # dict of list |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
400 var dl: dict<list<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
401 dl.one = [] |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
402 dl.one[0] = 123 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
403 assert_equal({one: [123]}, dl) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
404 |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
405 lines =<< trim END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
406 var dl: dict<list<number>> |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
407 dl.one = {} |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
408 END |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
409 CheckDefFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<unknown>', 2) |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
410 enddef |
b98003d73150
patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents:
22906
diff
changeset
|
411 |
22365
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
412 def Test_extend_list() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
413 var lines =<< trim END |
22365
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
414 vim9script |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
415 var l: list<number> |
22365
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
416 l += [123] |
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
417 assert_equal([123], l) |
22802
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
418 END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
419 CheckScriptSuccess(lines) |
22365
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
420 |
22802
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
421 lines =<< trim END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
422 vim9script |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
423 var list: list<string> |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
424 extend(list, ['x']) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
425 assert_equal(['x'], list) |
22365
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
426 END |
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
427 CheckScriptSuccess(lines) |
22545
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
428 |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
429 # appending to NULL list from a function |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
430 lines =<< trim END |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
431 vim9script |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
432 var list: list<string> |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
433 def Func() |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
434 list += ['a', 'b'] |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
435 enddef |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
436 Func() |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
437 assert_equal(['a', 'b'], list) |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
438 END |
47596deedfb5
patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
22494
diff
changeset
|
439 CheckScriptSuccess(lines) |
23227
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
440 lines =<< trim END |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
441 vim9script |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
442 var list: list<string> |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
443 def Func() |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
444 extend(list, ['x', 'b']) |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
445 enddef |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
446 Func() |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
447 assert_equal(['x', 'b'], list) |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
448 END |
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
449 CheckScriptSuccess(lines) |
22802
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
450 |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
451 lines =<< trim END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
452 vim9script |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
453 var l: list<string> = test_null_list() |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
454 extend(l, ['x']) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
455 assert_equal(['x'], l) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
456 END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
457 CheckScriptSuccess(lines) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
458 |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
459 lines =<< trim END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
460 vim9script |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
461 extend(test_null_list(), ['x']) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
462 END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
463 CheckScriptFailure(lines, 'E1134:', 2) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
464 enddef |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
465 |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
466 def Test_extend_dict() |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
467 var lines =<< trim END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
468 vim9script |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
469 var d: dict<number> |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
470 extend(d, {a: 1}) |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
471 assert_equal({a: 1}, d) |
22802
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
472 |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
473 var d2: dict<number> |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
474 d2['one'] = 1 |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
475 assert_equal({one: 1}, d2) |
22802
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
476 END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
477 CheckScriptSuccess(lines) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
478 |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
479 lines =<< trim END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
480 vim9script |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
481 var d: dict<string> = test_null_dict() |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
482 extend(d, {a: 'x'}) |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
483 assert_equal({a: 'x'}, d) |
22802
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
484 END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
485 CheckScriptSuccess(lines) |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
486 |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
487 lines =<< trim END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
488 vim9script |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
489 extend(test_null_dict(), {a: 'x'}) |
22802
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
490 END |
3e0f909ca1f2
patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents:
22631
diff
changeset
|
491 CheckScriptFailure(lines, 'E1133:', 2) |
22365
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
492 enddef |
a4866826cebc
patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents:
22363
diff
changeset
|
493 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
494 def Test_single_letter_vars() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
495 # single letter variables |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
496 var a: number = 123 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
497 a = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
498 assert_equal(123, a) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
499 var b: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
500 b = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
501 assert_equal(123, b) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
502 var g: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
503 g = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
504 assert_equal(123, g) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
505 var s: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
506 s = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
507 assert_equal(123, s) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
508 var t: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
509 t = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
510 assert_equal(123, t) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
511 var v: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
512 v = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
513 assert_equal(123, v) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
514 var w: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
515 w = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
516 assert_equal(123, w) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
517 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
518 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
519 def Test_vim9_single_char_vars() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
520 var lines =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
521 vim9script |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
522 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
523 # single character variable declarations work |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
524 var a: string |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
525 var b: number |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
526 var l: list<any> |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
527 var s: string |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
528 var t: number |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
529 var v: number |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
530 var w: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
531 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
532 # script-local variables can be used without s: prefix |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
533 a = 'script-a' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
534 b = 111 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
535 l = [1, 2, 3] |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
536 s = 'script-s' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
537 t = 222 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
538 v = 333 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
539 w = 444 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
540 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
541 assert_equal('script-a', a) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
542 assert_equal(111, b) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
543 assert_equal([1, 2, 3], l) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
544 assert_equal('script-s', s) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
545 assert_equal(222, t) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
546 assert_equal(333, v) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
547 assert_equal(444, w) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
548 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
549 writefile(lines, 'Xsinglechar') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
550 source Xsinglechar |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
551 delete('Xsinglechar') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
552 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
553 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
554 def Test_assignment_list() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
555 var list1: list<bool> = [false, true, false] |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
556 var list2: list<number> = [1, 2, 3] |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
557 var list3: list<string> = ['sdf', 'asdf'] |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
558 var list4: list<any> = ['yes', true, 1234] |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
559 var list5: list<blob> = [0z01, 0z02] |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
560 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
561 var listS: list<string> = [] |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
562 var listN: list<number> = [] |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
563 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
564 assert_equal([1, 2, 3], list2) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
565 list2[-1] = 99 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
566 assert_equal([1, 2, 99], list2) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
567 list2[-2] = 88 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
568 assert_equal([1, 88, 99], list2) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
569 list2[-3] = 77 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
570 assert_equal([77, 88, 99], list2) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
571 list2 += [100] |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
572 assert_equal([77, 88, 99, 100], list2) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
573 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
574 list3 += ['end'] |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
575 assert_equal(['sdf', 'asdf', 'end'], list3) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
576 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
577 CheckDefExecFailure(['var ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
578 CheckDefExecFailure(['var [v1, v2] = [1, 2]'], 'E1092:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
579 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
580 # type becomes list<any> |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
581 var somelist = rand() > 0 ? [1, 2, 3] : ['a', 'b', 'c'] |
23266
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
582 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
583 var lines =<< trim END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
584 var d = {dd: test_null_list()} |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
585 d.dd[0] = 0 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
586 END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
587 CheckDefExecFailure(lines, 'E1147:', 2) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
588 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
589 |
23662
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
590 def Test_assignment_list_any_index() |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
591 var l: list<number> = [1, 2] |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
592 for [x, y, _] |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
593 in [[0, 1, ''], [1, 3, '']] |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
594 l[x] = l[x] + y |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
595 endfor |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
596 assert_equal([2, 5], l) |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
597 enddef |
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
598 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
599 def Test_assignment_list_vim9script() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
600 var lines =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
601 vim9script |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
602 var v1: number |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
603 var v2: number |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
604 var v3: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
605 [v1, v2, v3] = [1, 2, 3] |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
606 assert_equal([1, 2, 3], [v1, v2, v3]) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
607 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
608 CheckScriptSuccess(lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
609 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
610 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
611 def Test_assignment_dict() |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
612 var dict1: dict<bool> = {one: false, two: true} |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
613 var dict2: dict<number> = {one: 1, two: 2} |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
614 var dict3: dict<string> = {key: 'value'} |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
615 var dict4: dict<any> = {one: 1, two: '2'} |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
616 var dict5: dict<blob> = {one: 0z01, two: 0z02} |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
617 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
618 # overwrite |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
619 dict3['key'] = 'another' |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
620 assert_equal(dict3, {key: 'another'}) |
22906
5ff7125e81fc
patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
22802
diff
changeset
|
621 dict3.key = 'yet another' |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
622 assert_equal(dict3, {key: 'yet another'}) |
22906
5ff7125e81fc
patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
22802
diff
changeset
|
623 |
23245
ac934fbacc0e
patch 8.2.2168: Vim9: error for assigning to dict of dict
Bram Moolenaar <Bram@vim.org>
parents:
23243
diff
changeset
|
624 # member "any" can also be a dict and assigned to |
ac934fbacc0e
patch 8.2.2168: Vim9: error for assigning to dict of dict
Bram Moolenaar <Bram@vim.org>
parents:
23243
diff
changeset
|
625 var anydict: dict<any> = {nest: {}, nr: 0} |
ac934fbacc0e
patch 8.2.2168: Vim9: error for assigning to dict of dict
Bram Moolenaar <Bram@vim.org>
parents:
23243
diff
changeset
|
626 anydict.nest['this'] = 123 |
ac934fbacc0e
patch 8.2.2168: Vim9: error for assigning to dict of dict
Bram Moolenaar <Bram@vim.org>
parents:
23243
diff
changeset
|
627 anydict.nest.that = 456 |
ac934fbacc0e
patch 8.2.2168: Vim9: error for assigning to dict of dict
Bram Moolenaar <Bram@vim.org>
parents:
23243
diff
changeset
|
628 assert_equal({nest: {this: 123, that: 456}, nr: 0}, anydict) |
ac934fbacc0e
patch 8.2.2168: Vim9: error for assigning to dict of dict
Bram Moolenaar <Bram@vim.org>
parents:
23243
diff
changeset
|
629 |
22906
5ff7125e81fc
patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
22802
diff
changeset
|
630 var lines =<< trim END |
23243
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
631 var dd = {} |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
632 dd.two = 2 |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
633 assert_equal({two: 2}, dd) |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
634 END |
23266
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
635 CheckDefAndScriptSuccess(lines) |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
636 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
637 lines =<< trim END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
638 var d = {dd: {}} |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
639 d.dd[0] = 2 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
640 d.dd['x'] = 3 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
641 d.dd.y = 4 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
642 assert_equal({dd: {0: 2, x: 3, y: 4}}, d) |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
643 END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
644 CheckDefAndScriptSuccess(lines) |
23243
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
645 |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
646 lines =<< trim END |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
647 var dd = {one: 1} |
22906
5ff7125e81fc
patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
22802
diff
changeset
|
648 dd.one) = 2 |
5ff7125e81fc
patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
22802
diff
changeset
|
649 END |
23243
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
650 CheckDefFailure(lines, 'E488:', 2) |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
651 |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
652 lines =<< trim END |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
653 var dd = {one: 1} |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
654 var dd.one = 2 |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
655 END |
0804cb073097
patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents:
23227
diff
changeset
|
656 CheckDefAndScriptFailure(lines, 'E1017:', 2) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
657 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
658 # empty key can be used |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
659 var dd = {} |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
660 dd[""] = 6 |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
661 assert_equal({['']: 6}, dd) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
662 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
663 # type becomes dict<any> |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
664 var somedict = rand() > 0 ? {a: 1, b: 2} : {a: 'a', b: 'b'} |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
665 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
666 # assignment to script-local dict |
22906
5ff7125e81fc
patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents:
22802
diff
changeset
|
667 lines =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
668 vim9script |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
669 var test: dict<any> = {} |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
670 def FillDict(): dict<any> |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
671 test['a'] = 43 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
672 return test |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
673 enddef |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
674 assert_equal({a: 43}, FillDict()) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
675 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
676 CheckScriptSuccess(lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
677 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
678 lines =<< trim END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
679 vim9script |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
680 var test: dict<any> |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
681 def FillDict(): dict<any> |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
682 test['a'] = 43 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
683 return test |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
684 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
685 FillDict() |
23227
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
686 assert_equal({a: 43}, test) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
687 END |
23227
ccbbbbed371f
patch 8.2.2159: Vim9: when declaring a list it is not allocated yet
Bram Moolenaar <Bram@vim.org>
parents:
23223
diff
changeset
|
688 CheckScriptSuccess(lines) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
689 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
690 # assignment to global dict |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
691 lines =<< trim END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
692 vim9script |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
693 g:test = {} |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
694 def FillDict(): dict<any> |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
695 g:test['a'] = 43 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
696 return g:test |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
697 enddef |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
698 assert_equal({a: 43}, FillDict()) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
699 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
700 CheckScriptSuccess(lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
701 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
702 # assignment to buffer dict |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
703 lines =<< trim END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
704 vim9script |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
705 b:test = {} |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
706 def FillDict(): dict<any> |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
707 b:test['a'] = 43 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
708 return b:test |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
709 enddef |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
710 assert_equal({a: 43}, FillDict()) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
711 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
712 CheckScriptSuccess(lines) |
23266
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
713 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
714 lines =<< trim END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
715 var d = {dd: test_null_dict()} |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
716 d.dd[0] = 0 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
717 END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
718 CheckDefExecFailure(lines, 'E1103:', 2) |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
719 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
720 lines =<< trim END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
721 var d = {dd: 'string'} |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
722 d.dd[0] = 0 |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
723 END |
00f7cd9b6033
patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents:
23245
diff
changeset
|
724 CheckDefExecFailure(lines, 'E1148:', 2) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
725 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
726 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
727 def Test_assignment_local() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
728 # Test in a separated file in order not to the current buffer/window/tab is |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
729 # changed. |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
730 var script_lines: list<string> =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
731 let b:existing = 'yes' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
732 let w:existing = 'yes' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
733 let t:existing = 'yes' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
734 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
735 def Test_assignment_local_internal() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
736 b:newvar = 'new' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
737 assert_equal('new', b:newvar) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
738 assert_equal('yes', b:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
739 b:existing = 'no' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
740 assert_equal('no', b:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
741 b:existing ..= 'NO' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
742 assert_equal('noNO', b:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
743 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
744 w:newvar = 'new' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
745 assert_equal('new', w:newvar) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
746 assert_equal('yes', w:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
747 w:existing = 'no' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
748 assert_equal('no', w:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
749 w:existing ..= 'NO' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
750 assert_equal('noNO', w:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
751 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
752 t:newvar = 'new' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
753 assert_equal('new', t:newvar) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
754 assert_equal('yes', t:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
755 t:existing = 'no' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
756 assert_equal('no', t:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
757 t:existing ..= 'NO' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
758 assert_equal('noNO', t:existing) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
759 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
760 call Test_assignment_local_internal() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
761 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
762 CheckScriptSuccess(script_lines) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
763 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
764 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
765 def Test_assignment_default() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
766 # Test default values. |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
767 var thebool: bool |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
768 assert_equal(v:false, thebool) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
769 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
770 var thenumber: number |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
771 assert_equal(0, thenumber) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
772 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
773 if has('float') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
774 var thefloat: float |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
775 assert_equal(0.0, thefloat) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
776 endif |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
777 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
778 var thestring: string |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
779 assert_equal('', thestring) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
780 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
781 var theblob: blob |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
782 assert_equal(0z, theblob) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
783 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
784 var Thefunc: func |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
785 assert_equal(test_null_function(), Thefunc) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
786 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
787 var thelist: list<any> |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
788 assert_equal([], thelist) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
789 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
790 var thedict: dict<any> |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
791 assert_equal({}, thedict) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
792 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
793 if has('channel') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
794 var thejob: job |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
795 assert_equal(test_null_job(), thejob) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
796 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
797 var thechannel: channel |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
798 assert_equal(test_null_channel(), thechannel) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
799 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
800 if has('unix') && executable('cat') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
801 # check with non-null job and channel, types must match |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
802 thejob = job_start("cat ", {}) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
803 thechannel = job_getchannel(thejob) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
804 job_stop(thejob, 'kill') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
805 endif |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
806 endif |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
807 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
808 var nr = 1234 | nr = 5678 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
809 assert_equal(5678, nr) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
810 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
811 |
23450
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
812 let scriptvar = 'init' |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
813 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
814 def Test_assignment_var_list() |
23050
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
815 var lines =<< trim END |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
816 var v1: string |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
817 var v2: string |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
818 var vrem: list<string> |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
819 [v1] = ['aaa'] |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
820 assert_equal('aaa', v1) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
821 |
23050
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
822 [v1, v2] = ['one', 'two'] |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
823 assert_equal('one', v1) |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
824 assert_equal('two', v2) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
825 |
23050
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
826 [v1, v2; vrem] = ['one', 'two'] |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
827 assert_equal('one', v1) |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
828 assert_equal('two', v2) |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
829 assert_equal([], vrem) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
830 |
23050
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
831 [v1, v2; vrem] = ['one', 'two', 'three'] |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
832 assert_equal('one', v1) |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
833 assert_equal('two', v2) |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
834 assert_equal(['three'], vrem) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
835 |
23050
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
836 [&ts, &sw] = [3, 4] |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
837 assert_equal(3, &ts) |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
838 assert_equal(4, &sw) |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
839 set ts=8 sw=4 |
23052
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
840 |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
841 [@a, @z] = ['aa', 'zz'] |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
842 assert_equal('aa', @a) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
843 assert_equal('zz', @z) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
844 |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
845 [$SOME_VAR, $OTHER_VAR] = ['some', 'other'] |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
846 assert_equal('some', $SOME_VAR) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
847 assert_equal('other', $OTHER_VAR) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
848 |
23450
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
849 [g:globalvar, b:bufvar, w:winvar, t:tabvar, v:errmsg] = |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
850 ['global', 'buf', 'win', 'tab', 'error'] |
23052
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
851 assert_equal('global', g:globalvar) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
852 assert_equal('buf', b:bufvar) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
853 assert_equal('win', w:winvar) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
854 assert_equal('tab', t:tabvar) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
855 assert_equal('error', v:errmsg) |
9775df18916b
patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents:
23050
diff
changeset
|
856 unlet g:globalvar |
23050
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
857 END |
50442f932ff7
patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents:
23039
diff
changeset
|
858 CheckDefAndScriptSuccess(lines) |
23450
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
859 |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
860 [g:globalvar, s:scriptvar, b:bufvar] = ['global', 'script', 'buf'] |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
861 assert_equal('global', g:globalvar) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
862 assert_equal('script', s:scriptvar) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
863 assert_equal('buf', b:bufvar) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
864 |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
865 lines =<< trim END |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
866 vim9script |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
867 var s:scriptvar = 'init' |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
868 [g:globalvar, s:scriptvar, w:winvar] = ['global', 'script', 'win'] |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
869 assert_equal('global', g:globalvar) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
870 assert_equal('script', s:scriptvar) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
871 assert_equal('win', w:winvar) |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
872 END |
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
873 CheckScriptSuccess(lines) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
874 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
875 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
876 def Test_assignment_vim9script() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
877 var lines =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
878 vim9script |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
879 def Func(): list<number> |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
880 return [1, 2] |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
881 enddef |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
882 var name1: number |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
883 var name2: number |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
884 [name1, name2] = |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
885 Func() |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
886 assert_equal(1, name1) |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
887 assert_equal(2, name2) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
888 var ll = |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
889 Func() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
890 assert_equal([1, 2], ll) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
891 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
892 @/ = 'text' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
893 assert_equal('text', @/) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
894 @0 = 'zero' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
895 assert_equal('zero', @0) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
896 @1 = 'one' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
897 assert_equal('one', @1) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
898 @9 = 'nine' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
899 assert_equal('nine', @9) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
900 @- = 'minus' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
901 assert_equal('minus', @-) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
902 if has('clipboard_working') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
903 @* = 'star' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
904 assert_equal('star', @*) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
905 @+ = 'plus' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
906 assert_equal('plus', @+) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
907 endif |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
908 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
909 var a: number = 123 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
910 assert_equal(123, a) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
911 var s: string = 'yes' |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
912 assert_equal('yes', s) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
913 var b: number = 42 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
914 assert_equal(42, b) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
915 var w: number = 43 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
916 assert_equal(43, w) |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
917 var t: number = 44 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
918 assert_equal(44, t) |
22610
08e2363fd0de
patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Bram Moolenaar <Bram@vim.org>
parents:
22582
diff
changeset
|
919 |
08e2363fd0de
patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Bram Moolenaar <Bram@vim.org>
parents:
22582
diff
changeset
|
920 var to_var = 0 |
08e2363fd0de
patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Bram Moolenaar <Bram@vim.org>
parents:
22582
diff
changeset
|
921 to_var = 3 |
08e2363fd0de
patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Bram Moolenaar <Bram@vim.org>
parents:
22582
diff
changeset
|
922 assert_equal(3, to_var) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
923 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
924 CheckScriptSuccess(lines) |
22431
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
925 |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
926 lines =<< trim END |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
927 vim9script |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
928 var n: number |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
929 def Func() |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
930 n = 'string' |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
931 enddef |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
932 defcompile |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
933 END |
685909aa5641
patch 8.2.1764: Vim9: no error when assigning to script var with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
22425
diff
changeset
|
934 CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got string') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
935 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
936 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
937 def Mess(): string |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
938 v:foldstart = 123 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
939 return 'xxx' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
940 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
941 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
942 def Test_assignment_failure() |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
943 CheckDefFailure(['var name=234'], 'E1004:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
944 CheckDefFailure(['var name =234'], 'E1004:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
945 CheckDefFailure(['var name= 234'], 'E1004:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
946 |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
947 CheckScriptFailure(['vim9script', 'var name=234'], 'E1004:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
948 CheckScriptFailure(['vim9script', 'var name=234'], "before and after '='") |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
949 CheckScriptFailure(['vim9script', 'var name =234'], 'E1004:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
950 CheckScriptFailure(['vim9script', 'var name= 234'], 'E1004:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
951 CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], 'E1004:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
952 CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], "before and after '+='") |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
953 CheckScriptFailure(['vim9script', 'var name = "x"', 'name..="y"'], 'E1004:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
954 CheckScriptFailure(['vim9script', 'var name = "x"', 'name..="y"'], "before and after '..='") |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
955 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
956 CheckDefFailure(['var true = 1'], 'E1034:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
957 CheckDefFailure(['var false = 1'], 'E1034:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
958 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
959 CheckDefFailure(['[a; b; c] = g:list'], 'E452:') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
960 CheckDefExecFailure(['var a: number', |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
961 '[a] = test_null_list()'], 'E1093:') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
962 CheckDefExecFailure(['var a: number', |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
963 '[a] = []'], 'E1093:') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
964 CheckDefExecFailure(['var x: number', |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
965 'var y: number', |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
966 '[x, y] = [1]'], 'E1093:') |
22621
576a69fc0066
patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents:
22618
diff
changeset
|
967 CheckDefExecFailure(['var x: string', |
576a69fc0066
patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents:
22618
diff
changeset
|
968 'var y: string', |
576a69fc0066
patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents:
22618
diff
changeset
|
969 '[x, y] = ["x"]'], 'E1093:') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
970 CheckDefExecFailure(['var x: number', |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
971 'var y: number', |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
972 'var z: list<number>', |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
973 '[x, y; z] = [1]'], 'E1093:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
974 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
975 CheckDefFailure(['var somevar'], "E1022:") |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
976 CheckDefFailure(['var &tabstop = 4'], 'E1052:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
977 CheckDefFailure(['&g:option = 5'], 'E113:') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
978 CheckScriptFailure(['vim9script', 'var &tabstop = 4'], 'E1052:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
979 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
980 CheckDefFailure(['var $VAR = 5'], 'E1016: Cannot declare an environment variable:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
981 CheckScriptFailure(['vim9script', 'var $ENV = "xxx"'], 'E1016:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
982 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
983 if has('dnd') |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
984 CheckDefFailure(['var @~ = 5'], 'E1066:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
985 else |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
986 CheckDefFailure(['var @~ = 5'], 'E354:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
987 CheckDefFailure(['@~ = 5'], 'E354:') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
988 endif |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
989 CheckDefFailure(['var @a = 5'], 'E1066:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
990 CheckDefFailure(['var @/ = "x"'], 'E1066:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
991 CheckScriptFailure(['vim9script', 'var @a = "abc"'], 'E1066:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
992 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
993 CheckDefFailure(['var g:var = 5'], 'E1016: Cannot declare a global variable:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
994 CheckDefFailure(['var w:var = 5'], 'E1016: Cannot declare a window variable:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
995 CheckDefFailure(['var b:var = 5'], 'E1016: Cannot declare a buffer variable:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
996 CheckDefFailure(['var t:var = 5'], 'E1016: Cannot declare a tab variable:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
997 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
998 CheckDefFailure(['var anr = 4', 'anr ..= "text"'], 'E1019:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
999 CheckDefFailure(['var xnr += 4'], 'E1020:', 1) |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1000 CheckScriptFailure(['vim9script', 'var xnr += 4'], 'E1020:') |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1001 CheckDefFailure(["var xnr = xnr + 1"], 'E1001:', 1) |
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1002 CheckScriptFailure(['vim9script', 'var xnr = xnr + 4'], 'E121:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1003 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1004 CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1005 |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
1006 CheckDefFailure(['var name: list<string> = [123]'], 'expected list<string> but got list<number>') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
1007 CheckDefFailure(['var name: list<number> = ["xx"]'], 'expected list<number> but got list<string>') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1008 |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
1009 CheckDefFailure(['var name: dict<string> = {key: 123}'], 'expected dict<string> but got dict<number>') |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
1010 CheckDefFailure(['var name: dict<number> = {key: "xx"}'], 'expected dict<number> but got dict<string>') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1011 |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
1012 CheckDefFailure(['var name = feedkeys("0")'], 'E1031:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
1013 CheckDefFailure(['var name: number = feedkeys("0")'], 'expected number but got void') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1014 |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
1015 CheckDefFailure(['var name: dict <number>'], 'E1068:') |
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
1016 CheckDefFailure(['var name: dict<number'], 'E1009:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1017 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1018 assert_fails('s/^/\=Mess()/n', 'E794:') |
22433
8b5e2f9580db
patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents:
22431
diff
changeset
|
1019 CheckDefFailure(['var name: dict<number'], 'E1009:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1020 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1021 CheckDefFailure(['w:foo: number = 10'], |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1022 'E488: Trailing characters: : number = 1') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1023 CheckDefFailure(['t:foo: bool = true'], |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1024 'E488: Trailing characters: : bool = true') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1025 CheckDefFailure(['b:foo: string = "x"'], |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1026 'E488: Trailing characters: : string = "x"') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1027 CheckDefFailure(['g:foo: number = 123'], |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1028 'E488: Trailing characters: : number = 123') |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1029 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1030 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1031 def Test_assign_list() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1032 var l: list<string> = [] |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1033 l[0] = 'value' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1034 assert_equal('value', l[0]) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1035 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1036 l[1] = 'asdf' |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1037 assert_equal('value', l[0]) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1038 assert_equal('asdf', l[1]) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1039 assert_equal('asdf', l[-1]) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1040 assert_equal('value', l[-2]) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1041 |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1042 var nrl: list<number> = [] |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1043 for i in range(5) |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1044 nrl[i] = i |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1045 endfor |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1046 assert_equal([0, 1, 2, 3, 4], nrl) |
22631
59cd5f8b2ab2
patch 8.2.1864: Vim9: no error for wrong list type
Bram Moolenaar <Bram@vim.org>
parents:
22621
diff
changeset
|
1047 |
59cd5f8b2ab2
patch 8.2.1864: Vim9: no error for wrong list type
Bram Moolenaar <Bram@vim.org>
parents:
22621
diff
changeset
|
1048 CheckDefFailure(["var l: list<number> = ['', true]"], 'E1012: Type mismatch; expected list<number> but got list<any>', 1) |
59cd5f8b2ab2
patch 8.2.1864: Vim9: no error for wrong list type
Bram Moolenaar <Bram@vim.org>
parents:
22621
diff
changeset
|
1049 CheckDefFailure(["var l: list<list<number>> = [['', true]]"], 'E1012: Type mismatch; expected list<list<number>> but got list<list<any>>', 1) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1050 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1051 |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1052 def Test_assign_dict() |
23448
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1053 var lines =<< trim END |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1054 var d: dict<string> = {} |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1055 d['key'] = 'value' |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1056 assert_equal('value', d['key']) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1057 |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1058 d[123] = 'qwerty' |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1059 assert_equal('qwerty', d[123]) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1060 assert_equal('qwerty', d['123']) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1061 |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1062 var nrd: dict<number> = {} |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1063 for i in range(3) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1064 nrd[i] = i |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1065 endfor |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1066 assert_equal({0: 0, 1: 1, 2: 2}, nrd) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1067 |
23448
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1068 d.somekey = 'someval' |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1069 assert_equal({key: 'value', '123': 'qwerty', somekey: 'someval'}, d) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1070 # unlet d.somekey |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1071 # assert_equal({key: 'value', '123': 'qwerty'}, d) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1072 END |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1073 CheckDefAndScriptSuccess(lines) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1074 |
23448
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1075 # TODO: move to above once "unlet d.somekey" in :def is implemented |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1076 lines =<< trim END |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1077 vim9script |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1078 var d: dict<string> = {} |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1079 d['key'] = 'value' |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1080 d.somekey = 'someval' |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1081 assert_equal({key: 'value', somekey: 'someval'}, d) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1082 unlet d.somekey |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1083 assert_equal({key: 'value'}, d) |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1084 END |
8f31b990ab1e
patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
1085 CheckScriptSuccess(lines) |
22631
59cd5f8b2ab2
patch 8.2.1864: Vim9: no error for wrong list type
Bram Moolenaar <Bram@vim.org>
parents:
22621
diff
changeset
|
1086 |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
1087 CheckDefFailure(["var d: dict<number> = {a: '', b: true}"], 'E1012: Type mismatch; expected dict<number> but got dict<any>', 1) |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
1088 CheckDefFailure(["var d: dict<dict<number>> = {x: {a: '', b: true}}"], 'E1012: Type mismatch; expected dict<dict<number>> but got dict<dict<any>>', 1) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1089 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1090 |
22363
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1091 def Test_assign_dict_unknown_type() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1092 var lines =<< trim END |
22363
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1093 vim9script |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1094 var mylist = [] |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
1095 mylist += [{one: 'one'}] |
22363
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1096 def Func() |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1097 var dd = mylist[0] |
22363
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1098 assert_equal('one', dd.one) |
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1099 enddef |
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1100 Func() |
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1101 END |
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1102 CheckScriptSuccess(lines) |
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1103 |
23039
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1104 lines =<< trim END |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1105 vim9script |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1106 var mylist = [[]] |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23070
diff
changeset
|
1107 mylist[0] += [{one: 'one'}] |
23039
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1108 def Func() |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1109 var dd = mylist[0][0] |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1110 assert_equal('one', dd.one) |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1111 enddef |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1112 Func() |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1113 END |
75241f4377a4
patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23033
diff
changeset
|
1114 CheckScriptSuccess(lines) |
22363
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1115 enddef |
6c3d15011081
patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents:
22351
diff
changeset
|
1116 |
24047
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1117 def Test_assign_dict_with_op() |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1118 var lines =<< trim END |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1119 var ds: dict<string> = {a: 'x'} |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1120 ds['a'] ..= 'y' |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1121 ds.a ..= 'z' |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1122 assert_equal('xyz', ds.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1123 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1124 var dn: dict<number> = {a: 9} |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1125 dn['a'] += 2 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1126 assert_equal(11, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1127 dn.a += 2 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1128 assert_equal(13, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1129 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1130 dn['a'] -= 3 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1131 assert_equal(10, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1132 dn.a -= 2 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1133 assert_equal(8, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1134 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1135 dn['a'] *= 2 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1136 assert_equal(16, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1137 dn.a *= 2 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1138 assert_equal(32, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1139 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1140 dn['a'] /= 3 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1141 assert_equal(10, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1142 dn.a /= 2 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1143 assert_equal(5, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1144 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1145 dn['a'] %= 3 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1146 assert_equal(2, dn.a) |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1147 dn.a %= 6 |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1148 assert_equal(2, dn.a) |
24363
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1149 |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1150 var dd: dict<dict<list<any>>> |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1151 dd.a = {} |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1152 dd.a.b = [0] |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1153 dd.a.b += [1] |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1154 assert_equal({a: {b: [0, 1]}}, dd) |
24047
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1155 END |
24357
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1156 CheckDefAndScriptSuccess(lines) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1157 enddef |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1158 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1159 def Test_assign_list_with_op() |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1160 var lines =<< trim END |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1161 var ls: list<string> = ['x'] |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1162 ls[0] ..= 'y' |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1163 assert_equal('xy', ls[0]) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1164 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1165 var ln: list<number> = [9] |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1166 ln[0] += 2 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1167 assert_equal(11, ln[0]) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1168 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1169 ln[0] -= 3 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1170 assert_equal(8, ln[0]) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1171 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1172 ln[0] *= 2 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1173 assert_equal(16, ln[0]) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1174 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1175 ln[0] /= 3 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1176 assert_equal(5, ln[0]) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1177 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1178 ln[0] %= 3 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1179 assert_equal(2, ln[0]) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1180 END |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1181 CheckDefAndScriptSuccess(lines) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1182 enddef |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1183 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1184 def Test_assign_with_op_fails() |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1185 var lines =<< trim END |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1186 var s = 'abc' |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1187 s[1] += 'x' |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1188 END |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1189 CheckDefAndScriptFailure2(lines, 'E1141:', 'E689:', 2) |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1190 |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1191 lines =<< trim END |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1192 var s = 'abc' |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1193 s[1] ..= 'x' |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1194 END |
108a6e2497f6
patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24329
diff
changeset
|
1195 CheckDefAndScriptFailure2(lines, 'E1141:', 'E689:', 2) |
24363
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1196 |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1197 lines =<< trim END |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1198 var dd: dict<dict<list<any>>> |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1199 dd.a = {} |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1200 dd.a.b += [1] |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1201 END |
1a145eb83a28
patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents:
24357
diff
changeset
|
1202 CheckDefExecAndScriptFailure(lines, 'E716:', 3) |
24047
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1203 enddef |
b535ab17d160
patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents:
23982
diff
changeset
|
1204 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1205 def Test_assign_lambda() |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1206 # check if assign a lambda to a variable which type is func or any. |
22391
a9fb7efa31d6
patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents:
22365
diff
changeset
|
1207 var lines =<< trim END |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1208 vim9script |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23422
diff
changeset
|
1209 var FuncRef = () => 123 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1210 assert_equal(123, FuncRef()) |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23422
diff
changeset
|
1211 var FuncRef_Func: func = () => 123 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1212 assert_equal(123, FuncRef_Func()) |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23422
diff
changeset
|
1213 var FuncRef_Any: any = () => 123 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1214 assert_equal(123, FuncRef_Any()) |
23970
ba79ceac82ec
patch 8.2.2527: Vim9: lambda return type is not determined at script level
Bram Moolenaar <Bram@vim.org>
parents:
23917
diff
changeset
|
1215 var FuncRef_Number: func(): number = () => 321 |
ba79ceac82ec
patch 8.2.2527: Vim9: lambda return type is not determined at script level
Bram Moolenaar <Bram@vim.org>
parents:
23917
diff
changeset
|
1216 assert_equal(321, FuncRef_Number()) |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1217 END |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1218 CheckScriptSuccess(lines) |
23531
f39a18a42aed
patch 8.2.2308: Vim9: no error when assigning lambda to funcref
Bram Moolenaar <Bram@vim.org>
parents:
23523
diff
changeset
|
1219 |
f39a18a42aed
patch 8.2.2308: Vim9: no error when assigning lambda to funcref
Bram Moolenaar <Bram@vim.org>
parents:
23523
diff
changeset
|
1220 lines =<< trim END |
f39a18a42aed
patch 8.2.2308: Vim9: no error when assigning lambda to funcref
Bram Moolenaar <Bram@vim.org>
parents:
23523
diff
changeset
|
1221 var Ref: func(number) |
f39a18a42aed
patch 8.2.2308: Vim9: no error when assigning lambda to funcref
Bram Moolenaar <Bram@vim.org>
parents:
23523
diff
changeset
|
1222 Ref = (j) => !j |
f39a18a42aed
patch 8.2.2308: Vim9: no error when assigning lambda to funcref
Bram Moolenaar <Bram@vim.org>
parents:
23523
diff
changeset
|
1223 END |
23970
ba79ceac82ec
patch 8.2.2527: Vim9: lambda return type is not determined at script level
Bram Moolenaar <Bram@vim.org>
parents:
23917
diff
changeset
|
1224 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected func(number) but got func(any): bool') |
23972
a620df0ebbe5
patch 8.2.2528: Vim9: crash when compiling lambda fails
Bram Moolenaar <Bram@vim.org>
parents:
23970
diff
changeset
|
1225 |
a620df0ebbe5
patch 8.2.2528: Vim9: crash when compiling lambda fails
Bram Moolenaar <Bram@vim.org>
parents:
23970
diff
changeset
|
1226 lines =<< trim END |
a620df0ebbe5
patch 8.2.2528: Vim9: crash when compiling lambda fails
Bram Moolenaar <Bram@vim.org>
parents:
23970
diff
changeset
|
1227 echo filter([1, 2, 3], (_, v: string) => v + 1) |
a620df0ebbe5
patch 8.2.2528: Vim9: crash when compiling lambda fails
Bram Moolenaar <Bram@vim.org>
parents:
23970
diff
changeset
|
1228 END |
a620df0ebbe5
patch 8.2.2528: Vim9: crash when compiling lambda fails
Bram Moolenaar <Bram@vim.org>
parents:
23970
diff
changeset
|
1229 CheckDefAndScriptFailure(lines, 'E1051:') |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1230 enddef |
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1231 |
22413
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1232 def Test_heredoc() |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1233 var lines =<< trim END # comment |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1234 text |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1235 END |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1236 assert_equal(['text'], lines) |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1237 |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1238 CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:') |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1239 CheckDefFailure(['var lines =<< trim END " comment', 'END'], 'E488:') |
22423
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1240 |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1241 lines =<< trim [END] |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1242 def Func() |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1243 var&lines =<< trim END |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1244 x |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1245 x |
23185
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1246 enddef |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1247 defcompile |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1248 [END] |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1249 CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END') |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1250 delfunc! g:Func |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1251 |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1252 lines =<< trim [END] |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1253 def Func() |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1254 var lines =<< trim END |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1255 x |
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1256 x |
22423
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1257 x |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1258 x |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1259 x |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1260 x |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1261 x |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1262 x |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1263 enddef |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1264 call Func() |
5b35b477eff0
patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents:
22413
diff
changeset
|
1265 [END] |
23185
055fa9db6f39
patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents:
23138
diff
changeset
|
1266 CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
1267 delfunc! g:Func |
22413
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1268 enddef |
66d1131a7eff
patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents:
22391
diff
changeset
|
1269 |
23124
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1270 def Test_var_func_call() |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1271 var lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1272 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1273 func GetValue() |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1274 if exists('g:count') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1275 let g:count += 1 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1276 else |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1277 let g:count = 1 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1278 endif |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1279 return 'this' |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1280 endfunc |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1281 var val: string = GetValue() |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1282 # env var is always a string |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1283 var env = $TERM |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1284 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1285 writefile(lines, 'Xfinished') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1286 source Xfinished |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1287 # GetValue() is not called during discovery phase |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1288 assert_equal(1, g:count) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1289 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1290 unlet g:count |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1291 delete('Xfinished') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1292 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1293 |
23124
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1294 def Test_var_missing_type() |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1295 var lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1296 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1297 var name = g:unknown |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1298 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1299 CheckScriptFailure(lines, 'E121:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1300 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1301 lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1302 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1303 var nr: number = 123 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1304 var name = nr |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1305 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1306 CheckScriptSuccess(lines) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1307 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1308 |
23124
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1309 def Test_var_declaration() |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1310 var lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1311 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1312 var name: string |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1313 g:var_uninit = name |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1314 name = 'text' |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1315 g:var_test = name |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1316 # prefixing s: is optional |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1317 s:name = 'prefixed' |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1318 g:var_prefixed = s:name |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1319 |
23138
1a9705075244
patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents:
23124
diff
changeset
|
1320 const FOO: number = 123 |
1a9705075244
patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents:
23124
diff
changeset
|
1321 assert_equal(123, FOO) |
23297
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1322 const FOOS = 'foos' |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1323 assert_equal('foos', FOOS) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1324 final FLIST = [1] |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1325 assert_equal([1], FLIST) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1326 FLIST[0] = 11 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1327 assert_equal([11], FLIST) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1328 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1329 const g:FOO: number = 321 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1330 assert_equal(321, g:FOO) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1331 const g:FOOS = 'gfoos' |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1332 assert_equal('gfoos', g:FOOS) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1333 final g:FLIST = [2] |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1334 assert_equal([2], g:FLIST) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1335 g:FLIST[0] = 22 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1336 assert_equal([22], g:FLIST) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1337 |
24293
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1338 def SetGlobalConst() |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1339 const g:globConst = 123 |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1340 enddef |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1341 SetGlobalConst() |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1342 assert_equal(123, g:globConst) |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1343 assert_true(islocked('g:globConst')) |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1344 |
23297
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1345 const w:FOO: number = 46 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1346 assert_equal(46, w:FOO) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1347 const w:FOOS = 'wfoos' |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1348 assert_equal('wfoos', w:FOOS) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1349 final w:FLIST = [3] |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1350 assert_equal([3], w:FLIST) |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1351 w:FLIST[0] = 33 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1352 assert_equal([33], w:FLIST) |
23138
1a9705075244
patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents:
23124
diff
changeset
|
1353 |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1354 var s:other: number |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1355 other = 1234 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1356 g:other_var = other |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1357 |
24238
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1358 var xyz: string # comment |
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1359 |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1360 # type is inferred |
23450
a8e7acf71fa4
patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents:
23448
diff
changeset
|
1361 var s:dict = {['a']: 222} |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1362 def GetDictVal(key: any) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1363 g:dict_val = s:dict[key] |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1364 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1365 GetDictVal('a') |
23578
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1366 |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1367 final adict: dict<string> = {} |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1368 def ChangeAdict() |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1369 adict.foo = 'foo' |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1370 enddef |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1371 ChangeAdict() |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1372 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1373 CheckScriptSuccess(lines) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1374 assert_equal('', g:var_uninit) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1375 assert_equal('text', g:var_test) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1376 assert_equal('prefixed', g:var_prefixed) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1377 assert_equal(1234, g:other_var) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1378 assert_equal(222, g:dict_val) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1379 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1380 unlet g:var_uninit |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1381 unlet g:var_test |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1382 unlet g:var_prefixed |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1383 unlet g:other_var |
24325
52a0e187264b
patch 8.2.2703: Vim9: memory leak when failing on locked variable
Bram Moolenaar <Bram@vim.org>
parents:
24305
diff
changeset
|
1384 unlet g:globConst |
23297
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1385 unlet g:FOO |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1386 unlet g:FOOS |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1387 unlet g:FLIST |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1388 unlet w:FOO |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1389 unlet w:FOOS |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1390 unlet w:FLIST |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1391 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1392 |
23124
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1393 def Test_var_declaration_fails() |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1394 var lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1395 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1396 final var: string |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1397 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1398 CheckScriptFailure(lines, 'E1125:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1399 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1400 lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1401 vim9script |
23297
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1402 const g:constvar = 'string' |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1403 g:constvar = 'xx' |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1404 END |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1405 CheckScriptFailure(lines, 'E741:') |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1406 unlet g:constvar |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1407 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1408 lines =<< trim END |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1409 vim9script |
24303
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1410 var name = 'one' |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1411 lockvar name |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1412 def SetLocked() |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1413 name = 'two' |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1414 enddef |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1415 SetLocked() |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1416 END |
24305
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1417 CheckScriptFailure(lines, 'E741: Value is locked: name', 1) |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1418 |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1419 lines =<< trim END |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1420 let s:legacy = 'one' |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1421 lockvar s:legacy |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1422 def SetLocked() |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1423 s:legacy = 'two' |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1424 enddef |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1425 call SetLocked() |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1426 END |
c88d0b5c5a42
patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24303
diff
changeset
|
1427 CheckScriptFailure(lines, 'E741: Value is locked: s:legacy', 1) |
24303
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1428 |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1429 lines =<< trim END |
17b49af76766
patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents:
24293
diff
changeset
|
1430 vim9script |
24293
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1431 def SetGlobalConst() |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1432 const g:globConst = 123 |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1433 enddef |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1434 SetGlobalConst() |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1435 g:globConst = 234 |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1436 END |
24325
52a0e187264b
patch 8.2.2703: Vim9: memory leak when failing on locked variable
Bram Moolenaar <Bram@vim.org>
parents:
24305
diff
changeset
|
1437 CheckScriptFailure(lines, 'E741: Value is locked: g:globConst', 6) |
24293
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1438 unlet g:globConst |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1439 |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1440 lines =<< trim END |
bbf4b3185554
patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents:
24264
diff
changeset
|
1441 vim9script |
23578
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1442 const cdict: dict<string> = {} |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1443 def Change() |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1444 cdict.foo = 'foo' |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1445 enddef |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1446 defcompile |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1447 END |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1448 CheckScriptFailure(lines, 'E46:') |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1449 |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1450 lines =<< trim END |
85ce241ff9e3
patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents:
23549
diff
changeset
|
1451 vim9script |
23297
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1452 final w:finalvar = [9] |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1453 w:finalvar = [8] |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1454 END |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1455 CheckScriptFailure(lines, 'E1122:') |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1456 unlet w:finalvar |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1457 |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1458 lines =<< trim END |
40f1d3f0c53e
patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents:
23266
diff
changeset
|
1459 vim9script |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1460 const var: string |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1461 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1462 CheckScriptFailure(lines, 'E1021:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1463 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1464 lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1465 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1466 var 9var: string |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1467 END |
24238
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1468 CheckScriptFailure(lines, 'E488:') |
23138
1a9705075244
patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents:
23124
diff
changeset
|
1469 |
1a9705075244
patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents:
23124
diff
changeset
|
1470 CheckDefFailure(['var foo.bar = 2'], 'E1087:') |
1a9705075244
patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents:
23124
diff
changeset
|
1471 CheckDefFailure(['var foo[3] = 2'], 'E1087:') |
1a9705075244
patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents:
23124
diff
changeset
|
1472 CheckDefFailure(['const foo: number'], 'E1021:') |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1473 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1474 |
23124
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1475 def Test_var_type_check() |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1476 var lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1477 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1478 var name: string |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1479 name = 1234 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1480 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1481 CheckScriptFailure(lines, 'E1012:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1482 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1483 lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1484 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1485 var name:string |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1486 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1487 CheckScriptFailure(lines, 'E1069:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1488 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1489 lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1490 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1491 var name: asdf |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1492 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1493 CheckScriptFailure(lines, 'E1010:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1494 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1495 lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1496 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1497 var s:l: list<number> |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1498 s:l = [] |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1499 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1500 CheckScriptSuccess(lines) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1501 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1502 lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1503 vim9script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1504 var s:d: dict<number> |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1505 s:d = {} |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1506 END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1507 CheckScriptSuccess(lines) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1508 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1509 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1510 let g:dict_number = #{one: 1, two: 2} |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1511 |
23124
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1512 def Test_var_list_dict_type() |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1513 var ll: list<number> |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1514 ll = [1, 2, 2, 3, 3, 3]->uniq() |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1515 ll->assert_equal([1, 2, 3]) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1516 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1517 var dd: dict<number> |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1518 dd = g:dict_number |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1519 dd->assert_equal(g:dict_number) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1520 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1521 var lines =<< trim END |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1522 var ll: list<number> |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1523 ll = [1, 2, 3]->map('"one"') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1524 END |
23646
5d77a7587927
patch 8.2.2365: Vim9: no check for map() changing item type at script level
Bram Moolenaar <Bram@vim.org>
parents:
23578
diff
changeset
|
1525 CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string') |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1526 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1527 |
23124
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1528 def Test_cannot_use_let() |
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1529 CheckDefAndScriptFailure(['let a = 34'], 'E1126:', 1) |
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1530 enddef |
f8cd5a5e03c4
patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents:
23122
diff
changeset
|
1531 |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1532 def Test_unlet() |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1533 g:somevar = 'yes' |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1534 assert_true(exists('g:somevar')) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1535 unlet g:somevar |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1536 assert_false(exists('g:somevar')) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1537 unlet! g:somevar |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1538 |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1539 # also works for script-local variable in legacy Vim script |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1540 s:somevar = 'legacy' |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1541 assert_true(exists('s:somevar')) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1542 unlet s:somevar |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1543 assert_false(exists('s:somevar')) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1544 unlet! s:somevar |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1545 |
23523
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1546 CheckDefExecFailure([ |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1547 'var dd = 111', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1548 'unlet dd', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1549 ], 'E1081:', 2) |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1550 |
23517
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1551 # dict unlet |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1552 var dd = {a: 1, b: 2, c: 3} |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1553 unlet dd['a'] |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1554 unlet dd.c |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1555 assert_equal({b: 2}, dd) |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1556 |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1557 # list unlet |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1558 var ll = [1, 2, 3, 4] |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1559 unlet ll[1] |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1560 unlet ll[-1] |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1561 assert_equal([1, 3], ll) |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1562 |
23982
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1563 ll = [1, 2, 3, 4] |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1564 unlet ll[0 : 1] |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1565 assert_equal([3, 4], ll) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1566 |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1567 ll = [1, 2, 3, 4] |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1568 unlet ll[2 : 8] |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1569 assert_equal([1, 2], ll) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1570 |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1571 ll = [1, 2, 3, 4] |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1572 unlet ll[-2 : -1] |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1573 assert_equal([1, 2], ll) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1574 |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1575 CheckDefFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1576 'var ll = [1, 2]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1577 'll[1 : 2] = 7', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1578 ], 'E1165:', 2) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1579 CheckDefFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1580 'var dd = {a: 1}', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1581 'unlet dd["a" : "a"]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1582 ], 'E1166:', 2) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1583 CheckDefExecFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1584 'unlet g:adict[0 : 1]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1585 ], 'E1148:', 1) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1586 CheckDefFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1587 'var ll = [1, 2]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1588 'unlet ll[0:1]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1589 ], 'E1004:', 2) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1590 CheckDefFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1591 'var ll = [1, 2]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1592 'unlet ll[0 :1]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1593 ], 'E1004:', 2) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1594 CheckDefFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1595 'var ll = [1, 2]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1596 'unlet ll[0: 1]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1597 ], 'E1004:', 2) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1598 |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1599 CheckDefFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1600 'var ll = [1, 2]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1601 'unlet ll["x" : 1]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1602 ], 'E1012:', 2) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1603 CheckDefFailure([ |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1604 'var ll = [1, 2]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1605 'unlet ll[0 : "x"]', |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1606 ], 'E1012:', 2) |
9fcd71d0db89
patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents:
23972
diff
changeset
|
1607 |
23517
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1608 # list of dict unlet |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1609 var dl = [{a: 1, b: 2}, {c: 3}] |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1610 unlet dl[0]['b'] |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1611 assert_equal([{a: 1}, {c: 3}], dl) |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1612 |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1613 CheckDefExecFailure([ |
23523
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1614 'var ll = test_null_list()', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1615 'unlet ll[0]', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1616 ], 'E684:', 2) |
23517
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1617 CheckDefExecFailure([ |
23523
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1618 'var ll = [1]', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1619 'unlet ll[2]', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1620 ], 'E684:', 2) |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1621 CheckDefExecFailure([ |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1622 'var ll = [1]', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1623 'unlet ll[g:astring]', |
23662
c761fcb89dfe
patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents:
23646
diff
changeset
|
1624 ], 'E1012:', 2) |
23517
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1625 CheckDefExecFailure([ |
23523
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1626 'var dd = test_null_dict()', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1627 'unlet dd["a"]', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1628 ], 'E716:', 2) |
23517
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1629 CheckDefExecFailure([ |
23523
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1630 'var dd = {a: 1}', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1631 'unlet dd["b"]', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1632 ], 'E716:', 2) |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1633 CheckDefExecFailure([ |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1634 'var dd = {a: 1}', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1635 'unlet dd[g:alist]', |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1636 ], 'E1105:', 2) |
23517
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1637 |
23495
1f85acfb23cd
patch 8.2.2290: Vim9: unlet of global variable cannot be compiled
Bram Moolenaar <Bram@vim.org>
parents:
23450
diff
changeset
|
1638 # can compile unlet before variable exists |
23517
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1639 g:someDict = {key: 'val'} |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1640 var k = 'key' |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1641 unlet g:someDict[k] |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1642 assert_equal({}, g:someDict) |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1643 unlet g:someDict |
36bf9a6fbd4c
patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents:
23509
diff
changeset
|
1644 assert_false(exists('g:someDict')) |
23495
1f85acfb23cd
patch 8.2.2290: Vim9: unlet of global variable cannot be compiled
Bram Moolenaar <Bram@vim.org>
parents:
23450
diff
changeset
|
1645 |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1646 CheckScriptFailure([ |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1647 'vim9script', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1648 'var svar = 123', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1649 'unlet svar', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1650 ], 'E1081:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1651 CheckScriptFailure([ |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1652 'vim9script', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1653 'var svar = 123', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1654 'unlet s:svar', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1655 ], 'E1081:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1656 CheckScriptFailure([ |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1657 'vim9script', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1658 'var svar = 123', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1659 'def Func()', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1660 ' unlet svar', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1661 'enddef', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1662 'defcompile', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1663 ], 'E1081:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1664 CheckScriptFailure([ |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1665 'vim9script', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1666 'var svar = 123', |
23223
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1667 'func Func()', |
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1668 ' unlet s:svar', |
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1669 'endfunc', |
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1670 'Func()', |
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1671 ], 'E1081:') |
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1672 CheckScriptFailure([ |
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1673 'vim9script', |
98548b8fbc98
patch 8.2.2157: Vim9: can delete a Vim9 script variable from a function
Bram Moolenaar <Bram@vim.org>
parents:
23187
diff
changeset
|
1674 'var svar = 123', |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1675 'def Func()', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1676 ' unlet s:svar', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1677 'enddef', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1678 'defcompile', |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1679 ], 'E1081:') |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1680 |
23523
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1681 writefile(['vim9script', 'export var svar = 1234'], 'XunletExport.vim') |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1682 var lines =<< trim END |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1683 vim9script |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1684 import svar from './XunletExport.vim' |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1685 def UnletSvar() |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1686 unlet svar |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1687 enddef |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1688 defcompile |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1689 END |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1690 CheckScriptFailure(lines, 'E1081:', 1) |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1691 delete('XunletExport.vim') |
b0a6e7325169
patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents:
23517
diff
changeset
|
1692 |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1693 $ENVVAR = 'foobar' |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1694 assert_equal('foobar', $ENVVAR) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1695 unlet $ENVVAR |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1696 assert_equal('', $ENVVAR) |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1697 enddef |
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1698 |
23679
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1699 def Test_expr_error_no_assign() |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1700 var lines =<< trim END |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1701 vim9script |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1702 var x = invalid |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1703 echo x |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1704 END |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1705 CheckScriptFailureList(lines, ['E121:', 'E121:']) |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1706 |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1707 lines =<< trim END |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1708 vim9script |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1709 var x = 1 / 0 |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1710 echo x |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1711 END |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1712 CheckScriptFailureList(lines, ['E1154:', 'E121:']) |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1713 |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1714 lines =<< trim END |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1715 vim9script |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1716 var x = 1 % 0 |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1717 echo x |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1718 END |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1719 CheckScriptFailureList(lines, ['E1154:', 'E121:']) |
24238
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1720 |
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1721 lines =<< trim END |
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1722 var x: string 'string' |
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1723 END |
e5cd25f7ffcd
patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents:
24154
diff
changeset
|
1724 CheckDefAndScriptFailure(lines, 'E488:') |
23679
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1725 enddef |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1726 |
e8c379b20765
patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents:
23662
diff
changeset
|
1727 |
23537
7f0fc2ab90e3
patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
1728 def Test_assign_command_modifier() |
7f0fc2ab90e3
patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
1729 var lines =<< trim END |
23549
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1730 var verbose = 0 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1731 verbose = 1 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1732 assert_equal(1, verbose) |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1733 silent verbose = 2 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1734 assert_equal(2, verbose) |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1735 silent verbose += 2 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1736 assert_equal(4, verbose) |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1737 silent verbose -= 1 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1738 assert_equal(3, verbose) |
23537
7f0fc2ab90e3
patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
1739 |
23549
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1740 var topleft = {one: 1} |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1741 sandbox topleft.one = 3 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1742 assert_equal({one: 3}, topleft) |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1743 leftabove topleft[' '] = 4 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1744 assert_equal({one: 3, ' ': 4}, topleft) |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1745 |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1746 var x: number |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1747 var y: number |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1748 silent [x, y] = [1, 2] |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1749 assert_equal(1, x) |
4156f972efb1
patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
23537
diff
changeset
|
1750 assert_equal(2, y) |
23537
7f0fc2ab90e3
patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
1751 END |
7f0fc2ab90e3
patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
1752 CheckDefAndScriptSuccess(lines) |
7f0fc2ab90e3
patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
1753 enddef |
7f0fc2ab90e3
patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
1754 |
24264
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1755 def Test_script_funcref_case() |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1756 var lines =<< trim END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1757 var Len = (s: string): number => len(s) + 1 |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1758 assert_equal(5, Len('asdf')) |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1759 END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1760 CheckDefAndScriptSuccess(lines) |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1761 |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1762 lines =<< trim END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1763 var len = (s: string): number => len(s) + 1 |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1764 END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1765 CheckDefAndScriptFailure(lines, 'E704:') |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1766 |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1767 lines =<< trim END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1768 vim9script |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1769 var s:Len = (s: string): number => len(s) + 2 |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1770 assert_equal(6, Len('asdf')) |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1771 END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1772 CheckScriptSuccess(lines) |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1773 |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1774 lines =<< trim END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1775 vim9script |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1776 var s:len = (s: string): number => len(s) + 1 |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1777 END |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1778 CheckScriptFailure(lines, 'E704:') |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1779 enddef |
db5eaad456cc
patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents:
24238
diff
changeset
|
1780 |
22458
f5731190bc66
patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
1781 |
22351
4c488004edbc
patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1782 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |