annotate src/testdir/test_vim9_assign.vim @ 28723:930f1bb1649d v8.2.4886

patch 8.2.4886: Vim9: redir in skipped block seen as assignment Commit: https://github.com/vim/vim/commit/bc6f2bf78af28c93b48906408756b797ab2fd7bd Author: Bram Moolenaar <Bram@vim.org> Date: Fri May 6 14:29:09 2022 +0100 patch 8.2.4886: Vim9: redir in skipped block seen as assignment Problem: Vim9: redir in skipped block seen as assignment. Solution: Check for valid assignment.
author Bram Moolenaar <Bram@vim.org>
date Fri, 06 May 2022 15:30:02 +0200
parents 723c7d940cba
children c428a4e53b9c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
4 import './vim9.vim' as v9
26954
11ee2667a09a patch 8.2.4006: Vim9: crash when declaring variable on the command line
Bram Moolenaar <Bram@vim.org>
parents: 26935
diff changeset
5 source term_util.vim
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
6
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
7 let s:appendToMe = 'xxx'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8 let s:addToMe = 111
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
9 let s:newVar = ''
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
10 let g:existing = 'yes'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
11 let g:inc_counter = 1
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
12 let $SOME_ENV_VAR = 'some'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
13 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
14 let g:adict = #{a: 1}
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
15 let g:astring = 'text'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
16
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
17 def Test_assignment_bool()
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
18 var bool1: bool = true
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
19 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
20 var bool2: bool = false
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
21 assert_equal(v:false, bool2)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
22
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
23 var bool3: bool = 0
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
24 assert_equal(false, bool3)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
25 var bool4: bool = 1
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
26 assert_equal(true, bool4)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
27
22494
4c21f7f6f9e3 patch 8.2.1795: Vim9: operators && and || have a confusing result
Bram Moolenaar <Bram@vim.org>
parents: 22458
diff changeset
28 var bool5: bool = 1 && true
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
29 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
30 var bool6: bool = 0 && 1
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
31 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
32 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
33 assert_equal(true, bool7)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
34
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
35 var lines =<< trim END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
36 vim9script
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
37 def GetFlag(): bool
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
38 var flag: bool = 1
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
39 return flag
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
40 enddef
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
41 var flag: bool = GetFlag()
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
42 assert_equal(true, flag)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
43 flag = 0
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
44 assert_equal(false, flag)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
45 flag = 1
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 || true
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
48 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
49 flag = 1 && false
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
50 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
51
bb0c53f4ef8b patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents: 23338
diff changeset
52 var cp: bool = &cp
bb0c53f4ef8b patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents: 23338
diff changeset
53 var fen: bool = &l:fen
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
54 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
55 v9.CheckScriptSuccess(lines)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
56 v9.CheckDefAndScriptFailure(['var x: bool = 2'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
57 v9.CheckDefAndScriptFailure(['var x: bool = -1'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
58 v9.CheckDefAndScriptFailure(['var x: bool = [1]'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
59 v9.CheckDefAndScriptFailure(['var x: bool = {}'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
60 v9.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
61
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
62 v9.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
63 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
64
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
65 def Test_syntax()
22433
8b5e2f9580db patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents: 22431
diff changeset
66 var name = 234
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
67 var other: list<string> = ['asdf']
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
68 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
69
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
70 def Test_assignment()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
71 v9.CheckDefFailure(['var x:string'], 'E1069:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
72 v9.CheckDefFailure(['var x:string = "x"'], 'E1069:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
73 v9.CheckDefFailure(['var a:string = "x"'], 'E1069:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
74 v9.CheckDefFailure(['var lambda = () => "lambda"'], 'E704:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
75 v9.CheckScriptFailure(['var x = "x"'], 'E1124:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
76
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
77 # 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
78 var lambdaLines =<< trim END
27464
a14c4d3e3260 patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
79 var lambdaList: list<func> = [g:Test_syntax]
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
80 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
81 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
82 v9.CheckDefAndScriptSuccess(lambdaLines)
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
83
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
84 var nr: number = 1234
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
85 v9.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
86
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
87 var a: number = 6 #comment
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
88 assert_equal(6, a)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
89
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
90 if has('channel')
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
91 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
92 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
93
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
94 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
95 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
96
22582
a3df1fb28d44 patch 8.2.1839: Vim9: memory leaks reported in assign test
Bram Moolenaar <Bram@vim.org>
parents: 22545
diff changeset
97 # 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
98 endif
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
99 if has('float')
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
100 var float1: float = 3.4
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
101 endif
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
102 var Funky1: func
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
103 var Funky2: func = function('len')
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
104 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
105
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
106 g:newvar = 'new' #comment
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
107 assert_equal('new', g:newvar)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
108
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
109 assert_equal('yes', g:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
110 g:existing = 'no'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
111 assert_equal('no', g:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
112
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
113 v:char = 'abc'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
114 assert_equal('abc', v:char)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
115
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
116 $ENVVAR = 'foobar'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
117 assert_equal('foobar', $ENVVAR)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
118 $ENVVAR = ''
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
119
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
120 var lines =<< trim END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
121 vim9script
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
122 $ENVVAR = 'barfoo'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
123 assert_equal('barfoo', $ENVVAR)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
124 $ENVVAR = ''
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
125 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
126 v9.CheckScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
127
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
128 appendToMe ..= 'yyy'
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
129 assert_equal('xxxyyy', appendToMe)
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
130 addToMe += 222
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
131 assert_equal(333, addToMe)
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
132 newVar = 'new'
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
133 assert_equal('new', newVar)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
134
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
135 set ts=7
23422
bb0c53f4ef8b patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents: 23338
diff changeset
136 var ts: number = &ts
bb0c53f4ef8b patch 8.2.2254: Vim9: bool option type is number
Bram Moolenaar <Bram@vim.org>
parents: 23338
diff changeset
137 assert_equal(7, ts)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
138 &ts += 1
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
139 assert_equal(8, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
140 &ts -= 3
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
141 assert_equal(5, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
142 &ts *= 2
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
143 assert_equal(10, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
144 &ts /= 3
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
145 assert_equal(3, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
146 set ts=10
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
147 &ts %= 4
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
148 assert_equal(2, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
149
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
150 if has('float')
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
151 var f100: float = 100.0
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
152 f100 /= 5
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
153 assert_equal(20.0, f100)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
154
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
155 var f200: float = 200.0
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
156 f200 /= 5.0
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
157 assert_equal(40.0, f200)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
158
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
159 v9.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
160 endif
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
161
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
162 lines =<< trim END
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
163 &ts = 6
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
164 &ts += 3
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
165 assert_equal(9, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
166
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
167 &l:ts = 6
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
168 assert_equal(6, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
169 &l:ts += 2
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
170 assert_equal(8, &ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
171
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
172 &g:ts = 6
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
173 assert_equal(6, &g:ts)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
174 &g:ts += 2
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
175 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
176
18f3dc6974af patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents: 23495
diff changeset
177 &number = true
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(true, &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 = 0
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(false, &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 = 1
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(true, &number)
18f3dc6974af patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents: 23495
diff changeset
183 &number = false
18f3dc6974af patch 8.2.2297: Vim9: cannot set 'number' to a boolean value
Bram Moolenaar <Bram@vim.org>
parents: 23495
diff changeset
184 assert_equal(false, &number)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
185 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
186 v9.CheckDefAndScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
187
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
188 v9.CheckDefFailure(['&notex += 3'], 'E113:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
189 v9.CheckDefFailure(['&ts ..= "xxx"'], 'E1019:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
190 v9.CheckDefFailure(['&ts = [7]'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
191 v9.CheckDefExecFailure(['&ts = g:alist'], 'E1012: Type mismatch; expected number but got list<number>')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
192 v9.CheckDefFailure(['&ts = "xx"'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
193 v9.CheckDefExecFailure(['&ts = g:astring'], 'E1012: Type mismatch; expected number but got string')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
194 v9.CheckDefFailure(['&path += 3'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
195 v9.CheckDefExecFailure(['&bs = "asdf"'], 'E474:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
196 # test freeing ISN_STOREOPT
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
197 v9.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
198 &ts = 8
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
199
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
200 lines =<< trim END
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
201 var save_TI = &t_TI
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
202 &t_TI = ''
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
203 assert_equal('', &t_TI)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
204 &t_TI = 'xxx'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
205 assert_equal('xxx', &t_TI)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
206 &t_TI = save_TI
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
207 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
208 v9.CheckDefAndScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
209
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
210 v9.CheckDefFailure(['&t_TI = 123'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
211 v9.CheckScriptFailure(['vim9script', '&t_TI = 123'], 'E928:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
212
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
213 v9.CheckDefFailure(['var s:var = 123'], 'E1101:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
214 v9.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
215
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
216 lines =<< trim END
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
217 vim9script
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
218 def SomeFunc()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
219 s:var = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
220 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
221 defcompile
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
222 END
27843
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
223 v9.CheckScriptFailure(lines, 'E1268:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
224
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
225 g:inc_counter += 1
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
226 assert_equal(2, g:inc_counter)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
227
25483
0160aff01c32 patch 8.2.3278: Vim9: error when adding 1 to float
Bram Moolenaar <Bram@vim.org>
parents: 25459
diff changeset
228 if has('float')
0160aff01c32 patch 8.2.3278: Vim9: error when adding 1 to float
Bram Moolenaar <Bram@vim.org>
parents: 25459
diff changeset
229 var f: float
0160aff01c32 patch 8.2.3278: Vim9: error when adding 1 to float
Bram Moolenaar <Bram@vim.org>
parents: 25459
diff changeset
230 f += 1
0160aff01c32 patch 8.2.3278: Vim9: error when adding 1 to float
Bram Moolenaar <Bram@vim.org>
parents: 25459
diff changeset
231 assert_equal(1.0, f)
0160aff01c32 patch 8.2.3278: Vim9: error when adding 1 to float
Bram Moolenaar <Bram@vim.org>
parents: 25459
diff changeset
232 endif
0160aff01c32 patch 8.2.3278: Vim9: error when adding 1 to float
Bram Moolenaar <Bram@vim.org>
parents: 25459
diff changeset
233
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
234 $SOME_ENV_VAR ..= 'more'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
235 assert_equal('somemore', $SOME_ENV_VAR)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
236 v9.CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
237 v9.CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
238
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
239 v:errmsg = 'none'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
240 v:errmsg ..= 'again'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
241 assert_equal('noneagain', v:errmsg)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
242 v9.CheckDefFailure(['v:errmsg += "more"'], 'E1051:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
243 v9.CheckDefFailure(['v:errmsg += 123'], 'E1012:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
244
22582
a3df1fb28d44 patch 8.2.1839: Vim9: memory leaks reported in assign test
Bram Moolenaar <Bram@vim.org>
parents: 22545
diff changeset
245 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
246 some text
a3df1fb28d44 patch 8.2.1839: Vim9: memory leaks reported in assign test
Bram Moolenaar <Bram@vim.org>
parents: 22545
diff changeset
247 END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
248 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
249
25519
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
250 def Test_float_and_number()
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
251 if !has('float')
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
252 MissingFeature float
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
253 else
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
254 var lines =<< trim END
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
255 var f: float
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
256 f += 2
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
257 f -= 1
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
258 assert_equal(1.0, f)
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
259 ++f
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
260 --f
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
261 assert_equal(1.0, f)
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
262 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
263 v9.CheckDefAndScriptSuccess(lines)
25519
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
264 endif
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
265 enddef
f7db86111acd patch 8.2.3296: Vim9: cannot add a number to a float
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
266
25453
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
267 let g:someNumber = 43
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
268
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
269 def Test_assign_concat()
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
270 var lines =<< trim END
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
271 var s = '-'
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
272 s ..= 99
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
273 s ..= true
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
274 s ..= '-'
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
275 s ..= v:null
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
276 s ..= g:someNumber
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
277 assert_equal('-99true-null43', s)
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
278 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
279 v9.CheckDefAndScriptSuccess(lines)
25453
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
280
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
281 lines =<< trim END
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
282 var s = '-'
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
283 s ..= [1, 2]
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
284 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
285 v9.CheckDefAndScriptFailure(lines, ['E1105: Cannot convert list to string', 'E734: Wrong variable type for .='], 2)
25453
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
286 lines =<< trim END
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
287 var s = '-'
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
288 s ..= {a: 2}
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
289 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
290 v9.CheckDefAndScriptFailure(lines, ['E1105: Cannot convert dict to string', 'E734: Wrong variable type for .='], 2)
28273
fff70771d4bb patch 8.2.4662: no error for using out of range list index
Bram Moolenaar <Bram@vim.org>
parents: 28152
diff changeset
291
fff70771d4bb patch 8.2.4662: no error for using out of range list index
Bram Moolenaar <Bram@vim.org>
parents: 28152
diff changeset
292 lines =<< trim END
fff70771d4bb patch 8.2.4662: no error for using out of range list index
Bram Moolenaar <Bram@vim.org>
parents: 28152
diff changeset
293 var ls: list<string> = []
fff70771d4bb patch 8.2.4662: no error for using out of range list index
Bram Moolenaar <Bram@vim.org>
parents: 28152
diff changeset
294 ls[-1] ..= 'foo'
fff70771d4bb patch 8.2.4662: no error for using out of range list index
Bram Moolenaar <Bram@vim.org>
parents: 28152
diff changeset
295 END
fff70771d4bb patch 8.2.4662: no error for using out of range list index
Bram Moolenaar <Bram@vim.org>
parents: 28152
diff changeset
296 v9.CheckDefExecAndScriptFailure(lines, 'E684: list index out of range: -1', 2)
25453
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
297 enddef
21b70bab366c patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Bram Moolenaar <Bram@vim.org>
parents: 25405
diff changeset
298
25032
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
299 def Test_assign_register()
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
300 var lines =<< trim END
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
301 @c = 'areg'
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
302 @c ..= 'add'
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
303 assert_equal('aregadd', @c)
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
304
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
305 @@ = 'some text'
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
306 assert_equal('some text', getreg('"'))
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
307 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
308 v9.CheckDefAndScriptSuccess(lines)
25032
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
309
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
310 v9.CheckDefFailure(['@a += "more"'], 'E1051:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
311 v9.CheckDefFailure(['@a += 123'], 'E1012:')
25032
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
312 enddef
123590c942b7 patch 8.2.3053: Vim9: cannot assign to @@ in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25022
diff changeset
313
24717
bf8feac8a89a patch 8.2.2897: Vim9: can use reserved words at the script level
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
314 def Test_reserved_name()
28002
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
315 var more_names = ['null_job', 'null_channel']
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
316 if !has('job')
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
317 more_names = []
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
318 endif
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
319
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
320 for name in ['true',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
321 'false',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
322 'null',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
323 'null_blob',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
324 'null_dict',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
325 'null_function',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
326 'null_list',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
327 'null_partial',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
328 'null_string',
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
329 ] + more_names
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
330 v9.CheckDefExecAndScriptFailure(['var ' .. name .. ' = 0'], 'E1034:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
331 v9.CheckDefExecAndScriptFailure(['var ' .. name .. ': bool'], 'E1034:')
24717
bf8feac8a89a patch 8.2.2897: Vim9: can use reserved words at the script level
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
332 endfor
bf8feac8a89a patch 8.2.2897: Vim9: can use reserved words at the script level
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
333 enddef
bf8feac8a89a patch 8.2.2897: Vim9: can use reserved words at the script level
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
334
28002
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
335 def Test_null_values()
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
336 var lines =<< trim END
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
337 var b: blob = null_blob
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
338 var dn: dict<number> = null_dict
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
339 var ds: dict<string> = null_dict
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
340 var ln: list<number> = null_list
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
341 var ls: list<string> = null_list
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
342 var Ff: func(string): string = null_function
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
343 var Fp: func(number): number = null_partial
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
344 var s: string = null_string
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
345 if has('job')
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
346 var j: job = null_job
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
347 var c: channel = null_channel
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
348 endif
28017
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
349
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
350 var d: dict<func> = {a: function('tr'), b: null_function}
28059
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
351
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
352 var bl: list<blob> = [0z12, null_blob]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
353 var dnl: list<dict<number>> = [{a: 1}, null_dict]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
354 var dsl: list<dict<string>> = [{a: 'x'}, null_dict]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
355 var lnl: list<list<number>> = [[1], null_list]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
356 var lsl: list<list<string>> = [['x'], null_list]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
357 def Len(v: string): number
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
358 return len(v)
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
359 enddef
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
360 var Ffl: list<func(string): number> = [Len, null_function]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
361 var Fpl: list<func(string): number> = [Len, null_partial]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
362 var sl: list<string> = ['x', null_string]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
363 if has('job')
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
364 var jl: list<job> = [null_job]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
365 var cl: list<channel> = [null_channel]
230115610b6a patch 8.2.4554: Vim9: using null values not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 28017
diff changeset
366 endif
28002
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
367 END
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
368 v9.CheckDefAndScriptSuccess(lines)
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
369 enddef
1012048eed26 patch 8.2.4526: Vim9: cannot set variables to a null value
Bram Moolenaar <Bram@vim.org>
parents: 27968
diff changeset
370
28017
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
371 def Test_keep_type_after_assigning_null()
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
372 var lines =<< trim END
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
373 var b: blob
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
374 b = null_blob
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
375 b = 'text'
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
376 END
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
377 v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected blob but got string')
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
378
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
379 lines =<< trim END
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
380 var l: list<number>
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
381 l = null_list
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
382 l = ['text']
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
383 END
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
384 v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got list<string>')
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
385
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
386 lines =<< trim END
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
387 var d: dict<string>
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
388 d = null_dict
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
389 d = {a: 1, b: 2}
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
390 END
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
391 v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got dict<number>')
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
392 enddef
21cc8371e45e patch 8.2.4533: Vim9: no test that after assigning null type is still checked
Bram Moolenaar <Bram@vim.org>
parents: 28002
diff changeset
393
24462
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
394 def Test_skipped_assignment()
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
395 var lines =<< trim END
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
396 for x in []
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
397 var i: number = 1
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
398 while false
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
399 i += 1
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
400 endwhile
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
401 endfor
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
402 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
403 v9.CheckDefAndScriptSuccess(lines)
24462
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
404 enddef
7c4f50c02e18 patch 8.2.2771: Vim9: assignment not recognized if declaration was skipped
Bram Moolenaar <Bram@vim.org>
parents: 24426
diff changeset
405
26302
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
406 def Test_assign_keep_type()
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
407 var lines =<< trim END
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
408 vim9script
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
409 var l: list<number> = [123]
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
410 l = [123]
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
411 l->add('string')
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
412 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
413 v9.CheckScriptFailure(lines, 'E1012:', 4)
26302
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
414 enddef
7351926fbe9e patch 8.2.3682: Vim9: assigning to a script variable drops the type
Bram Moolenaar <Bram@vim.org>
parents: 25776
diff changeset
415
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
416 def Test_assign_unpack()
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
417 var lines =<< trim END
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
418 var v1: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
419 var v2: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
420 [v1, v2] = [1, 2]
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
421 assert_equal(1, v1)
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
422 assert_equal(2, v2)
24426
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
423
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
424 [v1, _, v2, _] = [1, 99, 2, 77]
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
425 assert_equal(1, v1)
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
426 assert_equal(2, v2)
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
427
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
428 [v1, v2; _] = [1, 2, 3, 4, 5]
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
429 assert_equal(1, v1)
78343859f42d patch 8.2.2753: Vim9: cannot ignore an item in assignment unpack
Bram Moolenaar <Bram@vim.org>
parents: 24377
diff changeset
430 assert_equal(2, v2)
24984
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
431
27716
4097434c7c67 patch 8.2.4384: Vim9: error message not tested, some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
432 var _x: number
4097434c7c67 patch 8.2.4384: Vim9: error message not tested, some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
433 [_x, v2] = [6, 7]
4097434c7c67 patch 8.2.4384: Vim9: error message not tested, some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
434 assert_equal(6, _x)
4097434c7c67 patch 8.2.4384: Vim9: error message not tested, some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
435 assert_equal(7, v2)
4097434c7c67 patch 8.2.4384: Vim9: error message not tested, some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
436
25034
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
437 var reslist = []
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
438 for text in ['aaa {bbb} ccc', 'ddd {eee} fff']
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
439 var before: string
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
440 var middle: string
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
441 var after: string
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
442 [_, before, middle, after; _] = text->matchlist('\(.\{-\}\){\(.\{-\}\)}\(.*\)')
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
443 reslist->add(before)->add(middle)->add(after)
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
444 endfor
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
445 assert_equal(['aaa ', 'bbb', ' ccc', 'ddd ', 'eee', ' fff'], reslist)
8d660d1cca8d patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails
Bram Moolenaar <Bram@vim.org>
parents: 25032
diff changeset
446
24984
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
447 var a = 1
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
448 var b = 3
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
449 [a, b] += [2, 4]
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
450 assert_equal(3, a)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
451 assert_equal(7, b)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
452
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
453 [a, b] -= [1, 2]
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
454 assert_equal(2, a)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
455 assert_equal(5, b)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
456
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
457 [a, b] *= [3, 2]
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
458 assert_equal(6, a)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
459 assert_equal(10, b)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
460
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
461 [a, b] /= [2, 4]
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
462 assert_equal(3, a)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
463 assert_equal(2, b)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
464
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
465 [a, b] = [17, 15]
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
466 [a, b] %= [5, 3]
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
467 assert_equal(2, a)
71b1e2ef0069 patch 8.2.3029: Vim9: crash when using operator and list unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 24956
diff changeset
468 assert_equal(0, b)
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
469 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
470 v9.CheckDefAndScriptSuccess(lines)
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
471
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
472 lines =<< trim END
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
473 var v1: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
474 var v2: number
26372
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
475 [v1, v2] = [1, 2, 3]
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
476 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
477 v9.CheckDefFailure(lines, 'E1093: Expected 2 items but got 3', 3)
26372
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
478
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
479 lines =<< trim END
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
480 var v1: number
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
481 var v2: number
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
482 [v1, v2] = [1]
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
483 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
484 v9.CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
26372
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
485
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
486 lines =<< trim END
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
487 var v1: number
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
488 var v2: number
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
489 [v1, v2; _] = [1]
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
490 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
491 v9.CheckDefFailure(lines, 'E1093: Expected 2 items but got 1', 3)
26372
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
492
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
493 lines =<< trim END
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
494 var v1: number
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26346
diff changeset
495 var v2: number
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
496 [v1, v2] =
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
497 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
498 v9.CheckDefFailure(lines, 'E1097:', 5)
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
499
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
500 lines =<< trim END
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
501 var v1: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
502 var v2: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
503 [v1, v2] = xxx
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
504 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
505 v9.CheckDefFailure(lines, 'E1001:', 3)
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
506
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
507 lines =<< trim END
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
508 var v1: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
509 var v2: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
510 [v1, v2] = popup_clear()
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
511 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
512 v9.CheckDefFailure(lines, 'E1031:', 3)
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
513
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
514 lines =<< trim END
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
515 [v1, v2] = [1, 2]
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
516 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
517 v9.CheckDefFailure(lines, 'E1089', 1)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
518 v9.CheckScriptFailure(['vim9script'] + lines, 'E1089', 2)
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
519
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
520 lines =<< trim END
23122
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
521 var v1: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
522 var v2: number
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
523 [v1, v2] = ''
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
524 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
525 v9.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
526
4b417b776b95 patch 8.2.2501: not always clear where an error is reported
Bram Moolenaar <Bram@vim.org>
parents: 23707
diff changeset
527 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
528 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
529 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
530 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
531 [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
532 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
533 v9.CheckDefExecAndScriptFailure(lines, 'E1163: Variable 2: type mismatch, expected string but got number')
25547
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
534
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
535 lines =<< trim END
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
536 var x: number
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
537 var y: number
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
538 var z: string
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
539 [x, y, z] = [1, 2, 3]
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
540 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
541 v9.CheckDefAndScriptFailure(lines, 'E1163: Variable 3: type mismatch, expected string but got number')
25547
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
542
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
543 lines =<< trim END
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
544 var x: number
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
545 var y: string
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
546 var z: string
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
547 [x, y, z] = [1, '2', 3]
ec4df0b982da patch 8.2.3310: Vim9: unpack assignment does not mention source of type error
Bram Moolenaar <Bram@vim.org>
parents: 25519
diff changeset
548 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
549 v9.CheckDefExecAndScriptFailure(lines, 'E1163: Variable 3: 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
550 enddef
60a0221beab0 patch 8.2.2107: Vim9: some errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23092
diff changeset
551
23070
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
552 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
553 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
554 nr =
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
555 123
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
556 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
557
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
558 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
559 [nr, n2] =
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
560 [12, 34]
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
561 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
562 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
563
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
564 v9.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
565
cd9f77409393 patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents: 24325
diff changeset
566 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
567 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
568 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
569 ->copy()
cd9f77409393 patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents: 24325
diff changeset
570 ->copy()
cd9f77409393 patch 8.2.2705: Vim9: misleading reported line number for wrong type
Bram Moolenaar <Bram@vim.org>
parents: 24325
diff changeset
571 END
27517
f00a7a2bee21 patch 8.2.4286: Vim9: strict type checking after copy() and deepcopy()
Bram Moolenaar <Bram@vim.org>
parents: 27464
diff changeset
572 v9.CheckDefExecFailure(lines, 'E1012:', 4)
25139
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
573
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
574 lines =<< trim END
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
575 var x: any
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
576 x.key = 1
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
577 + 2
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
578 + 3
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
579 + 4
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
580 + 5
7fa520b85244 patch 8.2.3106: Vim9: confusing line number reported for error
Bram Moolenaar <Bram@vim.org>
parents: 25137
diff changeset
581 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
582 v9.CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203:'], 2)
23070
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
583 enddef
6a70803f4cbe patch 8.2.2081: Vim9: cannot handle a linebreak after "=" in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23052
diff changeset
584
23033
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
585 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
586 # list of list
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
587 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
588 l1[0] = 123
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
589 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
590
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
591 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
592 l2[0] = []
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
593 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
594 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
595
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
596 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
597 l3[0] = []
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
598 l3[0][0] = []
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
599 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
600 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
601
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
602 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
603 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
604 l3[0] = []
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
605 l3[0][0] = []
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
606 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
607 v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown>', 3)
23033
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
608
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
609 # dict of dict
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
610 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
611 d1.one = 1
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
612 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
613
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
614 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
615 d2.one = {}
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
616 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
617 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
618
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
619 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
620 d3.one = {}
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
621 d3.one.two = {}
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
622 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
623 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
624
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
625 # blob
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
626 var bl: blob = 0z11223344
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
627 bl[0] = 0x77
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
628 assert_equal(0z77223344, bl)
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
629 bl[-2] = 0x66
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
630 assert_equal(0z77226644, bl)
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
631
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
632 lines =<< trim END
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
633 g:val = '22'
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
634 var bl = 0z11
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
635 bl[1] = g:val
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
636 END
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
637 v9.CheckDefExecAndScriptFailure(lines, 'E1030: Using a String as a Number: "22"')
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
638
25459
9adaa0c056c7 patch 8.2.3266: Vim9: assignment with two indexes may check next line
Bram Moolenaar <Bram@vim.org>
parents: 25453
diff changeset
639 # should not read the next line when generating "a.b"
9adaa0c056c7 patch 8.2.3266: Vim9: assignment with two indexes may check next line
Bram Moolenaar <Bram@vim.org>
parents: 25453
diff changeset
640 var a = {}
9adaa0c056c7 patch 8.2.3266: Vim9: assignment with two indexes may check next line
Bram Moolenaar <Bram@vim.org>
parents: 25453
diff changeset
641 a.b = {}
9adaa0c056c7 patch 8.2.3266: Vim9: assignment with two indexes may check next line
Bram Moolenaar <Bram@vim.org>
parents: 25453
diff changeset
642 a.b.c = {}
9adaa0c056c7 patch 8.2.3266: Vim9: assignment with two indexes may check next line
Bram Moolenaar <Bram@vim.org>
parents: 25453
diff changeset
643 ->copy()
9adaa0c056c7 patch 8.2.3266: Vim9: assignment with two indexes may check next line
Bram Moolenaar <Bram@vim.org>
parents: 25453
diff changeset
644
23033
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
645 lines =<< trim END
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
646 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
647 d3.one = {}
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
648 d3.one.two = {}
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
649 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
650 v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected number but got dict<unknown>', 3)
23033
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
651
23187
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
652 lines =<< trim END
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
653 var lines: list<string>
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
654 lines['a'] = 'asdf'
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
655 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
656 v9.CheckDefFailure(lines, 'E1012:', 2)
23187
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
657
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
658 lines =<< trim END
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
659 var lines: string
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
660 lines[9] = 'asdf'
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
661 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
662 v9.CheckDefFailure(lines, 'E1141:', 2)
23187
013aa8e2be8c patch 8.2.2139: Vim9: unreachable code in assignment
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
663
23033
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
664 # list of dict
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
665 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
666 ld[0] = {}
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
667 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
668 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
669
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
670 lines =<< trim END
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
671 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
672 ld[0] = []
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
673 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
674 v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected dict<number> but got list<unknown>', 2)
23033
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
675
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
676 # dict of list
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
677 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
678 dl.one = []
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
679 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
680 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
681
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
682 lines =<< trim END
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
683 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
684 dl.one = {}
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
685 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
686 v9.CheckDefFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<unknown>', 2)
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
687
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
688 lines =<< trim END
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
689 g:l = [1, 2]
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
690 g:l['x'] = 3
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
691 END
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
692 v9.CheckDefExecAndScriptFailure(lines, ['E39:', 'E1030:'], 2)
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
693
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
694 lines =<< trim END
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
695 var bl: blob = test_null_blob()
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
696 bl[1] = 8
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
697 END
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
698 v9.CheckDefExecAndScriptFailure(lines, ['E1184:', 'E979:'], 2)
27764
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
699
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
700 lines =<< trim END
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
701 g:bl = 'not a blob'
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
702 g:bl[1 : 2] = 8
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
703 END
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
704 v9.CheckDefExecAndScriptFailure(lines, ['E897:', 'E689:'], 2)
23033
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
705 enddef
b98003d73150 patch 8.2.2063: Vim9: only one level of indexing supported
Bram Moolenaar <Bram@vim.org>
parents: 22906
diff changeset
706
27148
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
707 def Test_init_in_for_loop()
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
708 var lines =<< trim END
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
709 var l: list<number> = []
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
710 for i in [3, 4]
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
711 var n: number
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
712 add(l, n)
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
713 n = 123
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
714 endfor
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
715 assert_equal([0, 0], l)
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
716 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
717 v9.CheckDefAndScriptSuccess(lines)
27148
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
718
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
719 lines =<< trim END
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
720 var l: list<number> = []
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
721 for i in [3, 4]
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
722 var n: number = 0
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
723 add(l, n)
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
724 n = 123
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
725 endfor
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
726 assert_equal([0, 0], l)
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
727 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
728 v9.CheckDefAndScriptSuccess(lines)
27148
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
729
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
730 lines =<< trim END
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
731 var l: list<number> = []
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
732 for i in [3, 4]
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
733 var n: number = 3
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
734 add(l, n)
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
735 n = 123
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
736 endfor
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
737 assert_equal([3, 3], l)
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
738 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
739 v9.CheckDefAndScriptSuccess(lines)
27148
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
740 enddef
6ed31017c303 patch 8.2.4103: Vim9: variable declared in for loop not initialzed
Bram Moolenaar <Bram@vim.org>
parents: 26980
diff changeset
741
28723
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
742 def Test_redir_is_not_assign()
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
743 if false
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
744 redir => res
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
745 echo var_job
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
746 redir END
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
747 endif
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
748 enddef
930f1bb1649d patch 8.2.4886: Vim9: redir in skipped block seen as assignment
Bram Moolenaar <Bram@vim.org>
parents: 28718
diff changeset
749
22365
a4866826cebc patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents: 22363
diff changeset
750 def Test_extend_list()
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
751 # using uninitialized list assigns empty list
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
752 var lines =<< trim END
25776
f31cf0388eab patch 8.2.3423: Vim9: list += list creates a new list in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25668
diff changeset
753 var l1: list<number>
f31cf0388eab patch 8.2.3423: Vim9: list += list creates a new list in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25668
diff changeset
754 var l2 = l1
f31cf0388eab patch 8.2.3423: Vim9: list += list creates a new list in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25668
diff changeset
755 assert_true(l1 is l2)
f31cf0388eab patch 8.2.3423: Vim9: list += list creates a new list in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25668
diff changeset
756 l1 += [123]
f31cf0388eab patch 8.2.3423: Vim9: list += list creates a new list in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25668
diff changeset
757 assert_equal([123], l1)
f31cf0388eab patch 8.2.3423: Vim9: list += list creates a new list in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25668
diff changeset
758 assert_true(l1 is l2)
22802
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
759 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
760 v9.CheckDefAndScriptSuccess(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
761
22802
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
762 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
763 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
764 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
765 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
766 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
767 v9.CheckDefAndScriptSuccess(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
768
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
769 # appending to uninitialized list from a function works
22545
47596deedfb5 patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 22494
diff changeset
770 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
771 vim9script
47596deedfb5 patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 22494
diff changeset
772 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
773 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
774 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
775 enddef
47596deedfb5 patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 22494
diff changeset
776 Func()
47596deedfb5 patch 8.2.1821: Vim9: concatenating to a NULL list doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 22494
diff changeset
777 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
778 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
779 v9.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
780 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
781 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
782 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
783 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
784 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
785 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
786 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
787 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
788 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
789 v9.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
790
28345
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
791 # initialized to null, with type, does not default to empty list
22802
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
792 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
793 vim9script
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
794 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
795 extend(l, ['x'])
28345
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
796 END
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
797 v9.CheckScriptFailure(lines, 'E1134:', 3)
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
798
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
799 # initialized to null, without type, does not default to empty list
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
800 lines =<< trim END
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
801 vim9script
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
802 var l = null_list
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
803 extend(l, ['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
804 END
28345
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
805 v9.CheckScriptFailure(lines, 'E1134:', 3)
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
806
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
807 # assigned null, does not default to empty list
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
808 lines =<< trim END
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
809 vim9script
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
810 var l: list<string>
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
811 l = null_list
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
812 extend(l, ['x'])
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
813 END
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
814 v9.CheckScriptFailure(lines, 'E1134:', 4)
22802
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
815
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
816 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
817 vim9script
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
818 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
819 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
820 v9.CheckScriptFailure(lines, 'E1134:', 2)
26935
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
821
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
822 # using global var has no declared type
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
823 g:myList = []
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
824 g:myList->extend([1])
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
825 g:myList->extend(['x'])
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
826 assert_equal([1, 'x'], g:myList)
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
827 unlet g:myList
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
828
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
829 # using declared list gives an error
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
830 lines =<< trim END
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
831 var l: list<number>
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
832 g:myList = l
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
833 g:myList->extend([1])
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
834 g:myList->extend(['x'])
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
835 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
836 v9.CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 4)
26935
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
837 unlet g:myList
27569
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
838
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
839 lines =<< trim END
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
840 vim9script
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
841 var lds = [1, 2, 3]
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
842 def Func()
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
843 echo lds->extend(['x'])
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
844 enddef
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
845 defcompile
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
846 END
f40647a2b36a patch 8.2.4311: Vim9: changing script variable type not caught compile time
Bram Moolenaar <Bram@vim.org>
parents: 27539
diff changeset
847 v9.CheckScriptFailure(lines, 'E1013:')
22802
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
848 enddef
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
849
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
850 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
851 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
852 vim9script
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
853 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
854 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
855 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
856
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
857 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
858 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
859 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
860 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
861 v9.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
862
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
863 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
864 vim9script
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
865 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
866 extend(d, {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
867 END
28345
fabe722b24e9 patch 8.2.4698: Vim9: script variable has no flag that it was set
Bram Moolenaar <Bram@vim.org>
parents: 28273
diff changeset
868 v9.CheckScriptFailure(lines, 'E1133:', 3)
22802
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
869
3e0f909ca1f2 patch 8.2.1949: Vim9: using extend() on null dict is silently ignored
Bram Moolenaar <Bram@vim.org>
parents: 22631
diff changeset
870 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
871 vim9script
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23070
diff changeset
872 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
873 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
874 v9.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
875 enddef
a4866826cebc patch 8.2.1731: Vim9: cannot use += to append to empty NULL list
Bram Moolenaar <Bram@vim.org>
parents: 22363
diff changeset
876
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
877 def Test_single_letter_vars()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
878 # single letter variables
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
879 var a: number = 123
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
880 a = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
881 assert_equal(123, a)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
882 var b: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
883 b = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
884 assert_equal(123, b)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
885 var g: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
886 g = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
887 assert_equal(123, g)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
888 var s: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
889 s = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
890 assert_equal(123, s)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
891 var t: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
892 t = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
893 assert_equal(123, t)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
894 var v: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
895 v = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
896 assert_equal(123, v)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
897 var w: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
898 w = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
899 assert_equal(123, w)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
900 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
901
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
902 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
903 var lines =<< trim END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
904 vim9script
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
905
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
906 # 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
907 var a: string
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
908 var b: number
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
909 var l: list<any>
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
910 var s: string
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
911 var t: number
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
912 var v: number
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
913 var w: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
914
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
915 # 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
916 a = 'script-a'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
917 b = 111
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
918 l = [1, 2, 3]
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
919 s = 'script-s'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
920 t = 222
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
921 v = 333
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
922 w = 444
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
923
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
924 assert_equal('script-a', a)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
925 assert_equal(111, b)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
926 assert_equal([1, 2, 3], l)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
927 assert_equal('script-s', s)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
928 assert_equal(222, t)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
929 assert_equal(333, v)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
930 assert_equal(444, w)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
931 END
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
932 writefile(lines, 'Xsinglechar')
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
933 source Xsinglechar
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
934 delete('Xsinglechar')
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 Test_assignment_list()
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
938 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
939 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
940 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
941 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
942 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
943
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
944 var listS: list<string> = []
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
945 var listN: list<number> = []
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
946
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
947 assert_equal([1, 2, 3], list2)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
948 list2[-1] = 99
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
949 assert_equal([1, 2, 99], list2)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
950 list2[-2] = 88
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
951 assert_equal([1, 88, 99], list2)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
952 list2[-3] = 77
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
953 assert_equal([77, 88, 99], list2)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
954 list2 += [100]
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
955 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
956
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
957 list3 += ['end']
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
958 assert_equal(['sdf', 'asdf', 'end'], list3)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
959
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
960 v9.CheckDefExecFailure(['var ll = [1, 2, 3]', 'll[-4] = 6'], 'E684:')
27766
2a394907825d patch 8.2.4409: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27764
diff changeset
961 v9.CheckDefExecFailure(['var ll = [1, 2, 3]', 'unlet ll[8 : 9]'], 'E684:')
2a394907825d patch 8.2.4409: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27764
diff changeset
962 v9.CheckDefExecFailure(['var ll = [1, 2, 3]', 'unlet ll[1 : -9]'], 'E684:')
2a394907825d patch 8.2.4409: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27764
diff changeset
963 v9.CheckDefExecFailure(['var ll = [1, 2, 3]', 'unlet ll[2 : 1]'], 'E684:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
964
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
965 # type becomes list<any>
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
966 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
967
26925
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
968 # type is list<any> even though initializer is list<number>
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
969 var anyList: list<any> = [0]
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
970 assert_equal([0, 'x'], extend(anyList, ['x']))
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
971
23266
00f7cd9b6033 patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents: 23245
diff changeset
972 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
973 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
974 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
975 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
976 v9.CheckDefExecFailure(lines, 'E1147:', 2)
25126
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
977
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
978 lines =<< trim END
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
979 def OneArg(x: bool)
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
980 enddef
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
981 def TwoArgs(x: bool, y: bool)
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
982 enddef
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
983 var fl: list<func(bool, bool, bool)> = [OneArg, TwoArgs]
b825efff9790 patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents: 25054
diff changeset
984 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
985 v9.CheckDefExecAndScriptFailure(lines, 'E1012:', 5)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
986 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
987
26346
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
988 def Test_list_declaration()
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
989 var [v1, v2] = [1, 2]
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
990 v1 += 3
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
991 assert_equal(4, v1)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
992 v2 *= 3
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
993 assert_equal(6, v2)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
994
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
995 var lines =<< trim END
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
996 var [v1, v2] = [1]
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
997 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
998 v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 1', 'E688:'])
26346
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
999 lines =<< trim END
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1000 var testlist = [1]
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1001 var [v1, v2] = testlist
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1002 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1003 v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 1', 'E688:'])
26346
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1004 lines =<< trim END
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1005 var [v1, v2] = [1, 2, 3]
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1006 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1007 v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 3', 'E687:'])
26346
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1008 lines =<< trim END
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1009 var testlist = [1, 2, 3]
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1010 var [v1, v2] = testlist
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1011 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1012 v9.CheckDefExecAndScriptFailure(lines, ['E1093: Expected 2 items but got 3', 'E687:'])
26346
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1013
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1014 var [vnr, vstr] = [123, 'text']
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1015 vnr += 3
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1016 assert_equal(126, vnr)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1017 vstr ..= 'end'
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1018 assert_equal('textend', vstr)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1019
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1020 var [vnr2: number, vstr2: string] = [123, 'text']
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1021 vnr2 += 3
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1022 assert_equal(126, vnr2)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1023 vstr2 ..= 'end'
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1024 assert_equal('textend', vstr2)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1025
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1026 var [vnr3: number; vlist: list<string>] = [123, 'foo', 'bar']
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1027 vnr3 += 5
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1028 assert_equal(128, vnr3)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1029 assert_equal(['foo', 'bar'], vlist)
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1030
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1031 lines =<< trim END
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1032 var [vnr2: number, vstr2: number] = [123, 'text']
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1033 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1034 v9.CheckDefExecAndScriptFailure(lines, ['E1163: Variable 2: type mismatch, expected number but got string', 'E1012: Type mismatch; expected number but got string'])
26346
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1035 lines =<< trim END
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1036 var testlist = [234, 'text']
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1037 var [vnr2: number, vstr2: number] = testlist
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1038 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1039 v9.CheckDefExecAndScriptFailure(lines, ['E1163: Variable 2: type mismatch, expected number but got string', 'E1012: Type mismatch; expected number but got string'])
26346
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1040 enddef
8be6413a8e27 patch 8.2.3704: Vim9: cannot use a list declaration in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 26330
diff changeset
1041
25137
34f18d4081af patch 8.2.3105: Vim9: type of partial is wrong when it has arguments
Bram Moolenaar <Bram@vim.org>
parents: 25135
diff changeset
1042 def PartFuncBool(b: bool): string
25135
5731bcaaabcb patch 8.2.3104: Vim9: unspecified function type causes type error
Bram Moolenaar <Bram@vim.org>
parents: 25126
diff changeset
1043 return 'done'
5731bcaaabcb patch 8.2.3104: Vim9: unspecified function type causes type error
Bram Moolenaar <Bram@vim.org>
parents: 25126
diff changeset
1044 enddef
5731bcaaabcb patch 8.2.3104: Vim9: unspecified function type causes type error
Bram Moolenaar <Bram@vim.org>
parents: 25126
diff changeset
1045
5731bcaaabcb patch 8.2.3104: Vim9: unspecified function type causes type error
Bram Moolenaar <Bram@vim.org>
parents: 25126
diff changeset
1046 def Test_assignment_partial()
25137
34f18d4081af patch 8.2.3105: Vim9: type of partial is wrong when it has arguments
Bram Moolenaar <Bram@vim.org>
parents: 25135
diff changeset
1047 var lines =<< trim END
27464
a14c4d3e3260 patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
1048 var Partial: func(): string = function(g:PartFuncBool, [true])
25137
34f18d4081af patch 8.2.3105: Vim9: type of partial is wrong when it has arguments
Bram Moolenaar <Bram@vim.org>
parents: 25135
diff changeset
1049 assert_equal('done', Partial())
34f18d4081af patch 8.2.3105: Vim9: type of partial is wrong when it has arguments
Bram Moolenaar <Bram@vim.org>
parents: 25135
diff changeset
1050 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1051 v9.CheckDefAndScriptSuccess(lines)
25141
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1052
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1053 lines =<< trim END
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1054 vim9script
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1055 def Func(b: bool)
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1056 enddef
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1057 var Ref: func = function(Func, [true])
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1058 assert_equal('func()', typename(Ref))
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1059 Ref()
99f6087a5fd2 patch 8.2.3107: Vim9: error for arguments while type didn't specify arguments
Bram Moolenaar <Bram@vim.org>
parents: 25139
diff changeset
1060 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1061 v9.CheckScriptSuccess(lines)
26833
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1062
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1063 lines =<< trim END
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1064 vim9script
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1065
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1066 var nres: any
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1067 var sres: any
26851
15913ba6363e patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents: 26833
diff changeset
1068 def Func(nr: number, s = '')
15913ba6363e patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents: 26833
diff changeset
1069 nres = nr
26833
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1070 sres = s
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1071 enddef
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1072
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1073 var n: number
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1074 var Ref = function(Func, [n])
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1075 Ref('x')
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1076 assert_equal(0, nres)
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1077 assert_equal('x', sres)
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1078 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1079 v9.CheckScriptSuccess(lines)
26833
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1080
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1081 lines =<< trim END
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1082 vim9script
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1083
26851
15913ba6363e patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents: 26833
diff changeset
1084 def Func(nr: number, s = '')
26833
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1085 enddef
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1086
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1087 var n: number
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1088 var Ref = function(Func, [n])
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1089 Ref(0)
434eaef2ac62 patch 8.2.3945: Vim9: partial variable argument types are wrong
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
1090 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1091 v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected string but got number')
25135
5731bcaaabcb patch 8.2.3104: Vim9: unspecified function type causes type error
Bram Moolenaar <Bram@vim.org>
parents: 25126
diff changeset
1092 enddef
5731bcaaabcb patch 8.2.3104: Vim9: unspecified function type causes type error
Bram Moolenaar <Bram@vim.org>
parents: 25126
diff changeset
1093
23662
c761fcb89dfe patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents: 23646
diff changeset
1094 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
1095 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
1096 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
1097 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
1098 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
1099 endfor
c761fcb89dfe patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents: 23646
diff changeset
1100 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
1101 enddef
c761fcb89dfe patch 8.2.2373: Vim9: list assignment only accepts a number index
Bram Moolenaar <Bram@vim.org>
parents: 23646
diff changeset
1102
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1103 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
1104 var lines =<< trim END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1105 vim9script
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1106 var v1: number
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1107 var v2: number
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1108 var v3: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1109 [v1, v2, v3] = [1, 2, 3]
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1110 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
1111 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1112 v9.CheckScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1113 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1114
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1115 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
1116 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
1117 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
1118 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
1119 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
1120 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
1121
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1122 # overwrite
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1123 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
1124 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
1125 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
1126 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
1127
23245
ac934fbacc0e patch 8.2.2168: Vim9: error for assigning to dict of dict
Bram Moolenaar <Bram@vim.org>
parents: 23243
diff changeset
1128 # 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
1129 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
1130 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
1131 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
1132 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
1133
22906
5ff7125e81fc patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents: 22802
diff changeset
1134 var lines =<< trim END
23243
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1135 var dd = {}
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1136 dd.two = 2
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1137 assert_equal({two: 2}, dd)
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1138 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1139 v9.CheckDefAndScriptSuccess(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
1140
00f7cd9b6033 patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents: 23245
diff changeset
1141 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
1142 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
1143 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
1144 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
1145 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
1146 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
1147 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1148 v9.CheckDefAndScriptSuccess(lines)
23243
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1149
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1150 lines =<< trim END
28129
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1151 var key = 'foo'
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1152 g:[key] = 'value'
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1153 assert_equal('value', g:foo)
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1154 unlet g:foo
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1155 END
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1156 v9.CheckDefAndScriptSuccess(lines)
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1157
dd2ed5345f20 patch 8.2.4589: cannot index the g: dictionary
Bram Moolenaar <Bram@vim.org>
parents: 28059
diff changeset
1158 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
1159 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
1160 dd.one) = 2
5ff7125e81fc patch 8.2.2000: Vim9: dict.key assignment not implemented yet
Bram Moolenaar <Bram@vim.org>
parents: 22802
diff changeset
1161 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1162 v9.CheckDefFailure(lines, 'E488:', 2)
23243
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1163
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1164 lines =<< trim END
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1165 var dd = {one: 1}
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1166 var dd.one = 2
0804cb073097 patch 8.2.2167: Vim9: assign test fails
Bram Moolenaar <Bram@vim.org>
parents: 23227
diff changeset
1167 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1168 v9.CheckDefAndScriptFailure(lines, 'E1017:', 2)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1169
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1170 # 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
1171 var dd = {}
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1172 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
1173 assert_equal({['']: 6}, dd)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1174
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1175 # 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
1176 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
1177
26925
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
1178 # type is dict<any> even though initializer is dict<number>
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
1179 var anyDict: dict<any> = {a: 0}
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
1180 assert_equal({a: 0, b: 'x'}, extend(anyDict, {b: 'x'}))
4e77f9961650 patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents: 26851
diff changeset
1181
26935
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1182 # using global var, which has no declared type
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1183 g:myDict = {}
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1184 g:myDict->extend({a: 1})
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1185 g:myDict->extend({b: 'x'})
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1186 assert_equal({a: 1, b: 'x'}, g:myDict)
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1187 unlet g:myDict
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1188
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1189 # using list with declared type gives an error
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1190 lines =<< trim END
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1191 var d: dict<number>
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1192 g:myDict = d
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1193 g:myDict->extend({a: 1})
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1194 g:myDict->extend({b: 'x'})
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1195 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1196 v9.CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 4)
26935
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1197 unlet g:myDict
ccb9be1cdd71 patch 8.2.3996: Vim9: type checking lacks information about declared type
Bram Moolenaar <Bram@vim.org>
parents: 26925
diff changeset
1198
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1199 # 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
1200 lines =<< trim END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1201 vim9script
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1202 var test: dict<any> = {}
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1203 def FillDict(): dict<any>
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1204 test['a'] = 43
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1205 return test
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1206 enddef
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23070
diff changeset
1207 assert_equal({a: 43}, FillDict())
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1208 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1209 v9.CheckScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1210
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1211 lines =<< trim END
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1212 vim9script
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1213 var test: dict<any>
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1214 def FillDict(): dict<any>
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1215 test['a'] = 43
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1216 return test
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1217 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1218 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
1219 assert_equal({a: 43}, test)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1220 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1221 v9.CheckScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1222
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1223 # assignment to global dict
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1224 lines =<< trim END
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1225 vim9script
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1226 g:test = {}
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1227 def FillDict(): dict<any>
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1228 g:test['a'] = 43
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1229 return g:test
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1230 enddef
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23070
diff changeset
1231 assert_equal({a: 43}, FillDict())
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1232 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1233 v9.CheckScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1234
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1235 # assignment to buffer dict
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1236 lines =<< trim END
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1237 vim9script
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1238 b:test = {}
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1239 def FillDict(): dict<any>
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1240 b:test['a'] = 43
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1241 return b:test
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1242 enddef
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23070
diff changeset
1243 assert_equal({a: 43}, FillDict())
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1244 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1245 v9.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
1246
00f7cd9b6033 patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents: 23245
diff changeset
1247 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
1248 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
1249 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
1250 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1251 v9.CheckDefExecFailure(lines, 'E1103:', 2)
23266
00f7cd9b6033 patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents: 23245
diff changeset
1252
00f7cd9b6033 patch 8.2.2179: Vim9: crash when indexing a dict with a number
Bram Moolenaar <Bram@vim.org>
parents: 23245
diff changeset
1253 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
1254 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
1255 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
1256 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1257 v9.CheckDefExecFailure(lines, 'E1148:', 2)
25036
3b8d3b383fd6 patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary
Bram Moolenaar <Bram@vim.org>
parents: 25034
diff changeset
1258
3b8d3b383fd6 patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary
Bram Moolenaar <Bram@vim.org>
parents: 25034
diff changeset
1259 lines =<< trim END
3b8d3b383fd6 patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary
Bram Moolenaar <Bram@vim.org>
parents: 25034
diff changeset
1260 var n: any
3b8d3b383fd6 patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary
Bram Moolenaar <Bram@vim.org>
parents: 25034
diff changeset
1261 n.key = 5
3b8d3b383fd6 patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary
Bram Moolenaar <Bram@vim.org>
parents: 25034
diff changeset
1262 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1263 v9.CheckDefExecAndScriptFailure(lines, ['E1148:', 'E1203: Dot can only be used on a dictionary: n.key = 5'], 2)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1264 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1265
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1266 def Test_assignment_local()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1267 # 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
1268 # changed.
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1269 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
1270 let b:existing = 'yes'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1271 let w:existing = 'yes'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1272 let t:existing = 'yes'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1273
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1274 def Test_assignment_local_internal()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1275 b:newvar = 'new'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1276 assert_equal('new', b:newvar)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1277 assert_equal('yes', b:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1278 b:existing = 'no'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1279 assert_equal('no', b:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1280 b:existing ..= 'NO'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1281 assert_equal('noNO', b:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1282
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1283 w:newvar = 'new'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1284 assert_equal('new', w:newvar)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1285 assert_equal('yes', w:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1286 w:existing = 'no'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1287 assert_equal('no', w:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1288 w:existing ..= 'NO'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1289 assert_equal('noNO', w:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1290
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1291 t:newvar = 'new'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1292 assert_equal('new', t:newvar)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1293 assert_equal('yes', t:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1294 t:existing = 'no'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1295 assert_equal('no', t:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1296 t:existing ..= 'NO'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1297 assert_equal('noNO', t:existing)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1298 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1299 call Test_assignment_local_internal()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1300 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1301 v9.CheckScriptSuccess(script_lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1302 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1303
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1304 def Test_assignment_default()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1305 # Test default values.
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1306 var thebool: bool
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1307 assert_equal(v:false, thebool)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1308
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1309 var thenumber: number
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1310 assert_equal(0, thenumber)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1311
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1312 if has('float')
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1313 var thefloat: float
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1314 assert_equal(0.0, thefloat)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1315 endif
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1316
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1317 var thestring: string
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1318 assert_equal('', thestring)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1319
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1320 var theblob: blob
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1321 assert_equal(0z, theblob)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1322
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1323 var Thefunc: func
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1324 assert_equal(test_null_function(), Thefunc)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1325
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1326 var thelist: list<any>
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1327 assert_equal([], thelist)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1328
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1329 var thedict: dict<any>
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1330 assert_equal({}, thedict)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1331
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1332 if has('channel')
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1333 var thejob: job
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1334 assert_equal(test_null_job(), thejob)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1335
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1336 var thechannel: channel
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1337 assert_equal(test_null_channel(), thechannel)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1338
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1339 if has('unix') && executable('cat')
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1340 # 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
1341 thejob = job_start("cat ", {})
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1342 thechannel = job_getchannel(thejob)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1343 job_stop(thejob, 'kill')
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1344 endif
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1345 endif
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1346
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1347 var nr = 1234 | nr = 5678
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1348 assert_equal(5678, nr)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1349 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1350
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1351 def Test_script_var_default()
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1352 var lines =<< trim END
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1353 vim9script
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1354 var l: list<number>
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1355 var li = [1, 2]
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1356 var bl: blob
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1357 var bli = 0z12
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1358 var d: dict<number>
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1359 var di = {'a': 1, 'b': 2}
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1360 def Echo()
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1361 assert_equal([], l)
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1362 assert_equal([1, 2], li)
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1363 assert_equal(0z, bl)
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1364 assert_equal(0z12, bli)
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1365 assert_equal({}, d)
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1366 assert_equal({'a': 1, 'b': 2}, di)
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1367 enddef
27764
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
1368 Echo()
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1369 END
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1370 v9.CheckScriptSuccess(lines)
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1371 enddef
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
1372
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1373 let s:scriptvar = 'init'
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1374
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1375 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
1376 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
1377 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
1378 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
1379 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
1380 [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
1381 assert_equal('aaa', v1)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1382
23050
50442f932ff7 patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents: 23039
diff changeset
1383 [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
1384 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
1385 assert_equal('two', v2)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1386
23050
50442f932ff7 patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents: 23039
diff changeset
1387 [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
1388 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
1389 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
1390 assert_equal([], vrem)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1391
23050
50442f932ff7 patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents: 23039
diff changeset
1392 [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
1393 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
1394 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
1395 assert_equal(['three'], vrem)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1396
23050
50442f932ff7 patch 8.2.2071: Vim9: list assign doesn't except empty remainder list
Bram Moolenaar <Bram@vim.org>
parents: 23039
diff changeset
1397 [&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
1398 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
1399 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
1400 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
1401
9775df18916b patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents: 23050
diff changeset
1402 [@a, @z] = ['aa', 'zz']
9775df18916b patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents: 23050
diff changeset
1403 assert_equal('aa', @a)
9775df18916b patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents: 23050
diff changeset
1404 assert_equal('zz', @z)
9775df18916b patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents: 23050
diff changeset
1405
9775df18916b patch 8.2.2072: Vim9: list assign not well tested
Bram Moolenaar <Bram@vim.org>
parents: 23050
diff changeset
1406 [$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
1407 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
1408 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
1409
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1410 [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
1411 ['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
1412 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
1413 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
1414 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
1415 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
1416 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
1417 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
1418 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1419 v9.CheckDefAndScriptSuccess(lines)
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1420
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1421 [g:globalvar, scriptvar, b:bufvar] = ['global', 'script', 'buf']
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1422 assert_equal('global', g:globalvar)
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1423 assert_equal('script', scriptvar)
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1424 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
1425
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1426 lines =<< trim END
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1427 vim9script
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1428 var scriptvar = 'init'
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1429 [g:globalvar, scriptvar, w:winvar] = ['global', 'script', 'win']
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1430 assert_equal('global', g:globalvar)
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1431 assert_equal('script', scriptvar)
23450
a8e7acf71fa4 patch 8.2.2268: Vim9: list unpack seen as declaration
Bram Moolenaar <Bram@vim.org>
parents: 23448
diff changeset
1432 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
1433 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1434 v9.CheckScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1435 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1436
27519
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1437 def Test_assignment_empty_list()
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1438 var lines =<< trim END
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1439 var l2: list<any> = []
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1440 var l: list<string>
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1441 l = l2
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1442 END
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1443 v9.CheckDefAndScriptSuccess(lines)
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1444 enddef
7898c7847293 patch 8.2.4287: cannot assign empty list with type to variable with list type
Bram Moolenaar <Bram@vim.org>
parents: 27517
diff changeset
1445
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1446 def Test_assignment_vim9script()
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1447 var lines =<< trim END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1448 vim9script
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1449 def Func(): list<number>
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1450 return [1, 2]
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1451 enddef
22433
8b5e2f9580db patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents: 22431
diff changeset
1452 var name1: number
8b5e2f9580db patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents: 22431
diff changeset
1453 var name2: number
8b5e2f9580db patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents: 22431
diff changeset
1454 [name1, name2] =
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1455 Func()
22433
8b5e2f9580db patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents: 22431
diff changeset
1456 assert_equal(1, name1)
8b5e2f9580db patch 8.2.1765: Vim9: some tests use "var var"
Bram Moolenaar <Bram@vim.org>
parents: 22431
diff changeset
1457 assert_equal(2, name2)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1458 var ll =
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1459 Func()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1460 assert_equal([1, 2], ll)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1461
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1462 @/ = 'text'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1463 assert_equal('text', @/)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1464 @0 = 'zero'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1465 assert_equal('zero', @0)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1466 @1 = 'one'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1467 assert_equal('one', @1)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1468 @9 = 'nine'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1469 assert_equal('nine', @9)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1470 @- = 'minus'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1471 assert_equal('minus', @-)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1472 if has('clipboard_working')
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1473 @* = 'star'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1474 assert_equal('star', @*)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1475 @+ = 'plus'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1476 assert_equal('plus', @+)
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1477 endif
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1478
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1479 var a: number = 123
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1480 assert_equal(123, a)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1481 var s: string = 'yes'
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1482 assert_equal('yes', s)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1483 var b: number = 42
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1484 assert_equal(42, b)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1485 var w: number = 43
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1486 assert_equal(43, w)
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1487 var t: number = 44
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1488 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
1489
08e2363fd0de patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Bram Moolenaar <Bram@vim.org>
parents: 22582
diff changeset
1490 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
1491 to_var = 3
08e2363fd0de patch 8.2.1853: "to_f" is recognized at "topleft" modifier
Bram Moolenaar <Bram@vim.org>
parents: 22582
diff changeset
1492 assert_equal(3, to_var)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1493 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1494 v9.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
1495
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
1496 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
1497 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
1498 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
1499 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
1500 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
1501 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
1502 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
1503 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1504 v9.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
1505 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1506
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1507 def Mess(): string
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1508 v:foldstart = 123
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1509 return 'xxx'
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1510 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1511
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1512 def Test_assignment_failure()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1513 v9.CheckDefFailure(['var name=234'], 'E1004:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1514 v9.CheckDefFailure(['var name =234'], 'E1004:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1515 v9.CheckDefFailure(['var name= 234'], 'E1004:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1516
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1517 v9.CheckScriptFailure(['vim9script', 'var name=234'], 'E1004:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1518 v9.CheckScriptFailure(['vim9script', 'var name=234'], "before and after '='")
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1519 v9.CheckScriptFailure(['vim9script', 'var name =234'], 'E1004:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1520 v9.CheckScriptFailure(['vim9script', 'var name= 234'], 'E1004:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1521 v9.CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], 'E1004:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1522 v9.CheckScriptFailure(['vim9script', 'var name = 234', 'name+=234'], "before and after '+='")
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1523 v9.CheckScriptFailure(['vim9script', 'var name = "x"', 'name..="y"'], 'E1004:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1524 v9.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
1525
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1526 v9.CheckDefFailure(['var true = 1'], 'E1034:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1527 v9.CheckDefFailure(['var false = 1'], 'E1034:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1528 v9.CheckDefFailure(['var null = 1'], 'E1034:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1529 v9.CheckDefFailure(['var this = 1'], 'E1034:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1530
27738
d754ac2f5ac5 patch 8.2.4395: some code lines not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27728
diff changeset
1531 v9.CheckDefFailure(['[a; b; c] = g:list'], 'E1001:')
d754ac2f5ac5 patch 8.2.4395: some code lines not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27728
diff changeset
1532 v9.CheckDefFailure(['var [a; b; c] = g:list'], 'E1080:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1533 v9.CheckDefExecFailure(['var a: number',
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1534 '[a] = test_null_list()'], 'E1093:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1535 v9.CheckDefExecFailure(['var a: number',
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1536 '[a] = []'], 'E1093:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1537 v9.CheckDefExecFailure(['var x: number',
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1538 'var y: number',
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1539 '[x, y] = [1]'], 'E1093:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1540 v9.CheckDefExecFailure(['var x: string',
22621
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22618
diff changeset
1541 'var y: string',
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22618
diff changeset
1542 '[x, y] = ["x"]'], 'E1093:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1543 v9.CheckDefExecFailure(['var x: number',
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1544 'var y: number',
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1545 'var z: list<number>',
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1546 '[x, y; z] = [1]'], 'E1093:')
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1547
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1548 v9.CheckDefFailure(['var somevar'], "E1022:")
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1549 v9.CheckDefFailure(['var &tabstop = 4'], 'E1052:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1550 v9.CheckDefFailure(['&g:option = 5'], 'E113:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1551 v9.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
1552
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1553 v9.CheckDefFailure(['var $VAR = 5'], 'E1016: Cannot declare an environment variable:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1554 v9.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
1555
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1556 if has('dnd')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1557 v9.CheckDefFailure(['var @~ = 5'], 'E1066:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1558 else
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1559 v9.CheckDefFailure(['var @~ = 5'], 'E354:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1560 v9.CheckDefFailure(['@~ = 5'], 'E354:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1561 endif
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1562 v9.CheckDefFailure(['var @a = 5'], 'E1066:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1563 v9.CheckDefFailure(['var @/ = "x"'], 'E1066:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1564 v9.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
1565
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1566 v9.CheckDefFailure(['var g:var = 5'], 'E1016: Cannot declare a global variable:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1567 v9.CheckDefFailure(['var w:var = 5'], 'E1016: Cannot declare a window variable:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1568 v9.CheckDefFailure(['var b:var = 5'], 'E1016: Cannot declare a buffer variable:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1569 v9.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
1570
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1571 v9.CheckDefFailure(['var anr = 4', 'anr ..= "text"'], 'E1019:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1572 v9.CheckDefFailure(['var xnr += 4'], 'E1020:', 1)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1573 v9.CheckScriptFailure(['vim9script', 'var xnr += 4'], 'E1020:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1574 v9.CheckDefFailure(["var xnr = xnr + 1"], 'E1001:', 1)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1575 v9.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
1576
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1577 v9.CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = notfound', 'enddef', 'defcompile'], 'E1001:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1578
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1579 v9.CheckDefFailure(['var name: list<string> = [123]'], 'expected list<string> but got list<number>')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1580 v9.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
1581
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1582 v9.CheckDefFailure(['var name: dict<string> = {key: 123}'], 'expected dict<string> but got dict<number>')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1583 v9.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
1584
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1585 v9.CheckDefFailure(['var name = feedkeys("0")'], 'E1031:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1586 v9.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
1587
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1588 v9.CheckDefFailure(['var name: dict <number>'], 'E1068:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1589 v9.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
1590
27464
a14c4d3e3260 patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
1591 assert_fails('s/^/\=g:Mess()/n', 'E794:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1592 v9.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
1593
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1594 v9.CheckDefFailure(['w:foo: number = 10'],
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1595 'E488: Trailing characters: : number = 1')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1596 v9.CheckDefFailure(['t:foo: bool = true'],
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1597 'E488: Trailing characters: : bool = true')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1598 v9.CheckDefFailure(['b:foo: string = "x"'],
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1599 'E488: Trailing characters: : string = "x"')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1600 v9.CheckDefFailure(['g:foo: number = 123'],
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1601 'E488: Trailing characters: : number = 123')
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1602 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1603
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1604 def Test_assign_list()
25054
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1605 var lines =<< trim END
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1606 var l: list<string> = []
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1607 l[0] = 'value'
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1608 assert_equal('value', l[0])
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1609
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1610 l[1] = 'asdf'
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1611 assert_equal('value', l[0])
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1612 assert_equal('asdf', l[1])
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1613 assert_equal('asdf', l[-1])
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1614 assert_equal('value', l[-2])
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1615
25054
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1616 var nrl: list<number> = []
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1617 for i in range(5)
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1618 nrl[i] = i
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1619 endfor
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1620 assert_equal([0, 1, 2, 3, 4], nrl)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1621
25054
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1622 var ul: list<any>
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1623 ul[0] = 1
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1624 ul[1] = 2
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1625 ul[2] = 3
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1626 assert_equal([1, 2, 3], ul)
64bef59f11ef patch 8.2.3064: Vim9: in script cannot set item in uninitialized list
Bram Moolenaar <Bram@vim.org>
parents: 25036
diff changeset
1627 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1628 v9.CheckDefAndScriptSuccess(lines)
22631
59cd5f8b2ab2 patch 8.2.1864: Vim9: no error for wrong list type
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
1629
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1630 lines =<< trim END
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1631 var l = [1, 2]
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1632 g:idx = 'x'
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1633 l[g:idx : 1] = [0]
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1634 echo l
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1635 END
28131
d8bf200cd761 patch 8.2.4590: Vim9: range type check has wrong offset
Bram Moolenaar <Bram@vim.org>
parents: 28129
diff changeset
1636 v9.CheckDefExecAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "x"'])
27918
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1637
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1638 lines =<< trim END
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1639 var l = [1, 2]
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1640 g:idx = 3
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1641 l[g:idx : 1] = [0]
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1642 echo l
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1643 END
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1644 v9.CheckDefExecAndScriptFailure(lines, 'E684: list index out of range: 3')
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1645
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1646 lines =<< trim END
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1647 var l = [1, 2]
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1648 g:idx = 'y'
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1649 l[1 : g:idx] = [0]
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1650 echo l
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1651 END
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1652 v9.CheckDefExecAndScriptFailure(lines, ['E1012: Type mismatch; expected number but got string', 'E1030: Using a String as a Number: "y"'])
7d70b420de00 patch 8.2.4484: Vim9: some error messages are not tested
Bram Moolenaar <Bram@vim.org>
parents: 27843
diff changeset
1653
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1654 v9.CheckDefFailure(["var l: list<number> = ['', true]"], 'E1012: Type mismatch; expected list<number> but got list<any>', 1)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1655 v9.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
1656 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1657
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1658 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
1659 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
1660 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
1661 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
1662 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
1663
8f31b990ab1e patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
1664 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
1665 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
1666 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
1667
8f31b990ab1e patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
1668 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
1669 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
1670 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
1671 endfor
8f31b990ab1e patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
1672 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
1673
23448
8f31b990ab1e patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
1674 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
1675 assert_equal({key: 'value', '123': 'qwerty', somekey: 'someval'}, d)
25489
911fdca7f736 patch 8.2.3281: Vim9: TODO items in tests can be taken care of
Bram Moolenaar <Bram@vim.org>
parents: 25483
diff changeset
1676 unlet d.somekey
911fdca7f736 patch 8.2.3281: Vim9: TODO items in tests can be taken care of
Bram Moolenaar <Bram@vim.org>
parents: 25483
diff changeset
1677 assert_equal({key: 'value', '123': 'qwerty'}, d)
23448
8f31b990ab1e patch 8.2.2267: Vim9: cannot use unlet for a dict member
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
1678 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1679 v9.CheckDefAndScriptSuccess(lines)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1680
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1681 v9.CheckDefFailure(["var d: dict<number> = {a: '', b: true}"], 'E1012: Type mismatch; expected dict<number> but got dict<any>', 1)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1682 v9.CheckDefFailure(["var d: dict<dict<number>> = {x: {a: '', b: true}}"], 'E1012: Type mismatch; expected dict<dict<number>> but got dict<dict<any>>', 1)
27716
4097434c7c67 patch 8.2.4384: Vim9: error message not tested, some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
1683 v9.CheckDefFailure(["var d = {x: 1}", "d[1 : 2] = {y: 2}"], 'E1165: Cannot use a range with an assignment: d[1 : 2] =', 2)
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1684 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1685
22363
6c3d15011081 patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
1686 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
1687 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
1688 vim9script
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1689 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
1690 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
1691 def Func()
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22365
diff changeset
1692 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
1693 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
1694 enddef
6c3d15011081 patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
1695 Func()
6c3d15011081 patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
1696 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1697 v9.CheckScriptSuccess(lines)
22363
6c3d15011081 patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
1698
23039
75241f4377a4 patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23033
diff changeset
1699 lines =<< trim END
75241f4377a4 patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23033
diff changeset
1700 vim9script
75241f4377a4 patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23033
diff changeset
1701 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
1702 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
1703 def Func()
75241f4377a4 patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23033
diff changeset
1704 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
1705 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
1706 enddef
75241f4377a4 patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23033
diff changeset
1707 Func()
75241f4377a4 patch 8.2.2066: Vim9: assignment with += doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23033
diff changeset
1708 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1709 v9.CheckScriptSuccess(lines)
22363
6c3d15011081 patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
1710 enddef
6c3d15011081 patch 8.2.1730: Vim9: cannot use member of unknown type
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
1711
24047
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1712 def Test_assign_dict_with_op()
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1713 var lines =<< trim END
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1714 var ds: dict<string> = {a: 'x'}
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1715 ds['a'] ..= 'y'
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1716 ds.a ..= 'z'
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1717 assert_equal('xyz', ds.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1718
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1719 var dn: dict<number> = {a: 9}
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1720 dn['a'] += 2
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1721 assert_equal(11, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1722 dn.a += 2
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1723 assert_equal(13, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1724
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1725 dn['a'] -= 3
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1726 assert_equal(10, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1727 dn.a -= 2
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1728 assert_equal(8, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1729
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1730 dn['a'] *= 2
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1731 assert_equal(16, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1732 dn.a *= 2
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1733 assert_equal(32, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1734
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1735 dn['a'] /= 3
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1736 assert_equal(10, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1737 dn.a /= 2
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1738 assert_equal(5, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1739
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1740 dn['a'] %= 3
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1741 assert_equal(2, dn.a)
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1742 dn.a %= 6
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1743 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
1744
1a145eb83a28 patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents: 24357
diff changeset
1745 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
1746 dd.a = {}
1a145eb83a28 patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents: 24357
diff changeset
1747 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
1748 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
1749 assert_equal({a: {b: [0, 1]}}, dd)
24367
95b8937804d3 patch 8.2.2724: Vim9: concatenating to list in dict not tested
Bram Moolenaar <Bram@vim.org>
parents: 24363
diff changeset
1750
95b8937804d3 patch 8.2.2724: Vim9: concatenating to list in dict not tested
Bram Moolenaar <Bram@vim.org>
parents: 24363
diff changeset
1751 var dab = {a: ['b']}
95b8937804d3 patch 8.2.2724: Vim9: concatenating to list in dict not tested
Bram Moolenaar <Bram@vim.org>
parents: 24363
diff changeset
1752 dab.a[0] ..= 'c'
95b8937804d3 patch 8.2.2724: Vim9: concatenating to list in dict not tested
Bram Moolenaar <Bram@vim.org>
parents: 24363
diff changeset
1753 assert_equal({a: ['bc']}, dab)
24047
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1754 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1755 v9.CheckDefAndScriptSuccess(lines)
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
1756 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
1757
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
1758 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
1759 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
1760 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
1761 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
1762 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
1763
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
1764 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
1765 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
1766 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
1767
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
1768 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
1769 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
1770
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
1771 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
1772 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
1773
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
1774 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
1775 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
1776
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
1777 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
1778 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
1779 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1780 v9.CheckDefAndScriptSuccess(lines)
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
1781 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
1782
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
1783 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
1784 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
1785 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
1786 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
1787 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1788 v9.CheckDefAndScriptFailure(lines, ['E1141:', 'E689:'], 2)
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
1789
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
1790 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
1791 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
1792 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
1793 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1794 v9.CheckDefAndScriptFailure(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
1795
1a145eb83a28 patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents: 24357
diff changeset
1796 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
1797 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
1798 dd.a = {}
1a145eb83a28 patch 8.2.2722: Vim9: crash when using LHS with double index
Bram Moolenaar <Bram@vim.org>
parents: 24357
diff changeset
1799 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
1800 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1801 v9.CheckDefExecAndScriptFailure(lines, 'E716:', 3)
24047
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1802 enddef
b535ab17d160 patch 8.2.2565: Vim9: "..=" not always recognized
Bram Moolenaar <Bram@vim.org>
parents: 23982
diff changeset
1803
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1804 def Test_assign_lambda()
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1805 # 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
1806 var lines =<< trim END
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1807 vim9script
23428
5807e3958e38 patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents: 23422
diff changeset
1808 var FuncRef = () => 123
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1809 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
1810 var FuncRef_Func: func = () => 123
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1811 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
1812 var FuncRef_Any: any = () => 123
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1813 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
1814 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
1815 assert_equal(321, FuncRef_Number())
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1816 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1817 v9.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
1818
f39a18a42aed patch 8.2.2308: Vim9: no error when assigning lambda to funcref
Bram Moolenaar <Bram@vim.org>
parents: 23523
diff changeset
1819 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
1820 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
1821 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
1822 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1823 v9.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
1824
a620df0ebbe5 patch 8.2.2528: Vim9: crash when compiling lambda fails
Bram Moolenaar <Bram@vim.org>
parents: 23970
diff changeset
1825 lines =<< trim END
a620df0ebbe5 patch 8.2.2528: Vim9: crash when compiling lambda fails
Bram Moolenaar <Bram@vim.org>
parents: 23970
diff changeset
1826 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
1827 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1828 v9.CheckDefAndScriptFailure(lines, 'E1051:')
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1829 enddef
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1830
22413
66d1131a7eff patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents: 22391
diff changeset
1831 def Test_heredoc()
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1832 # simple heredoc
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1833 var lines =<< trim END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1834 var text =<< trim TEXT # comment
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1835 abc
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1836 TEXT
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1837 assert_equal(['abc'], text)
22413
66d1131a7eff patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents: 22391
diff changeset
1838 END
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1839 v9.CheckDefAndScriptSuccess(lines)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1840
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1841 # empty heredoc
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1842 lines =<< trim END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1843 var text =<< trim TEXT
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1844 TEXT
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1845 assert_equal([], text)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1846 END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1847 v9.CheckDefAndScriptSuccess(lines)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1848
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1849 # heredoc with a single empty line
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1850 lines =<< trim END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1851 var text =<< trim TEXT
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1852
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1853 TEXT
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1854 assert_equal([''], text)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1855 END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
1856 v9.CheckDefAndScriptSuccess(lines)
22413
66d1131a7eff patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents: 22391
diff changeset
1857
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1858 v9.CheckDefFailure(['var lines =<< trim END X', 'END'], 'E488:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1859 v9.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
1860
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1861 lines =<< trim [END]
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1862 def Func()
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1863 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
1864 x
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1865 x
23185
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1866 enddef
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1867 defcompile
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1868 [END]
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1869 v9.CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: END')
23185
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1870 delfunc! g:Func
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1871
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1872 lines =<< trim [END]
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1873 def Func()
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1874 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
1875 x
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23138
diff changeset
1876 x
22423
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1877 x
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1878 x
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1879 x
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1880 x
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1881 x
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1882 x
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1883 enddef
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1884 call Func()
5b35b477eff0 patch 8.2.1760: Vim9: crash when end marker is missing
Bram Moolenaar <Bram@vim.org>
parents: 22413
diff changeset
1885 [END]
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1886 v9.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
1887 delfunc! g:Func
25405
747ebbce2421 patch 8.2.3239: Vim9: no error using heredoc for a number variable
Bram Moolenaar <Bram@vim.org>
parents: 25400
diff changeset
1888
747ebbce2421 patch 8.2.3239: Vim9: no error using heredoc for a number variable
Bram Moolenaar <Bram@vim.org>
parents: 25400
diff changeset
1889 lines =<< trim END
747ebbce2421 patch 8.2.3239: Vim9: no error using heredoc for a number variable
Bram Moolenaar <Bram@vim.org>
parents: 25400
diff changeset
1890 var lines: number =<< trim STOP
747ebbce2421 patch 8.2.3239: Vim9: no error using heredoc for a number variable
Bram Moolenaar <Bram@vim.org>
parents: 25400
diff changeset
1891 aaa
747ebbce2421 patch 8.2.3239: Vim9: no error using heredoc for a number variable
Bram Moolenaar <Bram@vim.org>
parents: 25400
diff changeset
1892 bbb
747ebbce2421 patch 8.2.3239: Vim9: no error using heredoc for a number variable
Bram Moolenaar <Bram@vim.org>
parents: 25400
diff changeset
1893 STOP
747ebbce2421 patch 8.2.3239: Vim9: no error using heredoc for a number variable
Bram Moolenaar <Bram@vim.org>
parents: 25400
diff changeset
1894 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1895 v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<string>', 1)
22413
66d1131a7eff patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents: 22391
diff changeset
1896 enddef
66d1131a7eff patch 8.2.1755: Vim9: crash when using invalid heredoc marker
Bram Moolenaar <Bram@vim.org>
parents: 22391
diff changeset
1897
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
1898 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
1899 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
1900 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1901 func GetValue()
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1902 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
1903 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
1904 else
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1905 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
1906 endif
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1907 return 'this'
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1908 endfunc
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1909 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
1910 # 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
1911 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
1912 END
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1913 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
1914 source Xfinished
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1915 # 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
1916 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
1917
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1918 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
1919 delete('Xfinished')
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1920 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1921
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
1922 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
1923 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
1924 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1925 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
1926 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1927 v9.CheckScriptFailure(lines, 'E121:')
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1928
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1929 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
1930 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1931 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
1932 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
1933 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
1934 v9.CheckScriptSuccess(lines)
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1935 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1936
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
1937 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
1938 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
1939 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1940 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
1941 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
1942 name = 'text'
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1943 g:var_test = name
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1944 # prefixing s: is not allowed
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1945 name = 'prefixed'
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1946 g:var_prefixed = name
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1947
23138
1a9705075244 patch 8.2.2115: Vim9: some errors not tested for; dead code
Bram Moolenaar <Bram@vim.org>
parents: 23124
diff changeset
1948 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
1949 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
1950 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
1951 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
1952 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
1953 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
1954 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
1955 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
1956
40f1d3f0c53e patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents: 23266
diff changeset
1957 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
1958 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
1959 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
1960 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
1961 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
1962 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
1963 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
1964 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
1965
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
1966 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
1967 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
1968 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
1969 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
1970 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
1971 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
1972
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
1973 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
1974 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
1975 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
1976 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
1977 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
1978 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
1979 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
1980 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
1981
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1982 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
1983 other = 1234
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1984 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
1985
24238
e5cd25f7ffcd patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents: 24154
diff changeset
1986 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
1987
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1988 # type is inferred
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1989 var 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
1990 def GetDictVal(key: any)
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
1991 g:dict_val = dict[key]
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1992 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
1993 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
1994
85ce241ff9e3 patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents: 23549
diff changeset
1995 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
1996 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
1997 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
1998 enddef
85ce241ff9e3 patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents: 23549
diff changeset
1999 ChangeAdict()
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2000 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2001 v9.CheckScriptSuccess(lines)
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2002 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
2003 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
2004 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
2005 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
2006 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
2007
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2008 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
2009 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
2010 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
2011 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
2012 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
2013 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
2014 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
2015 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
2016 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
2017 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
2018 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
2019 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2020
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
2021 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
2022 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
2023 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2024 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
2025 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2026 v9.CheckScriptFailure(lines, 'E1125:')
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2027
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2028 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
2029 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
2030 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
2031 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
2032 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2033 v9.CheckScriptFailure(lines, 'E741:')
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
2034 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
2035
40f1d3f0c53e patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents: 23266
diff changeset
2036 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
2037 vim9script
24303
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2038 var name = 'one'
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2039 lockvar name
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2040 def SetLocked()
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2041 name = 'two'
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2042 enddef
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2043 SetLocked()
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2044 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2045 v9.CheckScriptFailure(lines, 'E741: Value is locked: name', 1)
24305
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2046
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2047 lines =<< trim END
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2048 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
2049 lockvar s:legacy
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2050 def SetLocked()
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2051 s:legacy = 'two'
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2052 enddef
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2053 call SetLocked()
c88d0b5c5a42 patch 8.2.2693: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24303
diff changeset
2054 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2055 v9.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
2056
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2057 lines =<< trim END
17b49af76766 patch 8.2.2692: Vim9: locked script variable can be changed
Bram Moolenaar <Bram@vim.org>
parents: 24293
diff changeset
2058 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
2059 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
2060 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
2061 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
2062 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
2063 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
2064 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2065 v9.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
2066 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
2067
bbf4b3185554 patch 8.2.2687: Vim9: cannot use "const" for global variable in :def function
Bram Moolenaar <Bram@vim.org>
parents: 24264
diff changeset
2068 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
2069 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
2070 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
2071 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
2072 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
2073 enddef
85ce241ff9e3 patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents: 23549
diff changeset
2074 defcompile
85ce241ff9e3 patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents: 23549
diff changeset
2075 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2076 v9.CheckScriptFailure(lines, 'E46:')
23578
85ce241ff9e3 patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents: 23549
diff changeset
2077
85ce241ff9e3 patch 8.2.2331: Vim9: wrong error when modifying dict declared with :final
Bram Moolenaar <Bram@vim.org>
parents: 23549
diff changeset
2078 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
2079 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
2080 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
2081 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
2082 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2083 v9.CheckScriptFailure(lines, 'E1122:')
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
2084 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
2085
40f1d3f0c53e patch 8.2.2194: Vim9: cannot use :const or :final at the script level
Bram Moolenaar <Bram@vim.org>
parents: 23266
diff changeset
2086 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
2087 vim9script
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2088 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
2089 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2090 v9.CheckScriptFailure(lines, 'E1021:')
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2091
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2092 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
2093 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2094 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
2095 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2096 v9.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
2097
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2098 v9.CheckDefFailure(['var foo.bar = 2'], 'E1087:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2099 v9.CheckDefFailure(['var foo[3] = 2'], 'E1087:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2100 v9.CheckDefFailure(['const foo: number'], 'E1021:')
27968
40c6e5f849dc patch 8.2.4509: Vim9: can declare a variable with ":va"
Bram Moolenaar <Bram@vim.org>
parents: 27950
diff changeset
2101
40c6e5f849dc patch 8.2.4509: Vim9: can declare a variable with ":va"
Bram Moolenaar <Bram@vim.org>
parents: 27950
diff changeset
2102 lines =<< trim END
40c6e5f849dc patch 8.2.4509: Vim9: can declare a variable with ":va"
Bram Moolenaar <Bram@vim.org>
parents: 27950
diff changeset
2103 va foo = 123
40c6e5f849dc patch 8.2.4509: Vim9: can declare a variable with ":va"
Bram Moolenaar <Bram@vim.org>
parents: 27950
diff changeset
2104 END
40c6e5f849dc patch 8.2.4509: Vim9: can declare a variable with ":va"
Bram Moolenaar <Bram@vim.org>
parents: 27950
diff changeset
2105 v9.CheckDefAndScriptFailure(lines, 'E1065:', 1)
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2106 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2107
27728
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2108 def Test_var_declaration_inferred()
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2109 # check that type is set on the list so that extend() fails
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2110 var lines =<< trim END
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2111 vim9script
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2112 def GetList(): list<number>
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2113 var l = [1, 2, 3]
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2114 return l
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2115 enddef
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2116 echo GetList()->extend(['x'])
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2117 END
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2118 v9.CheckScriptFailure(lines, 'E1013:', 6)
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2119 enddef
fdc841530372 patch 8.2.4390: Vim9: list from declaration with inferred type not set
Bram Moolenaar <Bram@vim.org>
parents: 27716
diff changeset
2120
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2121 def Test_script_local_in_legacy()
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2122 # OK to define script-local later but before compiling
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2123 var lines =<< trim END
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2124 def SetLater()
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2125 legvar = 'two'
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2126 enddef
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2127 let s:legvar = 'one'
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2128 defcompile
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2129 call SetLater()
24531
3bfec39ce31c patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 24462
diff changeset
2130 call assert_equal('two', s:legvar)
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2131 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2132 v9.CheckScriptSuccess(lines)
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2133
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2134 # OK to leave out s: prefix when script-local already defined
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2135 lines =<< trim END
24531
3bfec39ce31c patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 24462
diff changeset
2136 let s:legvar = 'one'
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2137 def SetNoPrefix()
24531
3bfec39ce31c patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 24462
diff changeset
2138 legvar = 'two'
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2139 enddef
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2140 call SetNoPrefix()
24531
3bfec39ce31c patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 24462
diff changeset
2141 call assert_equal('two', s:legvar)
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2142 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2143 v9.CheckScriptSuccess(lines)
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2144
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2145 # Not OK to leave out s: prefix when script-local defined after compiling
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2146 lines =<< trim END
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2147 def SetLaterNoPrefix()
24531
3bfec39ce31c patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 24462
diff changeset
2148 legvar = 'two'
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2149 enddef
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2150 defcompile
24531
3bfec39ce31c patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 24462
diff changeset
2151 let s:legvar = 'one'
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2152 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2153 v9.CheckScriptFailure(lines, 'E476:', 1)
25274
84d5cda23b34 patch 8.2.3174: Vim9: "legacy undo" finds "undo" variable
Bram Moolenaar <Bram@vim.org>
parents: 25263
diff changeset
2154
84d5cda23b34 patch 8.2.3174: Vim9: "legacy undo" finds "undo" variable
Bram Moolenaar <Bram@vim.org>
parents: 25263
diff changeset
2155 edit! Xfile
84d5cda23b34 patch 8.2.3174: Vim9: "legacy undo" finds "undo" variable
Bram Moolenaar <Bram@vim.org>
parents: 25263
diff changeset
2156 lines =<< trim END
84d5cda23b34 patch 8.2.3174: Vim9: "legacy undo" finds "undo" variable
Bram Moolenaar <Bram@vim.org>
parents: 25263
diff changeset
2157 var edit: bool
84d5cda23b34 patch 8.2.3174: Vim9: "legacy undo" finds "undo" variable
Bram Moolenaar <Bram@vim.org>
parents: 25263
diff changeset
2158 legacy edit
84d5cda23b34 patch 8.2.3174: Vim9: "legacy undo" finds "undo" variable
Bram Moolenaar <Bram@vim.org>
parents: 25263
diff changeset
2159 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2160 v9.CheckDefAndScriptSuccess(lines)
24377
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2161 enddef
f9f8cceaece3 patch 8.2.2729: Vim9: wrong error message for referring to legacy script var
Bram Moolenaar <Bram@vim.org>
parents: 24367
diff changeset
2162
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
2163 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
2164 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
2165 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2166 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
2167 name = 1234
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2168 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2169 v9.CheckScriptFailure(lines, 'E1012:')
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2170
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2171 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
2172 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2173 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
2174 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2175 v9.CheckScriptFailure(lines, 'E1069:')
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2176
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2177 v9.CheckDefAndScriptFailure(['var n:number = 42'], 'E1069:')
25668
ba4e6e74c89f patch 8.2.3370: Vim9: no check for white space before type in declaration
Bram Moolenaar <Bram@vim.org>
parents: 25591
diff changeset
2178
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2179 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
2180 vim9script
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2181 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
2182 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2183 v9.CheckScriptFailure(lines, 'E1010:')
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2184
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2185 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
2186 vim9script
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2187 var l: list<number>
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2188 l = []
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2189 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2190 v9.CheckScriptSuccess(lines)
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2191
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2192 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
2193 vim9script
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2194 var d: dict<number>
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2195 d = {}
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2196 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2197 v9.CheckScriptSuccess(lines)
25263
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2198
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2199 lines =<< trim END
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2200 vim9script
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2201 var d = {a: 1, b: [2]}
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2202 def Func(b: bool)
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2203 var l: list<number> = b ? d.b : [3]
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2204 enddef
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2205 defcompile
5861cc1f5704 patch 8.2.3168: Vim9: type error for constant of type any
Bram Moolenaar <Bram@vim.org>
parents: 25141
diff changeset
2206 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2207 v9.CheckScriptSuccess(lines)
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2208 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2209
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2210 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
2211
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
2212 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
2213 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
2214 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
2215 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
2216
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2217 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
2218 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
2219 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
2220
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2221 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
2222 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
2223 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
2224 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2225 v9.CheckDefExecFailure(lines, 'E1012: Type mismatch; expected list<number> but got list<string>')
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2226 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2227
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
2228 def Test_cannot_use_let()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2229 v9.CheckDefAndScriptFailure(['let a = 34'], 'E1126:', 1)
23124
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
2230 enddef
f8cd5a5e03c4 patch 8.2.2108: Vim9: no test to check for :let error
Bram Moolenaar <Bram@vim.org>
parents: 23122
diff changeset
2231
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2232 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
2233 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
2234 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
2235 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
2236 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
2237 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
2238
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2239 # 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
2240 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
2241 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
2242 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
2243 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
2244 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
2245
27539
ce4c2f4ce1f9 patch 8.2.4296: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27519
diff changeset
2246 if 0
ce4c2f4ce1f9 patch 8.2.4296: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27519
diff changeset
2247 unlet g:does_not_exist
ce4c2f4ce1f9 patch 8.2.4296: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27519
diff changeset
2248 endif
ce4c2f4ce1f9 patch 8.2.4296: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27519
diff changeset
2249
ce4c2f4ce1f9 patch 8.2.4296: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27519
diff changeset
2250 v9.CheckDefExecFailure(['unlet v:notfound.key'], 'E1001:')
ce4c2f4ce1f9 patch 8.2.4296: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27519
diff changeset
2251
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2252 v9.CheckDefExecFailure([
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2253 '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
2254 'unlet dd',
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2255 ], 'E1081:', 2)
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2256
23517
36bf9a6fbd4c patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents: 23509
diff changeset
2257 # dict unlet
27764
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
2258 var dd = {a: 1, b: 2, c: 3, 4: 4}
23517
36bf9a6fbd4c patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents: 23509
diff changeset
2259 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
2260 unlet dd.c
27764
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
2261 unlet dd[4]
23517
36bf9a6fbd4c patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents: 23509
diff changeset
2262 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
2263
28152
b96409b84eaf patch 8.2.4600: Vim9: not enough test coverage for executing :def function
Bram Moolenaar <Bram@vim.org>
parents: 28131
diff changeset
2264 # null key works like empty string
b96409b84eaf patch 8.2.4600: Vim9: not enough test coverage for executing :def function
Bram Moolenaar <Bram@vim.org>
parents: 28131
diff changeset
2265 dd = {'': 1, x: 9}
b96409b84eaf patch 8.2.4600: Vim9: not enough test coverage for executing :def function
Bram Moolenaar <Bram@vim.org>
parents: 28131
diff changeset
2266 unlet dd[null_string]
b96409b84eaf patch 8.2.4600: Vim9: not enough test coverage for executing :def function
Bram Moolenaar <Bram@vim.org>
parents: 28131
diff changeset
2267 assert_equal({x: 9}, dd)
b96409b84eaf patch 8.2.4600: Vim9: not enough test coverage for executing :def function
Bram Moolenaar <Bram@vim.org>
parents: 28131
diff changeset
2268
23517
36bf9a6fbd4c patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents: 23509
diff changeset
2269 # list unlet
36bf9a6fbd4c patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents: 23509
diff changeset
2270 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
2271 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
2272 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
2273 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
2274
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2275 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
2276 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
2277 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
2278
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2279 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
2280 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
2281 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
2282
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2283 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
2284 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
2285 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
2286
27768
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27766
diff changeset
2287 g:nrdict = {1: 1, 2: 2}
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27766
diff changeset
2288 g:idx = 1
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27766
diff changeset
2289 unlet g:nrdict[g:idx]
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27766
diff changeset
2290 assert_equal({2: 2}, g:nrdict)
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27766
diff changeset
2291 unlet g:nrdict
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27766
diff changeset
2292 unlet g:idx
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27766
diff changeset
2293
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2294 v9.CheckDefFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2295 '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
2296 'll[1 : 2] = 7',
25591
ea69398b40d1 patch 8.2.3332: Vim9: cannot assign to range in list
Bram Moolenaar <Bram@vim.org>
parents: 25547
diff changeset
2297 ], 'E1012: Type mismatch; expected list<number> but got number', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2298 v9.CheckDefFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2299 '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
2300 '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
2301 ], 'E1166:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2302 v9.CheckDefExecFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2303 '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
2304 ], 'E1148:', 1)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2305 v9.CheckDefFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2306 '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
2307 '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
2308 ], 'E1004:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2309 v9.CheckDefFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2310 '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
2311 '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
2312 ], 'E1004:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2313 v9.CheckDefFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2314 '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
2315 '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
2316 ], 'E1004:', 2)
27762
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2317
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2318 v9.CheckDefExecFailure([
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2319 'g:ll = [1, 2]',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2320 'g:idx = "x"',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2321 'unlet g:ll[g:idx]',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2322 ], 'E1029: Expected number but got string', 3)
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2323
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2324 v9.CheckDefExecFailure([
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2325 'g:ll = [1, 2, 3]',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2326 'g:idx = "x"',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2327 'unlet g:ll[g:idx : 2]',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2328 ], 'E1029: Expected number but got string', 3)
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2329
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2330 v9.CheckDefExecFailure([
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2331 'g:ll = [1, 2, 3]',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2332 'g:idx = "x"',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2333 'unlet g:ll[0 : g:idx]',
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2334 ], 'E1029: Expected number but got string', 3)
3196066c5795 patch 8.2.4407: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27738
diff changeset
2335
26330
55e658312376 patch 8.2.3696: Vim9: error for invalid assignment when skipping
Bram Moolenaar <Bram@vim.org>
parents: 26302
diff changeset
2336 # command recognized as assignment when skipping, should not give an error
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2337 v9.CheckScriptSuccess([
26330
55e658312376 patch 8.2.3696: Vim9: error for invalid assignment when skipping
Bram Moolenaar <Bram@vim.org>
parents: 26302
diff changeset
2338 'vim9script',
55e658312376 patch 8.2.3696: Vim9: error for invalid assignment when skipping
Bram Moolenaar <Bram@vim.org>
parents: 26302
diff changeset
2339 'for i in []',
55e658312376 patch 8.2.3696: Vim9: error for invalid assignment when skipping
Bram Moolenaar <Bram@vim.org>
parents: 26302
diff changeset
2340 " put =''",
55e658312376 patch 8.2.3696: Vim9: error for invalid assignment when skipping
Bram Moolenaar <Bram@vim.org>
parents: 26302
diff changeset
2341 'endfor'])
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2342
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2343 v9.CheckDefFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2344 '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
2345 '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
2346 ], 'E1012:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2347 v9.CheckDefFailure([
23982
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2348 '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
2349 '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
2350 ], 'E1012:', 2)
9fcd71d0db89 patch 8.2.2533: Vim9: cannot use a range with :unlet
Bram Moolenaar <Bram@vim.org>
parents: 23972
diff changeset
2351
23517
36bf9a6fbd4c patch 8.2.2301: Vim9: cannot unlet a dict or list item
Bram Moolenaar <Bram@vim.org>
parents: 23509
diff changeset
2352 # 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
2353 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
2354 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
2355 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
2356
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2357 v9.CheckDefExecFailure([
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2358 '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
2359 '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
2360 ], 'E684:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2361 v9.CheckDefExecFailure([
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2362 '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
2363 '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
2364 ], 'E684:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2365 v9.CheckDefExecFailure([
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2366 '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
2367 '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
2368 ], 'E1012:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2369 v9.CheckDefExecFailure([
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2370 '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
2371 '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
2372 ], 'E716:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2373 v9.CheckDefExecFailure([
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2374 '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
2375 '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
2376 ], 'E716:', 2)
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2377 v9.CheckDefExecFailure([
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2378 '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
2379 '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
2380 ], '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
2381
27764
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
2382 v9.CheckDefExecFailure([
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
2383 'g:dd = {"a": 1, 2: 2}'
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
2384 'unlet g:dd[0z11]',
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
2385 ], 'E1029:', 2)
27766
2a394907825d patch 8.2.4409: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27764
diff changeset
2386 v9.CheckDefExecFailure([
2a394907825d patch 8.2.4409: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27764
diff changeset
2387 'g:str = "a string"'
2a394907825d patch 8.2.4409: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27764
diff changeset
2388 'unlet g:str[0]',
2a394907825d patch 8.2.4409: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27764
diff changeset
2389 ], 'E1148: Cannot index a string', 2)
27764
1662d2d2e27b patch 8.2.4408: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27762
diff changeset
2390
23495
1f85acfb23cd patch 8.2.2290: Vim9: unlet of global variable cannot be compiled
Bram Moolenaar <Bram@vim.org>
parents: 23450
diff changeset
2391 # 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
2392 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
2393 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
2394 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
2395 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
2396 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
2397 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
2398
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2399 v9.CheckScriptFailure([
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2400 'vim9script',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2401 '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
2402 'unlet svar',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2403 ], 'E1081:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2404 v9.CheckScriptFailure([
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2405 'vim9script',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2406 '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
2407 'unlet s:svar',
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2408 ], 'E1268:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2409 v9.CheckScriptFailure([
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2410 'vim9script',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2411 '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
2412 'def Func()',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2413 ' unlet svar',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2414 'enddef',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2415 'defcompile',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2416 ], 'E1081:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2417 v9.CheckScriptFailure([
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2418 'vim9script',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2419 '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
2420 '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
2421 ' 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
2422 '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
2423 '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
2424 ], 'E1081:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2425 v9.CheckScriptFailure([
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
2426 '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
2427 '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
2428 'def Func()',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2429 ' 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
2430 'enddef',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2431 'defcompile',
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2432 ], 'E1081:')
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2433
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2434 v9.CheckScriptFailure([
26624
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2435 'vim9script',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2436 'def Delcount(dict: dict<any>)',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2437 ' unlet dict.count',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2438 'enddef',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2439 'Delcount(v:)',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2440 ], 'E742:')
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2441
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2442 v9.CheckScriptFailure([
26624
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2443 'vim9script',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2444 'def DelChangedtick(dict: dict<any>)',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2445 ' unlet dict.changedtick',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2446 'enddef',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2447 'DelChangedtick(b:)',
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2448 ], 'E795:')
bdf11d8e3df3 patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Bram Moolenaar <Bram@vim.org>
parents: 26372
diff changeset
2449
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2450 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
2451 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
2452 vim9script
26980
8796f1384750 patch 8.2.4019: Vim9: import mechanism is too complicated
Bram Moolenaar <Bram@vim.org>
parents: 26954
diff changeset
2453 import './XunletExport.vim' as exp
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2454 def UnletSvar()
26980
8796f1384750 patch 8.2.4019: Vim9: import mechanism is too complicated
Bram Moolenaar <Bram@vim.org>
parents: 26954
diff changeset
2455 unlet exp.svar
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2456 enddef
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2457 defcompile
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2458 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2459 v9.CheckScriptFailure(lines, 'E1260:', 1)
23523
b0a6e7325169 patch 8.2.2304: Vim9: no test for unletting an imported variable
Bram Moolenaar <Bram@vim.org>
parents: 23517
diff changeset
2460 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
2461
22458
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2462 $ENVVAR = 'foobar'
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2463 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
2464 unlet $ENVVAR
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2465 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
2466 enddef
f5731190bc66 patch 8.2.1777: Vim9: some assignment tests in the wrong file
Bram Moolenaar <Bram@vim.org>
parents: 22435
diff changeset
2467
23679
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2468 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
2469 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
2470 vim9script
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2471 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
2472 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
2473 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2474 v9.CheckScriptFailureList(lines, ['E121:', 'E121:'])
23679
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2475
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2476 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
2477 vim9script
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2478 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
2479 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
2480 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2481 v9.CheckScriptFailure(lines, 'E1154:')
23679
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2482
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2483 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
2484 vim9script
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2485 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
2486 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
2487 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2488 v9.CheckScriptFailure(lines, 'E1154:')
24238
e5cd25f7ffcd patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents: 24154
diff changeset
2489
e5cd25f7ffcd patch 8.2.2660: Vim9: no error for declaration with trailing text
Bram Moolenaar <Bram@vim.org>
parents: 24154
diff changeset
2490 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
2491 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
2492 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2493 v9.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
2494 enddef
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2495
e8c379b20765 patch 8.2.2381: Vim9: divide by zero does not abort expression execution
Bram Moolenaar <Bram@vim.org>
parents: 23662
diff changeset
2496
23537
7f0fc2ab90e3 patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents: 23531
diff changeset
2497 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
2498 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
2499 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
2500 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
2501 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
2502 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
2503 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
2504 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
2505 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
2506 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
2507 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
2508
23549
4156f972efb1 patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23537
diff changeset
2509 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
2510 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
2511 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
2512 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
2513 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
2514
4156f972efb1 patch 8.2.2317: Vim9: command modifier before list unpack doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 23537
diff changeset
2515 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
2516 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
2517 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
2518 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
2519 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
2520 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2521 v9.CheckDefAndScriptSuccess(lines)
23537
7f0fc2ab90e3 patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents: 23531
diff changeset
2522 enddef
7f0fc2ab90e3 patch 8.2.2311: Vim9: cannot assign to variable that shadows command modifier
Bram Moolenaar <Bram@vim.org>
parents: 23531
diff changeset
2523
24956
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2524 def Test_assign_alt_buf_register()
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2525 var lines =<< trim END
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2526 edit 'file_b1'
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2527 var b1 = bufnr()
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2528 edit 'file_b2'
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2529 var b2 = bufnr()
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2530 assert_equal(b1, bufnr('#'))
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2531 @# = b2
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2532 assert_equal(b2, bufnr('#'))
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2533 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2534 v9.CheckDefAndScriptSuccess(lines)
24956
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2535 enddef
d0b6a8d82cef patch 8.2.3015: Vim9: Assigning to @# requires a string
Bram Moolenaar <Bram@vim.org>
parents: 24888
diff changeset
2536
24264
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2537 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
2538 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
2539 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
2540 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
2541 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2542 v9.CheckDefAndScriptSuccess(lines)
24264
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2543
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2544 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
2545 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
2546 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2547 v9.CheckDefAndScriptFailure(lines, 'E704:')
24264
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2548
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2549 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
2550 vim9script
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2551 var Len = (s: string): number => len(s) + 2
24264
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2552 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
2553 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2554 v9.CheckScriptSuccess(lines)
24264
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2555
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2556 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
2557 vim9script
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27569
diff changeset
2558 var len = (s: string): number => len(s) + 1
24264
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2559 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2560 v9.CheckScriptFailure(lines, 'E704:')
24264
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2561 enddef
db5eaad456cc patch 8.2.2673: Vim9: script-local funcref can have lower case name
Bram Moolenaar <Bram@vim.org>
parents: 24238
diff changeset
2562
26630
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2563 def Test_script_funcref_runtime_type_check()
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2564 var lines =<< trim END
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2565 vim9script
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2566 def FuncWithNumberArg(n: number)
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2567 enddef
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2568 def Test()
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2569 var Ref: func(string) = function(FuncWithNumberArg)
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2570 enddef
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2571 defcompile
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2572 END
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2573 # OK at compile time
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2574 v9.CheckScriptSuccess(lines)
26630
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2575
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2576 # Type check fails at runtime
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2577 v9.CheckScriptFailure(lines + ['Test()'], 'E1012: Type mismatch; expected func(string) but got func(number)')
26630
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2578 enddef
57bc1001160b patch 8.2.3844: Vim9: no type error if assigning func(number) to func(string)
Bram Moolenaar <Bram@vim.org>
parents: 26624
diff changeset
2579
24533
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2580 def Test_inc_dec()
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2581 var lines =<< trim END
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2582 var nr = 7
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2583 ++nr
24537
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2584 assert_equal(8, nr)
24533
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2585 --nr
24537
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2586 assert_equal(7, nr)
25020
91f396f149d5 patch 8.2.3047: increment and decrement don't allow for next command
Bram Moolenaar <Bram@vim.org>
parents: 24984
diff changeset
2587 ++nr | ++nr
91f396f149d5 patch 8.2.3047: increment and decrement don't allow for next command
Bram Moolenaar <Bram@vim.org>
parents: 24984
diff changeset
2588 assert_equal(9, nr)
91f396f149d5 patch 8.2.3047: increment and decrement don't allow for next command
Bram Moolenaar <Bram@vim.org>
parents: 24984
diff changeset
2589 ++nr # comment
91f396f149d5 patch 8.2.3047: increment and decrement don't allow for next command
Bram Moolenaar <Bram@vim.org>
parents: 24984
diff changeset
2590 assert_equal(10, nr)
24533
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2591
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2592 var ll = [1, 2]
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2593 --ll[0]
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2594 ++ll[1]
24537
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2595 assert_equal([0, 3], ll)
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2596
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2597 g:count = 1
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2598 ++g:count
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2599 --g:count
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2600 assert_equal(1, g:count)
95bcea9faa52 patch 8.2.2808: Vim9: increment and decrement not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 24533
diff changeset
2601 unlet g:count
24533
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2602 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2603 v9.CheckDefAndScriptSuccess(lines)
25022
39551b6e0112 patch 8.2.3048: strange error for white space after ++ command
Bram Moolenaar <Bram@vim.org>
parents: 25020
diff changeset
2604
39551b6e0112 patch 8.2.3048: strange error for white space after ++ command
Bram Moolenaar <Bram@vim.org>
parents: 25020
diff changeset
2605 lines =<< trim END
39551b6e0112 patch 8.2.3048: strange error for white space after ++ command
Bram Moolenaar <Bram@vim.org>
parents: 25020
diff changeset
2606 var nr = 7
39551b6e0112 patch 8.2.3048: strange error for white space after ++ command
Bram Moolenaar <Bram@vim.org>
parents: 25020
diff changeset
2607 ++ nr
39551b6e0112 patch 8.2.3048: strange error for white space after ++ command
Bram Moolenaar <Bram@vim.org>
parents: 25020
diff changeset
2608 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27406
diff changeset
2609 v9.CheckDefAndScriptFailure(lines, "E1202: No white space allowed after '++': ++ nr")
24533
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2610 enddef
9c404d78d767 patch 8.2.2806: Vim9: using "++nr" as a command might not work
Bram Moolenaar <Bram@vim.org>
parents: 24531
diff changeset
2611
25400
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2612 def Test_abort_after_error()
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2613 # should abort after strpart() fails, not give another type error
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2614 var lines =<< trim END
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2615 vim9script
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2616 var x: string
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2617 x = strpart(1, 2)
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2618 END
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2619 writefile(lines, 'Xtestscript')
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2620 var expected = 'E1174: String required for argument 1'
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2621 assert_fails('so Xtestscript', [expected, expected], 3)
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2622
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2623 delete('Xtestscript')
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2624 enddef
5c7192180b89 patch 8.2.3237: when a builtin function gives an error processing continues
Bram Moolenaar <Bram@vim.org>
parents: 25274
diff changeset
2625
27843
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2626 def Test_using_s_var_in_function()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2627 var lines =<< trim END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2628 vim9script
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2629 var scriptlevel = 123
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2630 def SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2631 echo s:scriptlevel
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2632 enddef
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2633 SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2634 END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2635 v9.CheckScriptFailure(lines, 'E1268:')
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2636
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2637 # OK in legacy script
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2638 lines =<< trim END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2639 let s:scriptlevel = 123
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2640 def s:SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2641 echo s:scriptlevel
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2642 enddef
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2643 call s:SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2644 END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2645 v9.CheckScriptSuccess(lines)
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2646
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2647 lines =<< trim END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2648 vim9script
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2649 var scriptlevel = 123
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2650 def SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2651 s:scriptlevel = 456
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2652 enddef
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2653 SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2654 END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2655 v9.CheckScriptFailure(lines, 'E1268:')
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2656
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2657 # OK in legacy script
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2658 lines =<< trim END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2659 let s:scriptlevel = 123
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2660 def s:SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2661 s:scriptlevel = 456
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2662 enddef
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2663 call s:SomeFunc()
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2664 call assert_equal(456, s:scriptlevel)
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2665 END
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2666 v9.CheckScriptSuccess(lines)
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2667 enddef
532a0c5de1ec patch 8.2.4447: Vim9: can still use s:var in a compiled function
Bram Moolenaar <Bram@vim.org>
parents: 27768
diff changeset
2668
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2669 let g:someVar = 'X'
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2670
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2671 " Test for heredoc with Vim expressions.
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2672 " This messes up highlighting, keep it near the end.
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2673 def Test_heredoc_expr()
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2674 var lines =<< trim CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2675 var s = "local"
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2676 var a1 = "1"
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2677 var a2 = "2"
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2678 var a3 = "3"
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2679 var a4 = ""
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2680 var code =<< trim eval END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2681 var a = {5 + 10}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2682 var b = {min([10, 6])} + {max([4, 6])}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2683 var c = "{s}"
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2684 var d = x{a1}x{a2}x{a3}x{a4}
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2685 END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2686 assert_equal(['var a = 15', 'var b = 6 + 6', 'var c = "local"', 'var d = x1x2x3x'], code)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2687 CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2688 v9.CheckDefAndScriptSuccess(lines)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2689
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2690 lines =<< trim CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2691 var code =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2692 var s = "{$SOME_ENV_VAR}"
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2693 END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2694 assert_equal(['var s = "somemore"'], code)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2695 CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2696 v9.CheckDefAndScriptSuccess(lines)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2697
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2698 lines =<< trim CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2699 var code =<< eval END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2700 var s = "{$SOME_ENV_VAR}"
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2701 END
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2702 assert_equal([' var s = "somemore"'], code)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2703 CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2704 v9.CheckDefAndScriptSuccess(lines)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2705
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2706 lines =<< trim CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2707 var code =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2708 let a = {{abc}}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2709 let b = {g:someVar}
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2710 let c = {{
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2711 END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2712 assert_equal(['let a = {abc}', 'let b = X', 'let c = {'], code)
28560
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2713 CODE
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2714 v9.CheckDefAndScriptSuccess(lines)
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2715
060fc3b69697 patch 8.2.4804: expression in heredoc doesn't work for compiled function
Bram Moolenaar <Bram@vim.org>
parents: 28491
diff changeset
2716 lines =<< trim LINES
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2717 var text =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2718 let b = {
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2719 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2720 LINES
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2721 v9.CheckDefAndScriptFailure(lines, "E1279: Missing '}'")
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2722
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2723 lines =<< trim LINES
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2724 var text =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2725 let b = {abc
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2726 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2727 LINES
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2728 v9.CheckDefAndScriptFailure(lines, "E1279: Missing '}'")
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2729
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2730 lines =<< trim LINES
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2731 var text =<< eval trim END
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2732 let b = {}
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2733 END
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2734 LINES
28718
723c7d940cba patch 8.2.4883: string interpolation only works in heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28560
diff changeset
2735 v9.CheckDefAndScriptFailure(lines, 'E15: Invalid expression: "}"')
28491
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2736 enddef
769599ee9f06 patch 8.2.4770: cannot easily mix expression and heredoc
Bram Moolenaar <Bram@vim.org>
parents: 28345
diff changeset
2737
22351
4c488004edbc patch 8.2.1724: Vim9: assignment tests spread out
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2738 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker