annotate src/testdir/test_vim9_script.vim @ 27768:b081ba78675a v8.2.4410

patch 8.2.4410: Vim9: some code not covered by tests Commit: https://github.com/vim/vim/commit/0c7f2610de94b42ce111c4839ba37505720181d4 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Feb 17 19:44:07 2022 +0000 patch 8.2.4410: Vim9: some code not covered by tests Problem: Vim9: some code not covered by tests. Solution: Add a few more tests. Remove dead code.
author Bram Moolenaar <Bram@vim.org>
date Thu, 17 Feb 2022 20:45:03 +0100
parents fae9567b8024
children f57b8db06f26
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1 " Test various aspects of the Vim9 script language.
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
2
19183
1168c53d1b49 patch 8.2.0150: cannot define python function when using :execute
Bram Moolenaar <Bram@vim.org>
parents: 19181
diff changeset
3 source check.vim
20881
58137dbee8da patch 8.2.0992: Vim9: crash when using :import in the Vim command
Bram Moolenaar <Bram@vim.org>
parents: 20871
diff changeset
4 source term_util.vim
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
5 import './vim9.vim' as v9
27014
b861ae62860d patch 8.2.4036: Vim9: script test file is getting too long
Bram Moolenaar <Bram@vim.org>
parents: 27002
diff changeset
6 source screendump.vim
21979
a98211c3e14e patch 8.2.1539: using invalid script ID causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 21957
diff changeset
7 source shared.vim
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
8
26873
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
9 def Test_vim9script_feature()
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
10 # example from the help, here the feature is always present
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
11 var lines =<< trim END
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
12 " old style comment
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
13 if !has('vim9script')
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
14 " legacy commands would go here
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
15 finish
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
16 endif
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
17 vim9script
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
18 # Vim9 script commands go here
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
19 g:didit = true
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
20 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
21 v9.CheckScriptSuccess(lines)
26873
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
22 assert_equal(true, g:didit)
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
23 unlet g:didit
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
24 enddef
be85735650f7 patch 8.2.3965: Vim9: no easy way to check if Vim9 script is supported
Bram Moolenaar <Bram@vim.org>
parents: 26745
diff changeset
25
21901
1ebcce655dd3 patch 8.2.1500: Vim9: error when using address without a command
Bram Moolenaar <Bram@vim.org>
parents: 21883
diff changeset
26 def Test_range_only()
1ebcce655dd3 patch 8.2.1500: Vim9: error when using address without a command
Bram Moolenaar <Bram@vim.org>
parents: 21883
diff changeset
27 new
1ebcce655dd3 patch 8.2.1500: Vim9: error when using address without a command
Bram Moolenaar <Bram@vim.org>
parents: 21883
diff changeset
28 setline(1, ['blah', 'Blah'])
1ebcce655dd3 patch 8.2.1500: Vim9: error when using address without a command
Bram Moolenaar <Bram@vim.org>
parents: 21883
diff changeset
29 :/Blah/
1ebcce655dd3 patch 8.2.1500: Vim9: error when using address without a command
Bram Moolenaar <Bram@vim.org>
parents: 21883
diff changeset
30 assert_equal(2, getcurpos()[1])
21939
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
31 bwipe!
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
32
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
33 # without range commands use current line
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
34 new
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
35 setline(1, ['one', 'two', 'three'])
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
36 :2
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
37 print
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
38 assert_equal('two', g:Screenline(&lines))
21939
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
39 :3
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
40 list
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
41 assert_equal('three$', g:Screenline(&lines))
23954
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
42
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
43 # missing command does not print the line
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
44 var lines =<< trim END
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
45 vim9script
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
46 :1|
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
47 assert_equal('three$', g:Screenline(&lines))
23954
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
48 :|
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
49 assert_equal('three$', g:Screenline(&lines))
23954
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
50 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
51 v9.CheckScriptSuccess(lines)
23954
9c8a20cfa540 patch 8.2.2519: Vim9: no reason to keep strange Vi behavior
Bram Moolenaar <Bram@vim.org>
parents: 23950
diff changeset
52
21939
8350bdbdbb28 patch 8.2.1519: Vim9: Ex command default range is not set
Bram Moolenaar <Bram@vim.org>
parents: 21937
diff changeset
53 bwipe!
23197
4ba101403fa2 patch 8.2.2144: Vim9: some corner cases not tested
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
54
27768
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
55 lines =<< trim END
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
56 set cpo+=-
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
57 :1,999
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
58 END
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
59 v9.CheckDefExecAndScriptFailure(lines, 'E16:', 2)
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
60 set cpo&vim
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
61
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
62 v9.CheckDefExecAndScriptFailure([":'x"], 'E20:', 1)
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
63
23197
4ba101403fa2 patch 8.2.2144: Vim9: some corner cases not tested
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
64 # won't generate anything
4ba101403fa2 patch 8.2.2144: Vim9: some corner cases not tested
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
65 if false
4ba101403fa2 patch 8.2.2144: Vim9: some corner cases not tested
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
66 :123
4ba101403fa2 patch 8.2.2144: Vim9: some corner cases not tested
Bram Moolenaar <Bram@vim.org>
parents: 23185
diff changeset
67 endif
21901
1ebcce655dd3 patch 8.2.1500: Vim9: error when using address without a command
Bram Moolenaar <Bram@vim.org>
parents: 21883
diff changeset
68 enddef
1ebcce655dd3 patch 8.2.1500: Vim9: error when using address without a command
Bram Moolenaar <Bram@vim.org>
parents: 21883
diff changeset
69
20419
d54dfb5f12db patch 8.2.0764: Vim9: assigning to option not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20401
diff changeset
70 let g:alist = [7]
d54dfb5f12db patch 8.2.0764: Vim9: assigning to option not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 20401
diff changeset
71 let g:astring = 'text'
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
72 let g:anumber = 123
19326
d1810b726592 patch 8.2.0221: no test for Vim9 += and ..=
Bram Moolenaar <Bram@vim.org>
parents: 19320
diff changeset
73
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
74 def Test_delfunction()
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
75 # Check function is defined in script namespace
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
76 v9.CheckScriptSuccess([
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
77 'vim9script',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
78 'func CheckMe()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
79 ' return 123',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
80 'endfunc',
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
81 'func DoTest()',
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
82 ' call assert_equal(123, s:CheckMe())',
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
83 'endfunc',
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
84 'DoTest()',
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
85 ])
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
86
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
87 # Check function in script namespace cannot be deleted
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
88 v9.CheckScriptFailure([
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
89 'vim9script',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
90 'func DeleteMe1()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
91 'endfunc',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
92 'delfunction DeleteMe1',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
93 ], 'E1084:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
94 v9.CheckScriptFailure([
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
95 'vim9script',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
96 'func DeleteMe2()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
97 'endfunc',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
98 'def DoThat()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
99 ' delfunction DeleteMe2',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
100 'enddef',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
101 'DoThat()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
102 ], 'E1084:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
103 v9.CheckScriptFailure([
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
104 'vim9script',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
105 'def DeleteMe3()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
106 'enddef',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
107 'delfunction DeleteMe3',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
108 ], 'E1084:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
109 v9.CheckScriptFailure([
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
110 'vim9script',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
111 'def DeleteMe4()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
112 'enddef',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
113 'def DoThat()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
114 ' delfunction DeleteMe4',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
115 'enddef',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
116 'DoThat()',
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
117 ], 'E1084:')
21479
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
118
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
119 # Check that global :def function can be replaced and deleted
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
120 var lines =<< trim END
21479
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
121 vim9script
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
122 def g:Global(): string
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
123 return "yes"
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
124 enddef
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
125 assert_equal("yes", g:Global())
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
126 def! g:Global(): string
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
127 return "no"
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
128 enddef
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
129 assert_equal("no", g:Global())
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
130 delfunc g:Global
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
131 assert_false(exists('*g:Global'))
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
132 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
133 v9.CheckScriptSuccess(lines)
21479
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
134
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
135 # Check that global function can be replaced by a :def function and deleted
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
136 lines =<< trim END
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
137 vim9script
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
138 func g:Global()
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
139 return "yes"
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
140 endfunc
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
141 assert_equal("yes", g:Global())
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
142 def! g:Global(): string
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
143 return "no"
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
144 enddef
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
145 assert_equal("no", g:Global())
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
146 delfunc g:Global
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
147 assert_false(exists('*g:Global'))
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
148 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
149 v9.CheckScriptSuccess(lines)
21479
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
150
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
151 # Check that global :def function can be replaced by a function and deleted
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
152 lines =<< trim END
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
153 vim9script
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
154 def g:Global(): string
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
155 return "yes"
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
156 enddef
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
157 assert_equal("yes", g:Global())
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
158 func! g:Global()
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
159 return "no"
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
160 endfunc
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
161 assert_equal("no", g:Global())
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
162 delfunc g:Global
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
163 assert_false(exists('*g:Global'))
90d859a402cc patch 8.2.1290: Vim9: cannot replace a global function
Bram Moolenaar <Bram@vim.org>
parents: 21473
diff changeset
164 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
165 v9.CheckScriptSuccess(lines)
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
166 enddef
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
167
22264
e0a4d029cb87 patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents: 22250
diff changeset
168 def Test_wrong_type()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
169 v9.CheckDefFailure(['var name: list<nothing>'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
170 v9.CheckDefFailure(['var name: list<list<nothing>>'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
171 v9.CheckDefFailure(['var name: dict<nothing>'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
172 v9.CheckDefFailure(['var name: dict<dict<nothing>>'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
173
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
174 v9.CheckDefFailure(['var name: dict<number'], 'E1009:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
175 v9.CheckDefFailure(['var name: dict<list<number>'], 'E1009:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
176
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
177 v9.CheckDefFailure(['var name: ally'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
178 v9.CheckDefFailure(['var name: bram'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
179 v9.CheckDefFailure(['var name: cathy'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
180 v9.CheckDefFailure(['var name: dom'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
181 v9.CheckDefFailure(['var name: freddy'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
182 v9.CheckDefFailure(['var name: john'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
183 v9.CheckDefFailure(['var name: larry'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
184 v9.CheckDefFailure(['var name: ned'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
185 v9.CheckDefFailure(['var name: pam'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
186 v9.CheckDefFailure(['var name: sam'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
187 v9.CheckDefFailure(['var name: vim'], 'E1010:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
188
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
189 v9.CheckDefFailure(['var Ref: number', 'Ref()'], 'E1085:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
190 v9.CheckDefFailure(['var Ref: string', 'var res = Ref()'], 'E1085:')
22264
e0a4d029cb87 patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents: 22250
diff changeset
191 enddef
e0a4d029cb87 patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents: 22250
diff changeset
192
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
193 def Test_script_namespace()
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
194 # defining a function or variable with s: is not allowed
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
195 var lines =<< trim END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
196 vim9script
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
197 def s:Function()
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
198 enddef
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
199 END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
200 v9.CheckScriptFailure(lines, 'E1268:')
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
201
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
202 for decl in ['var', 'const', 'final']
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
203 lines =<< trim END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
204 vim9script
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
205 var s:var = 'var'
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
206 END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
207 v9.CheckScriptFailure([
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
208 'vim9script',
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
209 decl .. ' s:var = "var"',
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
210 ], 'E1268:')
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
211 endfor
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
212
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
213 # Calling a function or using a variable with s: is not allowed at script
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
214 # level
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
215 lines =<< trim END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
216 vim9script
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
217 def Function()
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
218 enddef
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
219 s:Function()
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
220 END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
221 v9.CheckScriptFailure(lines, 'E1268:')
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
222 lines =<< trim END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
223 vim9script
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
224 def Function()
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
225 enddef
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
226 call s:Function()
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
227 END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
228 v9.CheckScriptFailure(lines, 'E1268:')
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
229 lines =<< trim END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
230 vim9script
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
231 var var = 'var'
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
232 echo s:var
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
233 END
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
234 v9.CheckScriptFailure(lines, 'E1268:')
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
235 enddef
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
236
22529
35ef9b0a81a3 patch 8.2.1813: Vim9: can assign wrong type to script dict
Bram Moolenaar <Bram@vim.org>
parents: 22500
diff changeset
237 def Test_script_wrong_type()
35ef9b0a81a3 patch 8.2.1813: Vim9: can assign wrong type to script dict
Bram Moolenaar <Bram@vim.org>
parents: 22500
diff changeset
238 var lines =<< trim END
35ef9b0a81a3 patch 8.2.1813: Vim9: can assign wrong type to script dict
Bram Moolenaar <Bram@vim.org>
parents: 22500
diff changeset
239 vim9script
27669
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
240 var dict: dict<string>
5c4ab8d4472c patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Bram Moolenaar <Bram@vim.org>
parents: 27665
diff changeset
241 dict['a'] = ['x']
22529
35ef9b0a81a3 patch 8.2.1813: Vim9: can assign wrong type to script dict
Bram Moolenaar <Bram@vim.org>
parents: 22500
diff changeset
242 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
243 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got list<string>', 3)
22529
35ef9b0a81a3 patch 8.2.1813: Vim9: can assign wrong type to script dict
Bram Moolenaar <Bram@vim.org>
parents: 22500
diff changeset
244 enddef
35ef9b0a81a3 patch 8.2.1813: Vim9: can assign wrong type to script dict
Bram Moolenaar <Bram@vim.org>
parents: 22500
diff changeset
245
22264
e0a4d029cb87 patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents: 22250
diff changeset
246 def Test_const()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
247 v9.CheckDefFailure(['final name = 234', 'name = 99'], 'E1018:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
248 v9.CheckDefFailure(['final one = 234', 'var one = 99'], 'E1017:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
249 v9.CheckDefFailure(['final list = [1, 2]', 'var list = [3, 4]'], 'E1017:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
250 v9.CheckDefFailure(['final two'], 'E1125:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
251 v9.CheckDefFailure(['final &option'], 'E996:')
22266
23f5750146d9 patch 8.2.1682: Vim9: const works in an unexpected way
Bram Moolenaar <Bram@vim.org>
parents: 22264
diff changeset
252
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
253 var lines =<< trim END
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22387
diff changeset
254 final list = [1, 2, 3]
22266
23f5750146d9 patch 8.2.1682: Vim9: const works in an unexpected way
Bram Moolenaar <Bram@vim.org>
parents: 22264
diff changeset
255 list[0] = 4
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
256 list->assert_equal([4, 2, 3])
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22387
diff changeset
257 const other = [5, 6, 7]
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
258 other->assert_equal([5, 6, 7])
22274
1634ca41e4d3 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 22272
diff changeset
259
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
260 var varlist = [7, 8]
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22387
diff changeset
261 const constlist = [1, varlist, 3]
22274
1634ca41e4d3 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 22272
diff changeset
262 varlist[0] = 77
25489
911fdca7f736 patch 8.2.3281: Vim9: TODO items in tests can be taken care of
Bram Moolenaar <Bram@vim.org>
parents: 25469
diff changeset
263 constlist[1][1] = 88
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
264 var cl = constlist[1]
22274
1634ca41e4d3 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 22272
diff changeset
265 cl[1] = 88
1634ca41e4d3 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 22272
diff changeset
266 constlist->assert_equal([1, [77, 88], 3])
1634ca41e4d3 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 22272
diff changeset
267
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
268 var vardict = {five: 5, six: 6}
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
269 const constdict = {one: 1, two: vardict, three: 3}
22274
1634ca41e4d3 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 22272
diff changeset
270 vardict['five'] = 55
25489
911fdca7f736 patch 8.2.3281: Vim9: TODO items in tests can be taken care of
Bram Moolenaar <Bram@vim.org>
parents: 25469
diff changeset
271 constdict['two']['six'] = 66
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
272 var cd = constdict['two']
22274
1634ca41e4d3 patch 8.2.1686: Vim9: "const!" not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 22272
diff changeset
273 cd['six'] = 66
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
274 constdict->assert_equal({one: 1, two: {five: 55, six: 66}, three: 3})
22266
23f5750146d9 patch 8.2.1682: Vim9: const works in an unexpected way
Bram Moolenaar <Bram@vim.org>
parents: 22264
diff changeset
275 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
276 v9.CheckDefAndScriptSuccess(lines)
22264
e0a4d029cb87 patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents: 22250
diff changeset
277 enddef
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
278
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
279 def Test_const_bang()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
280 var lines =<< trim END
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22387
diff changeset
281 const var = 234
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
282 var = 99
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
283 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
284 v9.CheckDefExecFailure(lines, 'E1018:', 2)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
285 v9.CheckScriptFailure(['vim9script'] + lines, 'E46:', 3)
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
286
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
287 lines =<< trim END
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22387
diff changeset
288 const ll = [2, 3, 4]
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
289 ll[0] = 99
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
290 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
291 v9.CheckDefExecFailure(lines, 'E1119:', 2)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
292 v9.CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
293
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
294 lines =<< trim END
22391
a9fb7efa31d6 patch 8.2.1744: Vim9: using ":const!" is weird
Bram Moolenaar <Bram@vim.org>
parents: 22387
diff changeset
295 const ll = [2, 3, 4]
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
296 ll[3] = 99
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
297 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
298 v9.CheckDefExecFailure(lines, 'E1118:', 2)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
299 v9.CheckScriptFailure(['vim9script'] + lines, 'E684:', 3)
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
300
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
301 lines =<< trim END
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
302 const dd = {one: 1, two: 2}
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
303 dd["one"] = 99
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
304 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
305 v9.CheckDefExecFailure(lines, 'E1121:', 2)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
306 v9.CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
307
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
308 lines =<< trim END
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
309 const dd = {one: 1, two: 2}
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
310 dd["three"] = 99
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
311 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
312 v9.CheckDefExecFailure(lines, 'E1120:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
313 v9.CheckScriptFailure(['vim9script'] + lines, 'E741:', 3)
22272
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
314 enddef
eb1f5f618c75 patch 8.2.1685: Vim9: cannot declare a constant value
Bram Moolenaar <Bram@vim.org>
parents: 22266
diff changeset
315
20982
bb49b5090a9c patch 8.2.1042: Vim9: cannot put an operator on the next line
Bram Moolenaar <Bram@vim.org>
parents: 20953
diff changeset
316 def Test_range_no_colon()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
317 v9.CheckDefFailure(['%s/a/b/'], 'E1050:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
318 v9.CheckDefFailure(['+ s/a/b/'], 'E1050:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
319 v9.CheckDefFailure(['- s/a/b/'], 'E1050:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
320 v9.CheckDefFailure(['. s/a/b/'], 'E1050:')
20982
bb49b5090a9c patch 8.2.1042: Vim9: cannot put an operator on the next line
Bram Moolenaar <Bram@vim.org>
parents: 20953
diff changeset
321 enddef
bb49b5090a9c patch 8.2.1042: Vim9: cannot put an operator on the next line
Bram Moolenaar <Bram@vim.org>
parents: 20953
diff changeset
322
bb49b5090a9c patch 8.2.1042: Vim9: cannot put an operator on the next line
Bram Moolenaar <Bram@vim.org>
parents: 20953
diff changeset
323
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
324 def Test_block()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
325 var outer = 1
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
326 {
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
327 var inner = 2
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
328 assert_equal(1, outer)
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
329 assert_equal(2, inner)
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
330 }
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
331 assert_equal(1, outer)
24027
8298c0798040 patch 8.2.2555: Vim9: missing test for 8.2.2553
Bram Moolenaar <Bram@vim.org>
parents: 24025
diff changeset
332
8298c0798040 patch 8.2.2555: Vim9: missing test for 8.2.2553
Bram Moolenaar <Bram@vim.org>
parents: 24025
diff changeset
333 {|echo 'yes'|}
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
334 enddef
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
335
22264
e0a4d029cb87 patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents: 22250
diff changeset
336 def Test_block_failure()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
337 v9.CheckDefFailure(['{', 'var inner = 1', '}', 'echo inner'], 'E1001:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
338 v9.CheckDefFailure(['}'], 'E1025:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
339 v9.CheckDefFailure(['{', 'echo 1'], 'E1026:')
22264
e0a4d029cb87 patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents: 22250
diff changeset
340 enddef
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
341
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
342 def Test_block_local_vars()
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
343 var lines =<< trim END
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
344 vim9script
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
345 v:testing = 1
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
346 if true
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
347 var text = ['hello']
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
348 def SayHello(): list<string>
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
349 return text
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
350 enddef
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
351 def SetText(v: string)
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
352 text = [v]
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
353 enddef
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
354 endif
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
355
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
356 if true
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
357 var text = ['again']
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
358 def SayAgain(): list<string>
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
359 return text
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
360 enddef
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
361 endif
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
362
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
363 # test that the "text" variables are not cleaned up
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
364 test_garbagecollect_now()
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
365
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
366 defcompile
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
367
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
368 assert_equal(['hello'], SayHello())
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
369 assert_equal(['again'], SayAgain())
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
370
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
371 SetText('foobar')
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
372 assert_equal(['foobar'], SayHello())
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
373
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
374 call writefile(['ok'], 'Xdidit')
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
375 qall!
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
376 END
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
377
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
378 # need to execute this with a separate Vim instance to avoid the current
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
379 # context gets garbage collected.
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
380 writefile(lines, 'Xscript')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
381 g:RunVim([], [], '-S Xscript')
22602
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
382 assert_equal(['ok'], readfile('Xdidit'))
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
383
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
384 delete('Xscript')
2c77ec32deeb patch 8.2.1849: Vim9: garbage collection frees block-local variables
Bram Moolenaar <Bram@vim.org>
parents: 22596
diff changeset
385 delete('Xdidit')
22596
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
386 enddef
107eae953b87 patch 8.2.1846: Vim9: block variables are not found in compiled function
Bram Moolenaar <Bram@vim.org>
parents: 22555
diff changeset
387
22643
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
388 def Test_block_local_vars_with_func()
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
389 var lines =<< trim END
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
390 vim9script
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
391 if true
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
392 var foo = 'foo'
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
393 if true
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
394 var bar = 'bar'
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
395 def Func(): list<string>
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
396 return [foo, bar]
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
397 enddef
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
398 endif
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
399 endif
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
400 # function is compiled here, after blocks have finished, can still access
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
401 # "foo" and "bar"
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
402 assert_equal(['foo', 'bar'], Func())
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
403 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
404 v9.CheckScriptSuccess(lines)
22643
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
405 enddef
71b57779177d patch 8.2.1870: Vim9: no need to keep all script variables
Bram Moolenaar <Bram@vim.org>
parents: 22621
diff changeset
406
25469
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
407 " legacy func for command that's defined later
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
408 func s:InvokeSomeCommand()
25469
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
409 SomeCommand
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
410 endfunc
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
411
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
412 def Test_autocommand_block()
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
413 com SomeCommand {
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
414 g:someVar = 'some'
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
415 }
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
416 InvokeSomeCommand()
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
417 assert_equal('some', g:someVar)
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
418
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
419 delcommand SomeCommand
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
420 unlet g:someVar
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
421 enddef
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
422
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
423 def Test_command_block()
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
424 au BufNew *.xml {
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
425 g:otherVar = 'other'
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
426 }
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
427 split other.xml
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
428 assert_equal('other', g:otherVar)
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
429
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
430 bwipe!
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
431 au! BufNew *.xml
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
432 unlet g:otherVar
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
433 enddef
dcd45fe7fe2e patch 8.2.3271: Vim9: cannot use :command or :au with block in :def function
Bram Moolenaar <Bram@vim.org>
parents: 25425
diff changeset
434
21375
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
435 func g:NoSuchFunc()
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
436 echo 'none'
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
437 endfunc
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
438
23576
4cd173b3d572 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Bram Moolenaar <Bram@vim.org>
parents: 23571
diff changeset
439 def Test_try_catch_throw()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
440 var l = []
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
441 try # comment
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
442 add(l, '1')
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
443 throw 'wrong'
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
444 add(l, '2')
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
445 catch # comment
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
446 add(l, v:exception)
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
447 finally # comment
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
448 add(l, '3')
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
449 endtry # comment
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
450 assert_equal(['1', 'wrong', '3'], l)
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
451
21371
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
452 l = []
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
453 try
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
454 try
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
455 add(l, '1')
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
456 throw 'wrong'
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
457 add(l, '2')
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
458 catch /right/
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
459 add(l, v:exception)
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
460 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
461 catch /wrong/
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
462 add(l, 'caught')
22395
03249b8976a9 patch 8.2.1746: Vim9: cannot use "fina" for "finally"
Bram Moolenaar <Bram@vim.org>
parents: 22391
diff changeset
463 fina
21371
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
464 add(l, 'finally')
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
465 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
466 assert_equal(['1', 'caught', 'finally'], l)
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
467
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
468 var n: number
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
469 try
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
470 n = l[3]
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
471 catch /E684:/
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
472 n = 99
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
473 endtry
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
474 assert_equal(99, n)
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
475
23440
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
476 var done = 'no'
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
477 if 0
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
478 try | catch | endtry
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
479 else
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
480 done = 'yes'
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
481 endif
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
482 assert_equal('yes', done)
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
483
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
484 done = 'no'
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
485 if 1
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
486 done = 'yes'
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
487 else
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
488 try | catch | endtry
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
489 done = 'never'
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
490 endif
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
491 assert_equal('yes', done)
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
492
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
493 if 1
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
494 else
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
495 try | catch /pat/ | endtry
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
496 try | catch /pat/
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
497 endtry
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
498 try
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
499 catch /pat/ | endtry
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
500 try
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
501 catch /pat/
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
502 endtry
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
503 endif
b0587f7ec422 patch 8.2.2263: Vim9: compilation error with try-catch in skipped block
Bram Moolenaar <Bram@vim.org>
parents: 23428
diff changeset
504
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
505 try
21833
e3f9528bddda patch 8.2.1466: Vim9: cannot index or slice a variable with type "any"
Bram Moolenaar <Bram@vim.org>
parents: 21831
diff changeset
506 # string slice returns a string, not a number
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
507 n = g:astring[3]
22284
6b385c2b9ff5 patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Bram Moolenaar <Bram@vim.org>
parents: 22274
diff changeset
508 catch /E1012:/
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
509 n = 77
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
510 endtry
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
511 assert_equal(77, n)
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
512
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
513 try
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
514 n = l[g:astring]
22284
6b385c2b9ff5 patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Bram Moolenaar <Bram@vim.org>
parents: 22274
diff changeset
515 catch /E1012:/
21831
d8422de73113 patch 8.2.1465: Vim9: subscript not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 21821
diff changeset
516 n = 88
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
517 endtry
21831
d8422de73113 patch 8.2.1465: Vim9: subscript not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 21821
diff changeset
518 assert_equal(88, n)
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
519
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
520 try
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
521 n = s:does_not_exist
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
522 catch /E121:/
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
523 n = 111
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
524 endtry
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
525 assert_equal(111, n)
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
526
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
527 try
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
528 n = g:does_not_exist
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
529 catch /E121:/
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
530 n = 121
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
531 endtry
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
532 assert_equal(121, n)
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
533
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
534 var d = {one: 1}
21359
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
535 try
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
536 n = d[g:astring]
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
537 catch /E716:/
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
538 n = 222
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
539 endtry
e3711ce8133b patch 8.2.1230: Vim9: list index error not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21353
diff changeset
540 assert_equal(222, n)
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
541
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
542 try
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
543 n = -g:astring
25634
27cb2e79ccde patch 8.2.3353: Vim9: type of argument for negate not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents: 25551
diff changeset
544 catch /E1012:/
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
545 n = 233
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
546 endtry
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
547 assert_equal(233, n)
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
548
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
549 try
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
550 n = +g:astring
25634
27cb2e79ccde patch 8.2.3353: Vim9: type of argument for negate not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents: 25551
diff changeset
551 catch /E1012:/
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
552 n = 244
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
553 endtry
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
554 assert_equal(244, n)
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
555
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
556 try
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
557 n = +g:alist
25634
27cb2e79ccde patch 8.2.3353: Vim9: type of argument for negate not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents: 25551
diff changeset
558 catch /E1012:/
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
559 n = 255
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
560 endtry
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
561 assert_equal(255, n)
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
562
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
563 var nd: dict<any>
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
564 try
23827
7e0d8f1cae7d patch 8.2.2455: Vim9: key type for literal dict and indexing is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 23790
diff changeset
565 nd = {[g:alist]: 1}
7e0d8f1cae7d patch 8.2.2455: Vim9: key type for literal dict and indexing is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 23790
diff changeset
566 catch /E1105:/
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
567 n = 266
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
568 endtry
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
569 assert_equal(266, n)
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
570
26372
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26238
diff changeset
571 l = [1, 2, 3]
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
572 try
26372
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26238
diff changeset
573 [n] = l
21365
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
574 catch /E1093:/
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
575 n = 277
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
576 endtry
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
577 assert_equal(277, n)
fca850f4d603 patch 8.2.1233: Vim9: various errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21359
diff changeset
578
21371
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
579 try
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
580 &ts = g:astring
22284
6b385c2b9ff5 patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Bram Moolenaar <Bram@vim.org>
parents: 22274
diff changeset
581 catch /E1012:/
21371
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
582 n = 288
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
583 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
584 assert_equal(288, n)
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
585
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
586 try
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
587 &backspace = 'asdf'
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
588 catch /E474:/
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
589 n = 299
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
590 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
591 assert_equal(299, n)
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
592
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
593 l = [1]
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
594 try
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
595 l[3] = 3
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
596 catch /E684:/
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
597 n = 300
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
598 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
599 assert_equal(300, n)
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
600
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
601 try
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
602 unlet g:does_not_exist
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
603 catch /E108:/
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
604 n = 322
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
605 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
606 assert_equal(322, n)
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
607
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
608 try
22936
00b0275ffe7f patch 8.2.2015: Vim9: literal dict #{} is not like any other language
Bram Moolenaar <Bram@vim.org>
parents: 22810
diff changeset
609 d = {text: 1, [g:astring]: 2}
21371
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
610 catch /E721:/
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
611 n = 333
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
612 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
613 assert_equal(333, n)
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
614
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
615 try
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
616 l = g:DeletedFunc()
21371
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
617 catch /E933:/
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
618 n = 344
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
619 endtry
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
620 assert_equal(344, n)
21375
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
621
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
622 try
25368
1ffa8eb30353 patch 8.2.3221: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents: 25358
diff changeset
623 echo range(1, 2, 0)
1ffa8eb30353 patch 8.2.3221: Vim9: argument types are not checked at compile time
Bram Moolenaar <Bram@vim.org>
parents: 25358
diff changeset
624 catch /E726:/
21375
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
625 n = 355
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
626 endtry
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
627 assert_equal(355, n)
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
628
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
629 var P = function('g:NoSuchFunc')
21375
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
630 delfunc g:NoSuchFunc
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
631 try
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
632 echo P()
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
633 catch /E117:/
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
634 n = 366
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
635 endtry
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
636 assert_equal(366, n)
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
637
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
638 try
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
639 echo g:NoSuchFunc()
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
640 catch /E117:/
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
641 n = 377
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
642 endtry
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
643 assert_equal(377, n)
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
644
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
645 try
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
646 echo g:alist + 4
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
647 catch /E745:/
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
648 n = 388
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
649 endtry
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
650 assert_equal(388, n)
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
651
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
652 try
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
653 echo 4 + g:alist
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
654 catch /E745:/
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
655 n = 399
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
656 endtry
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
657 assert_equal(399, n)
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
658
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
659 try
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
660 echo g:alist.member
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
661 catch /E715:/
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
662 n = 400
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
663 endtry
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
664 assert_equal(400, n)
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
665
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
666 try
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
667 echo d.member
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
668 catch /E716:/
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
669 n = 411
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
670 endtry
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
671 assert_equal(411, n)
23921
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
672
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
673 var counter = 0
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
674 for i in range(4)
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
675 try
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
676 eval [][0]
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
677 catch
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
678 endtry
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
679 counter += 1
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
680 endfor
a834f9c082e3 patch 8.2.2503: Vim9: a caught error may leave something on the stack
Bram Moolenaar <Bram@vim.org>
parents: 23886
diff changeset
681 assert_equal(4, counter)
23994
3daeb2060f25 patch 8.2.2539: Vim9: return from finally block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 23980
diff changeset
682
25304
d39c12f97298 patch 8.2.3189: Vim9: error when using "try|"
Bram Moolenaar <Bram@vim.org>
parents: 25298
diff changeset
683 # no requirement for spaces before |
d39c12f97298 patch 8.2.3189: Vim9: error when using "try|"
Bram Moolenaar <Bram@vim.org>
parents: 25298
diff changeset
684 try|echo 0|catch|endtry
d39c12f97298 patch 8.2.3189: Vim9: error when using "try|"
Bram Moolenaar <Bram@vim.org>
parents: 25298
diff changeset
685
26658
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
686 # return in try with finally
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
687 def ReturnInTry(): number
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
688 var ret = 4
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
689 try
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
690 return ret
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
691 catch /this/
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
692 return -1
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
693 catch /that/
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
694 return -1
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
695 finally
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
696 # changing ret has no effect
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
697 ret = 7
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
698 endtry
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
699 return -2
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
700 enddef
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
701 assert_equal(4, ReturnInTry())
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
702
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
703 # return in catch with finally
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
704 def ReturnInCatch(): number
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
705 var ret = 5
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
706 try
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
707 throw 'getout'
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
708 return -1
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
709 catch /getout/
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
710 # ret is evaluated here
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
711 return ret
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
712 finally
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
713 # changing ret later has no effect
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
714 ret = -3
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
715 endtry
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
716 return -2
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
717 enddef
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
718 assert_equal(5, ReturnInCatch())
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
719
23994
3daeb2060f25 patch 8.2.2539: Vim9: return from finally block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 23980
diff changeset
720 # return in finally after empty catch
3daeb2060f25 patch 8.2.2539: Vim9: return from finally block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 23980
diff changeset
721 def ReturnInFinally(): number
3daeb2060f25 patch 8.2.2539: Vim9: return from finally block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 23980
diff changeset
722 try
3daeb2060f25 patch 8.2.2539: Vim9: return from finally block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 23980
diff changeset
723 finally
26658
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
724 return 6
23994
3daeb2060f25 patch 8.2.2539: Vim9: return from finally block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 23980
diff changeset
725 endtry
3daeb2060f25 patch 8.2.2539: Vim9: return from finally block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 23980
diff changeset
726 enddef
26658
ed73553992bf patch 8.2.3858: Vim9: not enough tests
Bram Moolenaar <Bram@vim.org>
parents: 26650
diff changeset
727 assert_equal(6, ReturnInFinally())
24934
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
728
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
729 var lines =<< trim END
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
730 vim9script
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
731 try
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
732 acos('0.5')
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
733 ->setline(1)
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
734 catch
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
735 g:caught = v:exception
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
736 endtry
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
737 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
738 v9.CheckScriptSuccess(lines)
25384
e8e2c4d33b9b patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents: 25368
diff changeset
739 assert_match('E1219: Float or Number required for argument 1', g:caught)
24934
75bd12f3bfeb patch 8.2.3004: Vim9: error for missing colon given while skipping
Bram Moolenaar <Bram@vim.org>
parents: 24786
diff changeset
740 unlet g:caught
25124
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
741
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
742 # missing catch and/or finally
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
743 lines =<< trim END
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
744 vim9script
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
745 try
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
746 echo 'something'
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
747 endtry
075790758d11 patch 8.2.3099: Vim9: missing catch/finally not reported at script level
Bram Moolenaar <Bram@vim.org>
parents: 25082
diff changeset
748 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
749 v9.CheckScriptFailure(lines, 'E1032:')
25537
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
750
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
751 # skipping try-finally-endtry when try-finally-endtry is used in another block
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
752 lines =<< trim END
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
753 if v:true
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
754 try
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
755 finally
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
756 endtry
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
757 else
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
758 try
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
759 finally
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
760 endtry
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
761 endif
e0d6268c153a patch 8.2.3305: Vim9: :finally in skipped block not handled correctly
Bram Moolenaar <Bram@vim.org>
parents: 25489
diff changeset
762 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
763 v9.CheckDefAndScriptSuccess(lines)
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
764 enddef
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
765
27084
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
766 def Test_try_ends_in_return()
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
767 var lines =<< trim END
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
768 vim9script
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
769 def Foo(): string
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
770 try
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
771 return 'foo'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
772 catch
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
773 return 'caught'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
774 endtry
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
775 enddef
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
776 assert_equal('foo', Foo())
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
777 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
778 v9.CheckScriptSuccess(lines)
27084
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
779
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
780 lines =<< trim END
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
781 vim9script
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
782 def Foo(): string
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
783 try
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
784 return 'foo'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
785 catch
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
786 return 'caught'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
787 endtry
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
788 echo 'notreached'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
789 enddef
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
790 assert_equal('foo', Foo())
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
791 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
792 v9.CheckScriptFailure(lines, 'E1095:')
27084
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
793
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
794 lines =<< trim END
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
795 vim9script
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
796 def Foo(): string
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
797 try
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
798 return 'foo'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
799 catch /x/
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
800 return 'caught'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
801 endtry
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
802 enddef
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
803 assert_equal('foo', Foo())
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
804 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
805 v9.CheckScriptFailure(lines, 'E1027:')
27084
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
806
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
807 lines =<< trim END
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
808 vim9script
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
809 def Foo(): string
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
810 try
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
811 echo 'foo'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
812 catch
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
813 echo 'caught'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
814 finally
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
815 return 'done'
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
816 endtry
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
817 enddef
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
818 assert_equal('done', Foo())
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
819 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
820 v9.CheckScriptSuccess(lines)
27084
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
821
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
822 enddef
6fc63c6a7ee7 patch 8.2.4071: Vim9: no detection of return in try/endtry
Bram Moolenaar <Bram@vim.org>
parents: 27057
diff changeset
823
25078
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
824 def Test_try_in_catch()
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
825 var lines =<< trim END
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
826 vim9script
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
827 var seq = []
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
828 def DoIt()
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
829 try
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
830 seq->add('throw 1')
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
831 eval [][0]
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
832 seq->add('notreached')
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
833 catch
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
834 seq->add('catch')
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
835 try
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
836 seq->add('throw 2')
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
837 eval [][0]
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
838 seq->add('notreached')
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
839 catch /nothing/
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
840 seq->add('notreached')
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
841 endtry
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
842 seq->add('done')
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
843 endtry
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
844 enddef
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
845 DoIt()
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
846 assert_equal(['throw 1', 'catch', 'throw 2', 'done'], seq)
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
847 END
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
848 enddef
eac6e5a94e9d patch 8.2.3076: Vim9: using try in catch block causes a hang
Bram Moolenaar <Bram@vim.org>
parents: 25057
diff changeset
849
25080
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
850 def Test_error_in_catch()
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
851 var lines =<< trim END
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
852 try
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
853 eval [][0]
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
854 catch /E684:/
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
855 eval [][0]
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
856 endtry
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
857 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
858 v9.CheckDefExecFailure(lines, 'E684:', 4)
25080
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
859 enddef
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
860
24122
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
861 " :while at the very start of a function that :continue jumps to
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
862 def s:TryContinueFunc()
24122
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
863 while g:Count < 2
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
864 g:sequence ..= 't'
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
865 try
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
866 echoerr 'Test'
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
867 catch
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
868 g:Count += 1
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
869 g:sequence ..= 'c'
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
870 continue
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
871 endtry
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
872 g:sequence ..= 'e'
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
873 g:Count += 1
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
874 endwhile
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
875 enddef
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
876
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
877 def Test_continue_in_try_in_while()
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
878 g:Count = 0
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
879 g:sequence = ''
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
880 TryContinueFunc()
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
881 assert_equal('tctc', g:sequence)
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
882 unlet g:Count
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
883 unlet g:sequence
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
884 enddef
e8b21a3bb0d5 patch 8.2.2602: Vim9: continue doesn't work if :while is very first command
Bram Moolenaar <Bram@vim.org>
parents: 24114
diff changeset
885
24002
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
886 def Test_nocatch_return_in_try()
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
887 # return in try block returns normally
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
888 def ReturnInTry(): string
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
889 try
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
890 return '"some message"'
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
891 catch
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
892 endtry
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
893 return 'not reached'
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
894 enddef
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
895 exe 'echoerr ' .. ReturnInTry()
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
896 enddef
5dbed4837ea3 patch 8.2.2543: Vim9: a return inside try/catch does not restore properly
Bram Moolenaar <Bram@vim.org>
parents: 23994
diff changeset
897
23656
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
898 def Test_cnext_works_in_catch()
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
899 var lines =<< trim END
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
900 vim9script
25202
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
901 au BufEnter * eval 1 + 2
23656
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
902 writefile(['text'], 'Xfile1')
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
903 writefile(['text'], 'Xfile2')
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
904 var items = [
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
905 {lnum: 1, filename: 'Xfile1', valid: true},
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
906 {lnum: 1, filename: 'Xfile2', valid: true}
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
907 ]
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
908 setqflist([], ' ', {items: items})
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
909 cwindow
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
910
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
911 def CnextOrCfirst()
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
912 # if cnext fails, cfirst is used
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
913 try
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
914 cnext
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
915 catch
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
916 cfirst
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
917 endtry
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
918 enddef
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
919
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
920 CnextOrCfirst()
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
921 CnextOrCfirst()
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
922 writefile([getqflist({idx: 0}).idx], 'Xresult')
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
923 qall
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
924 END
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
925 writefile(lines, 'XCatchCnext')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
926 g:RunVim([], [], '--clean -S XCatchCnext')
23656
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
927 assert_equal(['1'], readfile('Xresult'))
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
928
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
929 delete('Xfile1')
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
930 delete('Xfile2')
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
931 delete('XCatchCnext')
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
932 delete('Xresult')
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
933 enddef
c6f7df86cd9d patch 8.2.2370: Vim9: command fails in catch block
Bram Moolenaar <Bram@vim.org>
parents: 23618
diff changeset
934
23576
4cd173b3d572 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Bram Moolenaar <Bram@vim.org>
parents: 23571
diff changeset
935 def Test_throw_skipped()
4cd173b3d572 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Bram Moolenaar <Bram@vim.org>
parents: 23571
diff changeset
936 if 0
4cd173b3d572 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Bram Moolenaar <Bram@vim.org>
parents: 23571
diff changeset
937 throw dontgethere
4cd173b3d572 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Bram Moolenaar <Bram@vim.org>
parents: 23571
diff changeset
938 endif
4cd173b3d572 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Bram Moolenaar <Bram@vim.org>
parents: 23571
diff changeset
939 enddef
4cd173b3d572 patch 8.2.2330: Vim9: crash when using :trow in a not executed block
Bram Moolenaar <Bram@vim.org>
parents: 23571
diff changeset
940
23618
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
941 def Test_nocatch_throw_silenced()
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
942 var lines =<< trim END
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
943 vim9script
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
944 def Func()
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
945 throw 'error'
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
946 enddef
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
947 silent! Func()
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
948 END
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
949 writefile(lines, 'XthrowSilenced')
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
950 source XthrowSilenced
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
951 delete('XthrowSilenced')
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
952 enddef
d228ca435f3a patch 8.2.2351: Vim9: error msg for "throw" in function called with "silent!"
Bram Moolenaar <Bram@vim.org>
parents: 23576
diff changeset
953
21371
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
954 def DeletedFunc(): list<any>
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
955 return ['delete me']
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
956 enddef
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
957 defcompile
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
958 delfunc DeletedFunc
8e1081ede3b8 patch 8.2.1236: Vim9: a few errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21365
diff changeset
959
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
960 def s:ThrowFromDef()
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
961 throw "getout" # comment
19445
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
962 enddef
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
963
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
964 func s:CatchInFunc()
19445
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
965 try
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
966 call s:ThrowFromDef()
19445
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
967 catch
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
968 let g:thrown_func = v:exception
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
969 endtry
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
970 endfunc
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
971
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
972 def s:CatchInDef()
19445
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
973 try
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
974 ThrowFromDef()
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
975 catch
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
976 g:thrown_def = v:exception
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
977 endtry
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
978 enddef
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
979
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
980 def s:ReturnFinally(): string
19459
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
981 try
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
982 return 'intry'
22395
03249b8976a9 patch 8.2.1746: Vim9: cannot use "fina" for "finally"
Bram Moolenaar <Bram@vim.org>
parents: 22391
diff changeset
983 finall
19459
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
984 g:in_finally = 'finally'
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
985 endtry
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
986 return 'end'
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
987 enddef
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
988
19445
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
989 def Test_try_catch_nested()
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
990 CatchInFunc()
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
991 assert_equal('getout', g:thrown_func)
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
992
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
993 CatchInDef()
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
994 assert_equal('getout', g:thrown_def)
19459
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
995
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
996 assert_equal('intry', ReturnFinally())
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
997 assert_equal('finally', g:in_finally)
25080
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
998
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
999 var l = []
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1000 try
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1001 l->add('1')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1002 throw 'bad'
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1003 l->add('x')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1004 catch /bad/
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1005 l->add('2')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1006 try
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1007 l->add('3')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1008 throw 'one'
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1009 l->add('x')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1010 catch /one/
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1011 l->add('4')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1012 try
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1013 l->add('5')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1014 throw 'more'
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1015 l->add('x')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1016 catch /more/
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1017 l->add('6')
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1018 endtry
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1019 endtry
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1020 endtry
146c9720e563 patch 8.2.3077: Vim9: an error in a catch block is not reported
Bram Moolenaar <Bram@vim.org>
parents: 25078
diff changeset
1021 assert_equal(['1', '2', '3', '4', '5', '6'], l)
25082
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1022
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1023 l = []
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1024 try
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1025 try
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1026 l->add('1')
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1027 throw 'foo'
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1028 l->add('x')
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1029 catch
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1030 l->add('2')
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1031 throw 'bar'
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1032 l->add('x')
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1033 finally
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1034 l->add('3')
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1035 endtry
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1036 l->add('x')
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1037 catch /bar/
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1038 l->add('4')
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1039 endtry
5c7a09cf97a1 patch 8.2.3078: Vim9: profile test fails
Bram Moolenaar <Bram@vim.org>
parents: 25080
diff changeset
1040 assert_equal(['1', '2', '3', '4'], l)
19459
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1041 enddef
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1042
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1043 def s:TryOne(): number
22302
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1044 try
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1045 return 0
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1046 catch
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1047 endtry
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1048 return 0
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1049 enddef
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1050
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1051 def s:TryTwo(n: number): string
22302
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1052 try
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1053 var x = {}
22302
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1054 catch
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1055 endtry
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1056 return 'text'
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1057 enddef
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1058
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1059 def Test_try_catch_twice()
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1060 assert_equal('text', TryOne()->TryTwo())
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1061 enddef
36e8e046c335 patch 8.2.1700: Vim9: try/catch causes wrong value to be returned
Bram Moolenaar <Bram@vim.org>
parents: 22296
diff changeset
1062
19459
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1063 def Test_try_catch_match()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1064 var seq = 'a'
19459
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1065 try
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1066 throw 'something'
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1067 catch /nothing/
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1068 seq ..= 'x'
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1069 catch /some/
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1070 seq ..= 'b'
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1071 catch /asdf/
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1072 seq ..= 'x'
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1073 catch ?a\?sdf?
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1074 seq ..= 'y'
19459
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1075 finally
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1076 seq ..= 'c'
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1077 endtry
423b27246383 patch 8.2.0287: Vim9: return in try block not tested; catch not tested
Bram Moolenaar <Bram@vim.org>
parents: 19455
diff changeset
1078 assert_equal('abc', seq)
19445
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
1079 enddef
6e27e1ffa2a6 patch 8.2.0280: Vim9: throw in :def function not caught higher up
Bram Moolenaar <Bram@vim.org>
parents: 19443
diff changeset
1080
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1081 def Test_try_catch_fails()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1082 v9.CheckDefFailure(['catch'], 'E603:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1083 v9.CheckDefFailure(['try', 'echo 0', 'catch', 'catch'], 'E1033:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1084 v9.CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1085 v9.CheckDefFailure(['finally'], 'E606:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1086 v9.CheckDefFailure(['try', 'echo 0', 'finally', 'echo 1', 'finally'], 'E607:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1087 v9.CheckDefFailure(['endtry'], 'E602:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1088 v9.CheckDefFailure(['while 1', 'endtry'], 'E170:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1089 v9.CheckDefFailure(['for i in range(5)', 'endtry'], 'E170:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1090 v9.CheckDefFailure(['if 1', 'endtry'], 'E171:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1091 v9.CheckDefFailure(['try', 'echo 1', 'endtry'], 'E1032:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1092
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1093 v9.CheckDefFailure(['throw'], 'E1143:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1094 v9.CheckDefFailure(['throw xxx'], 'E1001:')
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1095 enddef
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1096
23950
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1097 def Try_catch_skipped()
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1098 var l = []
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1099 try
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1100 finally
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1101 endtry
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1102
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1103 if 1
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1104 else
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1105 try
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1106 endtry
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1107 endif
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1108 enddef
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1109
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1110 " The skipped try/endtry was updating the wrong instruction.
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1111 def Test_try_catch_skipped()
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1112 var instr = execute('disassemble Try_catch_skipped')
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1113 assert_match("NEWLIST size 0\n", instr)
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1114 enddef
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1115
27665
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1116 def Test_throw_line_number()
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1117 def Func()
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1118 eval 1 + 1
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1119 eval 2 + 2
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1120 throw 'exception'
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1121 enddef
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1122 try
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1123 Func()
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1124 catch /exception/
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1125 assert_match('line 3', v:throwpoint)
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1126 endtry
a6ffe874a24b patch 8.2.4358: Vim9: line number of exception is not set
Bram Moolenaar <Bram@vim.org>
parents: 27575
diff changeset
1127 enddef
23950
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1128
4279c1c66df1 patch 8.2.2517: Vim9: fix for s390 not tested on other systems
Bram Moolenaar <Bram@vim.org>
parents: 23940
diff changeset
1129
21094
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1130 def Test_throw_vimscript()
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1131 # only checks line continuation
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1132 var lines =<< trim END
21094
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1133 vim9script
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1134 try
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1135 throw 'one'
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1136 .. 'two'
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1137 catch
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1138 assert_equal('onetwo', v:exception)
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1139 endtry
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1140 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1141 v9.CheckScriptSuccess(lines)
22612
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1142
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1143 lines =<< trim END
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1144 vim9script
22621
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
1145 @r = ''
22612
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1146 def Func()
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1147 throw @r
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1148 enddef
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1149 var result = ''
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1150 try
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1151 Func()
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1152 catch /E1129:/
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1153 result = 'caught'
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1154 endtry
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1155 assert_equal('caught', result)
b08f435d5b86 patch 8.2.1854: Vim9: crash when throwing exception for NULL string
Bram Moolenaar <Bram@vim.org>
parents: 22602
diff changeset
1156 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1157 v9.CheckScriptSuccess(lines)
21094
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1158 enddef
376b520312d6 patch 8.2.1098: Vim9: cannot use line break in :throw argument
Bram Moolenaar <Bram@vim.org>
parents: 20982
diff changeset
1159
21757
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1160 def Test_error_in_nested_function()
23940
949238ccbd50 patch 8.2.2512: Vim9: compiling error test sometimes fails
Bram Moolenaar <Bram@vim.org>
parents: 23927
diff changeset
1161 # an error in a nested :function aborts executing in the calling :def function
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1162 var lines =<< trim END
21757
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1163 vim9script
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1164 def Func()
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1165 Error()
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1166 g:test_var = 1
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1167 enddef
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1168 func Error() abort
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1169 eval [][0]
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1170 endfunc
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1171 Func()
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1172 END
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1173 g:test_var = 0
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1174 v9.CheckScriptFailure(lines, 'E684:')
21757
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1175 assert_equal(0, g:test_var)
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1176 enddef
6c03897bcd60 patch 8.2.1428: Vim9: :def function does not abort on nested function error
Bram Moolenaar <Bram@vim.org>
parents: 21709
diff changeset
1177
24555
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1178 def Test_abort_after_error()
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1179 var lines =<< trim END
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1180 vim9script
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1181 while true
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1182 echo notfound
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1183 endwhile
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1184 g:gotthere = true
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1185 END
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1186 g:gotthere = false
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1187 v9.CheckScriptFailure(lines, 'E121:')
24555
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1188 assert_false(g:gotthere)
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1189 unlet g:gotthere
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1190 enddef
83877a1b66fd patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents: 24471
diff changeset
1191
21096
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1192 def Test_cexpr_vimscript()
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1193 # only checks line continuation
21096
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1194 set errorformat=File\ %f\ line\ %l
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1195 var lines =<< trim END
21096
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1196 vim9script
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1197 cexpr 'File'
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1198 .. ' someFile' ..
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1199 ' line 19'
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1200 assert_equal(19, getqflist()[0].lnum)
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1201 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1202 v9.CheckScriptSuccess(lines)
21096
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1203 set errorformat&
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1204 enddef
74e5e212e550 patch 8.2.1099: Vim9: cannot use line break in :cexpr argument
Bram Moolenaar <Bram@vim.org>
parents: 21094
diff changeset
1205
21775
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1206 def Test_statusline_syntax()
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1207 # legacy syntax is used for 'statusline'
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1208 var lines =<< trim END
21775
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1209 vim9script
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1210 func g:Status()
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1211 return '%{"x" is# "x"}'
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1212 endfunc
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1213 set laststatus=2 statusline=%!Status()
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1214 redrawstatus
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1215 set laststatus statusline=
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1216 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1217 v9.CheckScriptSuccess(lines)
21775
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1218 enddef
6922d78b4d52 patch 8.2.1437: Vim9: 'statusline' is evaluated using Vim9 script syntax
Bram Moolenaar <Bram@vim.org>
parents: 21757
diff changeset
1219
21391
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1220 def Test_list_vimscript()
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1221 # checks line continuation and comments
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1222 var lines =<< trim END
21391
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1223 vim9script
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1224 var mylist = [
21391
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1225 'one',
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1226 # comment
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1227 'two', # empty line follows
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1228
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1229 'three',
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1230 ]
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1231 assert_equal(['one', 'two', 'three'], mylist)
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1232 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1233 v9.CheckScriptSuccess(lines)
21883
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1234
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1235 # check all lines from heredoc are kept
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1236 lines =<< trim END
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1237 # comment 1
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1238 two
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1239 # comment 3
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1240
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1241 five
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1242 # comment 6
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1243 END
a427f5f26419 patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
Bram Moolenaar <Bram@vim.org>
parents: 21881
diff changeset
1244 assert_equal(['# comment 1', 'two', '# comment 3', '', 'five', '# comment 6'], lines)
23703
6bfb302d8392 patch 8.2.2393: Vim9: error message when script line starts with "[{"
Bram Moolenaar <Bram@vim.org>
parents: 23658
diff changeset
1245
6bfb302d8392 patch 8.2.2393: Vim9: error message when script line starts with "[{"
Bram Moolenaar <Bram@vim.org>
parents: 23658
diff changeset
1246 lines =<< trim END
6bfb302d8392 patch 8.2.2393: Vim9: error message when script line starts with "[{"
Bram Moolenaar <Bram@vim.org>
parents: 23658
diff changeset
1247 [{
6bfb302d8392 patch 8.2.2393: Vim9: error message when script line starts with "[{"
Bram Moolenaar <Bram@vim.org>
parents: 23658
diff changeset
1248 a: 0}]->string()->assert_equal("[{'a': 0}]")
6bfb302d8392 patch 8.2.2393: Vim9: error message when script line starts with "[{"
Bram Moolenaar <Bram@vim.org>
parents: 23658
diff changeset
1249 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1250 v9.CheckDefAndScriptSuccess(lines)
21391
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1251 enddef
8b882afa8ed2 patch 8.2.1246: Vim9: comment after assignment doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 21375
diff changeset
1252
20291
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1253 if has('channel')
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1254 let someJob = test_null_job()
20289
208b38bddc36 patch 8.2.0700: Vim9: converting error message to exception not tested
Bram Moolenaar <Bram@vim.org>
parents: 20203
diff changeset
1255
20291
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1256 def FuncWithError()
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1257 echomsg g:someJob
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1258 enddef
20289
208b38bddc36 patch 8.2.0700: Vim9: converting error message to exception not tested
Bram Moolenaar <Bram@vim.org>
parents: 20203
diff changeset
1259
20291
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1260 func Test_convert_emsg_to_exception()
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1261 try
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1262 call FuncWithError()
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1263 catch
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1264 call assert_match('Vim:E908:', v:exception)
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1265 endtry
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1266 endfunc
f7b1e43beb8f patch 8.2.0701: Vim9 test fails without job feature
Bram Moolenaar <Bram@vim.org>
parents: 20289
diff changeset
1267 endif
20289
208b38bddc36 patch 8.2.0700: Vim9: converting error message to exception not tested
Bram Moolenaar <Bram@vim.org>
parents: 20203
diff changeset
1268
23974
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1269 def Test_vim9script_mix()
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1270 var lines =<< trim END
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1271 if has(g:feature)
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1272 " legacy script
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1273 let g:legacy = 1
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1274 finish
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1275 endif
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1276 vim9script
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1277 g:legacy = 0
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1278 END
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1279 g:feature = 'eval'
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1280 g:legacy = -1
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1281 v9.CheckScriptSuccess(lines)
23974
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1282 assert_equal(1, g:legacy)
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1283
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1284 g:feature = 'noteval'
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1285 g:legacy = -1
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1286 v9.CheckScriptSuccess(lines)
23974
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1287 assert_equal(0, g:legacy)
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1288 enddef
d4f7e4138544 patch 8.2.2529: Vim9: Not possible to use legacy and Vim9 script in one file
Bram Moolenaar <Bram@vim.org>
parents: 23954
diff changeset
1289
19507
65049a682574 patch 8.2.0311: Vim9: insufficient script tests
Bram Moolenaar <Bram@vim.org>
parents: 19497
diff changeset
1290 def Test_vim9script_fails()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1291 v9.CheckScriptFailure(['scriptversion 2', 'vim9script'], 'E1039:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1292 v9.CheckScriptFailure(['vim9script', 'scriptversion 2'], 'E1040:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1293
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1294 v9.CheckScriptFailure(['vim9script', 'var str: string', 'str = 1234'], 'E1012:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1295 v9.CheckScriptFailure(['vim9script', 'const str = "asdf"', 'str = "xxx"'], 'E46:')
20919
96bf2b304932 patch 8.2.1011: Vim9: some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 20915
diff changeset
1296
22087
ff21e2962490 patch 8.2.1593: tests do not check the error number properly
Bram Moolenaar <Bram@vim.org>
parents: 21987
diff changeset
1297 assert_fails('vim9script', 'E1038:')
27571
55f0ac079829 patch 8.2.4312: no error for using :vim9script in a :def function
Bram Moolenaar <Bram@vim.org>
parents: 27541
diff changeset
1298 v9.CheckDefFailure(['vim9script'], 'E1038:')
27575
9f70df0b2967 patch 8.2.4314: test fails where lines are skipped
Bram Moolenaar <Bram@vim.org>
parents: 27571
diff changeset
1299
9f70df0b2967 patch 8.2.4314: test fails where lines are skipped
Bram Moolenaar <Bram@vim.org>
parents: 27571
diff changeset
1300 # no error when skipping
9f70df0b2967 patch 8.2.4314: test fails where lines are skipped
Bram Moolenaar <Bram@vim.org>
parents: 27571
diff changeset
1301 if has('nothing')
9f70df0b2967 patch 8.2.4314: test fails where lines are skipped
Bram Moolenaar <Bram@vim.org>
parents: 27571
diff changeset
1302 vim9script
9f70df0b2967 patch 8.2.4314: test fails where lines are skipped
Bram Moolenaar <Bram@vim.org>
parents: 27571
diff changeset
1303 endif
24146
03fc95628eb0 patch 8.2.2614: Vim9: function is deleted while executing
Bram Moolenaar <Bram@vim.org>
parents: 24122
diff changeset
1304 enddef
03fc95628eb0 patch 8.2.2614: Vim9: function is deleted while executing
Bram Moolenaar <Bram@vim.org>
parents: 24122
diff changeset
1305
24051
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1306 def Test_script_var_shadows_function()
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1307 var lines =<< trim END
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1308 vim9script
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1309 def Func(): number
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1310 return 123
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1311 enddef
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1312 var Func = 1
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1313 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1314 v9.CheckScriptFailure(lines, 'E1041:', 5)
24051
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1315 enddef
da8347e453b4 patch 8.2.2567: Vim9: no error if variable is defined for existing function
Bram Moolenaar <Bram@vim.org>
parents: 24033
diff changeset
1316
26504
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1317 def Test_function_shadows_script_var()
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1318 var lines =<< trim END
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1319 vim9script
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1320 var Func = 1
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1321 def Func(): number
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1322 return 123
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1323 enddef
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1324 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1325 v9.CheckScriptFailure(lines, 'E1041:', 3)
26504
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1326 enddef
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1327
25202
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1328 def Test_script_var_shadows_command()
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1329 var lines =<< trim END
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1330 var undo = 1
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1331 undo = 2
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1332 assert_equal(2, undo)
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1333 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1334 v9.CheckDefAndScriptSuccess(lines)
25202
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1335
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1336 lines =<< trim END
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1337 var undo = 1
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1338 undo
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1339 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1340 v9.CheckDefAndScriptFailure(lines, 'E1207:', 2)
25202
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1341 enddef
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1342
26506
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1343 def Test_vim9script_call_wrong_type()
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1344 var lines =<< trim END
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1345 vim9script
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1346 var Time = 'localtime'
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1347 Time()
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1348 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1349 v9.CheckScriptFailure(lines, 'E1085:')
26506
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1350 enddef
4a1d2abc2016 patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents: 26504
diff changeset
1351
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1352 def Test_vim9script_reload_delfunc()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1353 var first_lines =<< trim END
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1354 vim9script
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1355 def FuncYes(): string
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1356 return 'yes'
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1357 enddef
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1358 END
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1359 var withno_lines =<< trim END
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1360 def FuncNo(): string
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1361 return 'no'
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1362 enddef
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1363 def g:DoCheck(no_exists: bool)
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1364 assert_equal('yes', FuncYes())
20195
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1365 assert_equal('no', FuncNo())
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1366 enddef
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1367 END
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1368 var nono_lines =<< trim END
20195
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1369 def g:DoCheck(no_exists: bool)
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1370 assert_equal('yes', FuncYes())
22165
c512e6f57ff2 patch 8.2.1632: not checking the context of test_fails()
Bram Moolenaar <Bram@vim.org>
parents: 22147
diff changeset
1371 assert_fails('FuncNo()', 'E117:', '', 2, 'DoCheck')
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1372 enddef
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1373 END
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1374
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1375 # FuncNo() is defined
20195
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1376 writefile(first_lines + withno_lines, 'Xreloaded.vim')
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1377 source Xreloaded.vim
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1378 g:DoCheck(true)
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1379
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1380 # FuncNo() is not redefined
20195
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1381 writefile(first_lines + nono_lines, 'Xreloaded.vim')
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1382 source Xreloaded.vim
23252
35583da6397e patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents: 23247
diff changeset
1383 g:DoCheck(false)
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1384
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1385 # FuncNo() is back
20195
a2447c58da25 patch 8.2.0653: using uninitialized pointer
Bram Moolenaar <Bram@vim.org>
parents: 20189
diff changeset
1386 writefile(first_lines + withno_lines, 'Xreloaded.vim')
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1387 source Xreloaded.vim
23252
35583da6397e patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents: 23247
diff changeset
1388 g:DoCheck(false)
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1389
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1390 delete('Xreloaded.vim')
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1391 enddef
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
1392
20347
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1393 def Test_vim9script_reload_delvar()
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1394 # write the script with a script-local variable
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1395 var lines =<< trim END
20347
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1396 vim9script
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1397 var name = 'string'
20347
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1398 END
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1399 writefile(lines, 'XreloadVar.vim')
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1400 source XreloadVar.vim
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1401
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1402 # now write the script using the same variable locally - works
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1403 lines =<< trim END
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1404 vim9script
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1405 def Func()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1406 var name = 'string'
20347
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1407 enddef
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1408 END
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1409 writefile(lines, 'XreloadVar.vim')
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1410 source XreloadVar.vim
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1411
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1412 delete('XreloadVar.vim')
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1413 enddef
0e1dfff4f294 patch 8.2.0729: Vim9: When reloading a script variables are not cleared
Bram Moolenaar <Bram@vim.org>
parents: 20338
diff changeset
1414
21791
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1415 def Test_func_redefine_error()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1416 var lines = [
21791
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1417 'vim9script',
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1418 'def Func()',
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1419 ' eval [][0]',
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1420 'enddef',
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1421 'Func()',
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1422 ]
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1423 writefile(lines, 'Xtestscript.vim')
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1424
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1425 for count in range(3)
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1426 try
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1427 source Xtestscript.vim
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1428 catch /E684/
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1429 # function name should contain <SNR> every time
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1430 assert_match('E684: list index out of range', v:exception)
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1431 assert_match('function <SNR>\d\+_Func, line 1', v:throwpoint)
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1432 endtry
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1433 endfor
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1434
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1435 delete('Xtestscript.vim')
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1436 enddef
d504fcd3d2c0 patch 8.2.1445: Vim9: function expanded name is cleared when sourcing again
Bram Moolenaar <Bram@vim.org>
parents: 21775
diff changeset
1437
21600
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1438 def Test_func_redefine_fails()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1439 var lines =<< trim END
21600
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1440 vim9script
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1441 def Func()
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1442 echo 'one'
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1443 enddef
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1444 def Func()
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1445 echo 'two'
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1446 enddef
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1447 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1448 v9.CheckScriptFailure(lines, 'E1073:')
21683
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1449
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1450 lines =<< trim END
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1451 vim9script
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1452 def Foo(): string
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1453 return 'foo'
26504
7821550ba3a8 patch 8.2.3782: Vim9: no error if a function shadows a script variable
Bram Moolenaar <Bram@vim.org>
parents: 26496
diff changeset
1454 enddef
21683
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1455 def Func()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1456 var Foo = {-> 'lambda'}
21683
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1457 enddef
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1458 defcompile
bb4f55d20951 patch 8.2.1391: Vim9: no error for shadowing a script function
Bram Moolenaar <Bram@vim.org>
parents: 21681
diff changeset
1459 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1460 v9.CheckScriptFailure(lines, 'E1073:')
21600
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1461 enddef
622021f43db1 patch 8.2.1350: Vim9: no test for error message when redefining function
Bram Moolenaar <Bram@vim.org>
parents: 21598
diff changeset
1462
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1463 def Test_fixed_size_list()
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1464 # will be allocated as one piece of memory, check that changes work
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1465 var l = [1, 2, 3, 4]
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1466 l->remove(0)
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1467 l->add(5)
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1468 l->insert(99, 1)
19281
9fcdeaa18bd1 patch 8.2.0199: Vim9 script commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19253
diff changeset
1469 assert_equal([2, 99, 3, 4, 5], l)
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1470 enddef
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1471
21516
c7b2ce90c2de patch 8.2.1308: Vim9: accidentally using "x" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 21485
diff changeset
1472 def Test_no_insert_xit()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1473 v9.CheckDefExecFailure(['a = 1'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1474 v9.CheckDefExecFailure(['c = 1'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1475 v9.CheckDefExecFailure(['i = 1'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1476 v9.CheckDefExecFailure(['t = 1'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1477 v9.CheckDefExecFailure(['x = 1'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1478
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1479 v9.CheckScriptFailure(['vim9script', 'a = 1'], 'E488:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1480 v9.CheckScriptFailure(['vim9script', 'a'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1481 v9.CheckScriptFailure(['vim9script', 'c = 1'], 'E488:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1482 v9.CheckScriptFailure(['vim9script', 'c'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1483 v9.CheckScriptFailure(['vim9script', 'i = 1'], 'E488:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1484 v9.CheckScriptFailure(['vim9script', 'i'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1485 v9.CheckScriptFailure(['vim9script', 'o = 1'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1486 v9.CheckScriptFailure(['vim9script', 'o'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1487 v9.CheckScriptFailure(['vim9script', 't'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1488 v9.CheckScriptFailure(['vim9script', 't = 1'], 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1489 v9.CheckScriptFailure(['vim9script', 'x = 1'], 'E1100:')
21516
c7b2ce90c2de patch 8.2.1308: Vim9: accidentally using "x" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 21485
diff changeset
1490 enddef
c7b2ce90c2de patch 8.2.1308: Vim9: accidentally using "x" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 21485
diff changeset
1491
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1492 def s:IfElse(what: number): string
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1493 var res = ''
19332
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1494 if what == 1
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1495 res = "one"
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1496 elseif what == 2
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1497 res = "two"
19253
a8d2d3c8f0b3 patch 8.2.0185: Vim9 script: cannot use "if has()" to skip lines
Bram Moolenaar <Bram@vim.org>
parents: 19185
diff changeset
1498 else
19332
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1499 res = "three"
19253
a8d2d3c8f0b3 patch 8.2.0185: Vim9 script: cannot use "if has()" to skip lines
Bram Moolenaar <Bram@vim.org>
parents: 19185
diff changeset
1500 endif
19332
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1501 return res
19253
a8d2d3c8f0b3 patch 8.2.0185: Vim9 script: cannot use "if has()" to skip lines
Bram Moolenaar <Bram@vim.org>
parents: 19185
diff changeset
1502 enddef
a8d2d3c8f0b3 patch 8.2.0185: Vim9 script: cannot use "if has()" to skip lines
Bram Moolenaar <Bram@vim.org>
parents: 19185
diff changeset
1503
19332
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1504 def Test_if_elseif_else()
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1505 assert_equal('one', IfElse(1))
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1506 assert_equal('two', IfElse(2))
d6e8a9e80be4 patch 8.2.0224: compiling :elseif not tested yet
Bram Moolenaar <Bram@vim.org>
parents: 19330
diff changeset
1507 assert_equal('three', IfElse(3))
19281
9fcdeaa18bd1 patch 8.2.0199: Vim9 script commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19253
diff changeset
1508 enddef
9fcdeaa18bd1 patch 8.2.0199: Vim9 script commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19253
diff changeset
1509
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1510 def Test_if_elseif_else_fails()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1511 v9.CheckDefFailure(['elseif true'], 'E582:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1512 v9.CheckDefFailure(['else'], 'E581:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1513 v9.CheckDefFailure(['endif'], 'E580:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1514 v9.CheckDefFailure(['if g:abool', 'elseif xxx'], 'E1001:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1515 v9.CheckDefFailure(['if true', 'echo 1'], 'E171:')
23882
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1516
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1517 var lines =<< trim END
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1518 var s = ''
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1519 if s = ''
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1520 endif
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1521 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1522 v9.CheckDefFailure(lines, 'E488:')
23882
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1523
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1524 lines =<< trim END
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1525 var s = ''
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1526 if s == ''
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1527 elseif s = ''
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1528 endif
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
1529 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1530 v9.CheckDefFailure(lines, 'E488:')
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1531 enddef
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1532
19585
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1533 let g:bool_true = v:true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1534 let g:bool_false = v:false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1535
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1536 def Test_if_const_expr()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1537 var res = false
19585
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1538 if true ? true : false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1539 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1540 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1541 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1542
19894
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1543 g:glob = 2
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1544 if false
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
1545 execute('g:glob = 3')
19894
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1546 endif
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1547 assert_equal(2, g:glob)
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1548 if true
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
1549 execute('g:glob = 3')
19894
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1550 endif
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1551 assert_equal(3, g:glob)
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1552
19585
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1553 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1554 if g:bool_true ? true : false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1555 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1556 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1557 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1558
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1559 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1560 if true ? g:bool_true : false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1561 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1562 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1563 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1564
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1565 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1566 if true ? true : g:bool_false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1567 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1568 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1569 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1570
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1571 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1572 if true ? false : true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1573 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1574 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1575 assert_equal(false, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1576
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1577 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1578 if false ? false : true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1579 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1580 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1581 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1582
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1583 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1584 if false ? true : false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1585 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1586 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1587 assert_equal(false, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1588
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1589 res = false
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1590 if has('xyz') ? true : false
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1591 res = true
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1592 endif
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1593 assert_equal(false, res)
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1594
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1595 res = false
19585
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1596 if true && true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1597 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1598 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1599 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1600
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1601 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1602 if true && false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1603 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1604 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1605 assert_equal(false, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1606
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1607 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1608 if g:bool_true && false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1609 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1610 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1611 assert_equal(false, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1612
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1613 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1614 if true && g:bool_false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1615 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1616 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1617 assert_equal(false, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1618
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1619 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1620 if false && false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1621 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1622 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1623 assert_equal(false, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1624
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1625 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1626 if true || false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1627 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1628 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1629 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1630
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1631 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1632 if g:bool_true || false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1633 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1634 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1635 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1636
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1637 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1638 if true || g:bool_false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1639 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1640 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1641 assert_equal(true, res)
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1642
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1643 res = false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1644 if false || false
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1645 res = true
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1646 endif
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1647 assert_equal(false, res)
21957
4343657b49fa patch 8.2.1528: Vim9: :endif not found after "if false"
Bram Moolenaar <Bram@vim.org>
parents: 21955
diff changeset
1648
4343657b49fa patch 8.2.1528: Vim9: :endif not found after "if false"
Bram Moolenaar <Bram@vim.org>
parents: 21955
diff changeset
1649 # with constant "false" expression may be invalid so long as the syntax is OK
25202
e5d85e83a887 patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents: 25188
diff changeset
1650 if false | eval 1 + 2 | endif
21957
4343657b49fa patch 8.2.1528: Vim9: :endif not found after "if false"
Bram Moolenaar <Bram@vim.org>
parents: 21955
diff changeset
1651 if false | eval burp + 234 | endif
4343657b49fa patch 8.2.1528: Vim9: :endif not found after "if false"
Bram Moolenaar <Bram@vim.org>
parents: 21955
diff changeset
1652 if false | echo burp 234 'asd' | endif
4343657b49fa patch 8.2.1528: Vim9: :endif not found after "if false"
Bram Moolenaar <Bram@vim.org>
parents: 21955
diff changeset
1653 if false
4343657b49fa patch 8.2.1528: Vim9: :endif not found after "if false"
Bram Moolenaar <Bram@vim.org>
parents: 21955
diff changeset
1654 burp
4343657b49fa patch 8.2.1528: Vim9: :endif not found after "if false"
Bram Moolenaar <Bram@vim.org>
parents: 21955
diff changeset
1655 endif
25551
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1656
27541
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1657 if 0
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1658 if 1
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1659 echo nothing
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1660 elseif 1
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1661 echo still nothing
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1662 endif
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1663 endif
8af6e7761b0c patch 8.2.4297: Vim9: not all code covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27515
diff changeset
1664
25551
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1665 # expression with line breaks skipped
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1666 if false
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1667 ('aaa'
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1668 .. 'bbb'
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1669 .. 'ccc'
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1670 )->setline(1)
5ab75ca75d21 patch 8.2.3312: Vim9: after "if false" line breaks in expression not skipped
Bram Moolenaar <Bram@vim.org>
parents: 25541
diff changeset
1671 endif
19878
dd3c80122a0e patch 8.2.0495: Vim9: some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19874
diff changeset
1672 enddef
19585
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1673
19878
dd3c80122a0e patch 8.2.0495: Vim9: some code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19874
diff changeset
1674 def Test_if_const_expr_fails()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1675 v9.CheckDefFailure(['if "aaa" == "bbb'], 'E114:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1676 v9.CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1677 v9.CheckDefFailure(["if has('aaa'"], 'E110:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1678 v9.CheckDefFailure(["if has('aaa') ? true false"], 'E109:')
19585
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1679 enddef
0303f920a7d4 patch 8.2.0349: Vim9: constant expression not well tested
Bram Moolenaar <Bram@vim.org>
parents: 19583
diff changeset
1680
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1681 def s:RunNested(i: number): number
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1682 var x: number = 0
20899
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1683 if i % 2
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1684 if 1
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1685 # comment
20899
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1686 else
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1687 # comment
20899
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1688 endif
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1689 x += 1
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1690 else
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1691 x += 1000
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1692 endif
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1693 return x
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1694 enddef
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1695
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1696 def Test_nested_if()
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1697 assert_equal(1, RunNested(1))
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1698 assert_equal(1000, RunNested(2))
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1699 enddef
e76bddcf3341 patch 8.2.1001: Vim9: crash with nested "if" and assignment
Bram Moolenaar <Bram@vim.org>
parents: 20885
diff changeset
1700
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1701 def Test_execute_cmd()
23183
4d5d12138b36 patch 8.2.2137: Vim9: :echo and :execute give error for empty argument
Bram Moolenaar <Bram@vim.org>
parents: 23179
diff changeset
1702 # missing argument is ignored
4d5d12138b36 patch 8.2.2137: Vim9: :echo and :execute give error for empty argument
Bram Moolenaar <Bram@vim.org>
parents: 23179
diff changeset
1703 execute
4d5d12138b36 patch 8.2.2137: Vim9: :echo and :execute give error for empty argument
Bram Moolenaar <Bram@vim.org>
parents: 23179
diff changeset
1704 execute # comment
4d5d12138b36 patch 8.2.2137: Vim9: :echo and :execute give error for empty argument
Bram Moolenaar <Bram@vim.org>
parents: 23179
diff changeset
1705
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1706 new
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1707 setline(1, 'default')
22147
d55008685870 patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
1708 execute 'setline(1, "execute-string")'
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1709 assert_equal('execute-string', getline(1))
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1710
22147
d55008685870 patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
1711 execute "setline(1, 'execute-string')"
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1712 assert_equal('execute-string', getline(1))
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1713
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1714 var cmd1 = 'setline(1,'
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1715 var cmd2 = '"execute-var")'
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1716 execute cmd1 cmd2 # comment
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1717 assert_equal('execute-var', getline(1))
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1718
22147
d55008685870 patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
1719 execute cmd1 cmd2 '|setline(1, "execute-var-string")'
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1720 assert_equal('execute-var-string', getline(1))
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1721
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1722 var cmd_first = 'call '
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1723 var cmd_last = 'setline(1, "execute-var-var")'
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1724 execute cmd_first .. cmd_last
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1725 assert_equal('execute-var-var', getline(1))
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1726 bwipe!
19894
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1727
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1728 var n = true
21485
afc8cc1a291f patch 8.2.1293: Vim9: error when using vim9script in TextYankPost
Bram Moolenaar <Bram@vim.org>
parents: 21479
diff changeset
1729 execute 'echomsg' (n ? '"true"' : '"no"')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1730 assert_match('^true$', g:Screenline(&lines))
21485
afc8cc1a291f patch 8.2.1293: Vim9: error when using vim9script in TextYankPost
Bram Moolenaar <Bram@vim.org>
parents: 21479
diff changeset
1731
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
1732 echomsg [1, 2, 3] {a: 1, b: 2}
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1733 assert_match('^\[1, 2, 3\] {''a'': 1, ''b'': 2}$', g:Screenline(&lines))
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1734
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1735 v9.CheckDefFailure(['execute xxx'], 'E1001:', 1)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1736 v9.CheckDefExecFailure(['execute "tabnext " .. 8'], 'E475:', 1)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1737 v9.CheckDefFailure(['execute "cmd"# comment'], 'E488:', 1)
27768
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
1738 if has('channel')
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
1739 v9.CheckDefExecFailure(['execute test_null_channel()'], 'E908:', 1)
b081ba78675a patch 8.2.4410: Vim9: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 27690
diff changeset
1740 endif
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1741 enddef
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1742
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1743 def Test_execute_cmd_vimscript()
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1744 # only checks line continuation
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1745 var lines =<< trim END
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1746 vim9script
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1747 execute 'g:someVar'
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1748 .. ' = ' ..
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1749 '28'
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1750 assert_equal(28, g:someVar)
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1751 unlet g:someVar
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1752 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1753 v9.CheckScriptSuccess(lines)
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1754 enddef
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1755
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1756 def Test_echo_cmd()
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1757 echo 'some' # comment
19894
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
1758 echon 'thing'
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1759 assert_match('^something$', g:Screenline(&lines))
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1760
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1761 echo "some" # comment
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1762 echon "thing"
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1763 assert_match('^something$', g:Screenline(&lines))
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
1764
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1765 var str1 = 'some'
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1766 var str2 = 'more'
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1767 echo str1 str2
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1768 assert_match('^some more$', g:Screenline(&lines))
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1769
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1770 v9.CheckDefFailure(['echo "xxx"# comment'], 'E488:')
19528
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1771 enddef
3b026343f398 patch 8.2.0321: Vim9: ":execute" does not work yet
Bram Moolenaar <Bram@vim.org>
parents: 19521
diff changeset
1772
20142
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1773 def Test_echomsg_cmd()
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1774 echomsg 'some' 'more' # comment
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1775 assert_match('^some more$', g:Screenline(&lines))
20142
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1776 echo 'clear'
20982
bb49b5090a9c patch 8.2.1042: Vim9: cannot put an operator on the next line
Bram Moolenaar <Bram@vim.org>
parents: 20953
diff changeset
1777 :1messages
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1778 assert_match('^some more$', g:Screenline(&lines))
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1779
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1780 v9.CheckDefFailure(['echomsg "xxx"# comment'], 'E488:')
20142
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1781 enddef
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1782
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1783 def Test_echomsg_cmd_vimscript()
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1784 # only checks line continuation
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1785 var lines =<< trim END
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1786 vim9script
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1787 echomsg 'here'
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1788 .. ' is ' ..
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1789 'a message'
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1790 assert_match('^here is a message$', g:Screenline(&lines))
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1791 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1792 v9.CheckScriptSuccess(lines)
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1793 enddef
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1794
20142
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1795 def Test_echoerr_cmd()
25541
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1796 var local = 'local'
20289
208b38bddc36 patch 8.2.0700: Vim9: converting error message to exception not tested
Bram Moolenaar <Bram@vim.org>
parents: 20203
diff changeset
1797 try
25541
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1798 echoerr 'something' local 'wrong' # comment
20289
208b38bddc36 patch 8.2.0700: Vim9: converting error message to exception not tested
Bram Moolenaar <Bram@vim.org>
parents: 20203
diff changeset
1799 catch
25541
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1800 assert_match('something local wrong', v:exception)
20289
208b38bddc36 patch 8.2.0700: Vim9: converting error message to exception not tested
Bram Moolenaar <Bram@vim.org>
parents: 20203
diff changeset
1801 endtry
20142
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1802 enddef
fe8d0a4344df patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 20138
diff changeset
1803
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1804 def Test_echoerr_cmd_vimscript()
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
1805 # only checks line continuation
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1806 var lines =<< trim END
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1807 vim9script
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1808 try
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1809 echoerr 'this'
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1810 .. ' is ' ..
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1811 'wrong'
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1812 catch
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1813 assert_match('this is wrong', v:exception)
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1814 endtry
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1815 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1816 v9.CheckScriptSuccess(lines)
21098
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1817 enddef
e88b0daa2fcb patch 8.2.1100: Vim9: cannot use line break in :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 21096
diff changeset
1818
25541
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1819 def Test_echoconsole_cmd()
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1820 var local = 'local'
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1821 echoconsole 'something' local # comment
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1822 # output goes anywhere
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1823 enddef
2ae1d5a4ae5c patch 8.2.3307: Vim9: :echoconsole cannot access local variables
Bram Moolenaar <Bram@vim.org>
parents: 25537
diff changeset
1824
19568
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1825 def Test_for_outside_of_function()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
1826 var lines =<< trim END
19568
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1827 vim9script
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1828 new
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1829 for var in range(0, 3)
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1830 append(line('$'), var)
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1831 endfor
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1832 assert_equal(['', '0', '1', '2', '3'], getline(1, '$'))
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1833 bwipe!
24232
3058ed6db36f patch 8.2.2657: Vim9: error message for declaring variable in for loop
Bram Moolenaar <Bram@vim.org>
parents: 24158
diff changeset
1834
3058ed6db36f patch 8.2.2657: Vim9: error message for declaring variable in for loop
Bram Moolenaar <Bram@vim.org>
parents: 24158
diff changeset
1835 var result = ''
3058ed6db36f patch 8.2.2657: Vim9: error message for declaring variable in for loop
Bram Moolenaar <Bram@vim.org>
parents: 24158
diff changeset
1836 for i in [1, 2, 3]
3058ed6db36f patch 8.2.2657: Vim9: error message for declaring variable in for loop
Bram Moolenaar <Bram@vim.org>
parents: 24158
diff changeset
1837 var loop = ' loop ' .. i
3058ed6db36f patch 8.2.2657: Vim9: error message for declaring variable in for loop
Bram Moolenaar <Bram@vim.org>
parents: 24158
diff changeset
1838 result ..= loop
3058ed6db36f patch 8.2.2657: Vim9: error message for declaring variable in for loop
Bram Moolenaar <Bram@vim.org>
parents: 24158
diff changeset
1839 endfor
3058ed6db36f patch 8.2.2657: Vim9: error message for declaring variable in for loop
Bram Moolenaar <Bram@vim.org>
parents: 24158
diff changeset
1840 assert_equal(' loop 1 loop 2 loop 3', result)
19568
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1841 END
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1842 writefile(lines, 'Xvim9for.vim')
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1843 source Xvim9for.vim
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1844 delete('Xvim9for.vim')
c0749ad6c699 patch 8.2.0341: using ":for" in Vim9 script gives an error
Bram Moolenaar <Bram@vim.org>
parents: 19566
diff changeset
1845 enddef
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
1846
25656
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1847 def Test_for_skipped_block()
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1848 # test skipped blocks at outside of function
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1849 var lines =<< trim END
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1850 var result = []
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1851 if true
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1852 for n in [1, 2]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1853 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1854 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1855 else
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1856 for n in [3, 4]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1857 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1858 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1859 endif
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1860 assert_equal([1, 2], result)
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1861
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1862 result = []
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1863 if false
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1864 for n in [1, 2]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1865 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1866 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1867 else
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1868 for n in [3, 4]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1869 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1870 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1871 endif
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1872 assert_equal([3, 4], result)
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1873 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1874 v9.CheckDefAndScriptSuccess(lines)
25656
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1875
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1876 # test skipped blocks at inside of function
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1877 lines =<< trim END
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1878 def DefTrue()
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1879 var result = []
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1880 if true
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1881 for n in [1, 2]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1882 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1883 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1884 else
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1885 for n in [3, 4]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1886 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1887 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1888 endif
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1889 assert_equal([1, 2], result)
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1890 enddef
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1891 DefTrue()
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1892
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1893 def DefFalse()
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1894 var result = []
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1895 if false
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1896 for n in [1, 2]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1897 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1898 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1899 else
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1900 for n in [3, 4]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1901 result += [n]
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1902 endfor
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1903 endif
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1904 assert_equal([3, 4], result)
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1905 enddef
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1906 DefFalse()
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1907 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
1908 v9.CheckDefAndScriptSuccess(lines)
25656
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1909 enddef
fe7f45e2895e patch 8.2.3364: Vim9: crash when :for is skipped
Bram Moolenaar <Bram@vim.org>
parents: 25654
diff changeset
1910
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
1911 def Test_for_loop()
24438
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1912 var lines =<< trim END
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1913 var result = ''
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1914 for cnt in range(7)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1915 if cnt == 4
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1916 break
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1917 endif
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1918 if cnt == 2
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1919 continue
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1920 endif
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1921 result ..= cnt .. '_'
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1922 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1923 assert_equal('0_1_3_', result)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1924
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1925 var concat = ''
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1926 for str in eval('["one", "two"]')
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1927 concat ..= str
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1928 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1929 assert_equal('onetwo', concat)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1930
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1931 var total = 0
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1932 for nr in
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1933 [1, 2, 3]
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1934 total += nr
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1935 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1936 assert_equal(6, total)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1937
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1938 total = 0
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1939 for nr
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1940 in [1, 2, 3]
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1941 total += nr
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1942 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1943 assert_equal(6, total)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1944
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1945 total = 0
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1946 for nr
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1947 in
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1948 [1, 2, 3]
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1949 total += nr
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1950 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1951 assert_equal(6, total)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1952
24446
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1953 # with type
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1954 total = 0
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1955 for n: number in [1, 2, 3]
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1956 total += n
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1957 endfor
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1958 assert_equal(6, total)
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1959
24460
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
1960 var chars = ''
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
1961 for s: string in 'foobar'
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
1962 chars ..= s
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
1963 endfor
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
1964 assert_equal('foobar', chars)
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
1965
25164
0e08e34fa0b8 patch 8.2.3118: Vim9: "any" type not handled correctly in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25162
diff changeset
1966 chars = ''
0e08e34fa0b8 patch 8.2.3118: Vim9: "any" type not handled correctly in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25162
diff changeset
1967 for x: string in {a: 'a', b: 'b'}->values()
0e08e34fa0b8 patch 8.2.3118: Vim9: "any" type not handled correctly in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25162
diff changeset
1968 chars ..= x
0e08e34fa0b8 patch 8.2.3118: Vim9: "any" type not handled correctly in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25162
diff changeset
1969 endfor
0e08e34fa0b8 patch 8.2.3118: Vim9: "any" type not handled correctly in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25162
diff changeset
1970 assert_equal('ab', chars)
0e08e34fa0b8 patch 8.2.3118: Vim9: "any" type not handled correctly in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25162
diff changeset
1971
24446
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1972 # unpack with type
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1973 var res = ''
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1974 for [n: number, s: string] in [[1, 'a'], [2, 'b']]
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1975 res ..= n .. s
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1976 endfor
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1977 assert_equal('1a2b', res)
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1978
25028
faa3de7aed8b patch 8.2.3051: Vim9: for loop with one list variable does not work
Bram Moolenaar <Bram@vim.org>
parents: 24968
diff changeset
1979 # unpack with one var
faa3de7aed8b patch 8.2.3051: Vim9: for loop with one list variable does not work
Bram Moolenaar <Bram@vim.org>
parents: 24968
diff changeset
1980 var reslist = []
faa3de7aed8b patch 8.2.3051: Vim9: for loop with one list variable does not work
Bram Moolenaar <Bram@vim.org>
parents: 24968
diff changeset
1981 for [x] in [['aaa'], ['bbb']]
faa3de7aed8b patch 8.2.3051: Vim9: for loop with one list variable does not work
Bram Moolenaar <Bram@vim.org>
parents: 24968
diff changeset
1982 reslist->add(x)
faa3de7aed8b patch 8.2.3051: Vim9: for loop with one list variable does not work
Bram Moolenaar <Bram@vim.org>
parents: 24968
diff changeset
1983 endfor
faa3de7aed8b patch 8.2.3051: Vim9: for loop with one list variable does not work
Bram Moolenaar <Bram@vim.org>
parents: 24968
diff changeset
1984 assert_equal(['aaa', 'bbb'], reslist)
faa3de7aed8b patch 8.2.3051: Vim9: for loop with one list variable does not work
Bram Moolenaar <Bram@vim.org>
parents: 24968
diff changeset
1985
24438
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1986 # loop over string
24446
f388a033e568 patch 8.2.2763: Vim9: cannot use type in for loop unpack at script level
Bram Moolenaar <Bram@vim.org>
parents: 24440
diff changeset
1987 res = ''
24438
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1988 for c in 'aéc̀d'
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1989 res ..= c .. '-'
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1990 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1991 assert_equal('a-é-c̀-d-', res)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1992
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1993 res = ''
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1994 for c in ''
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1995 res ..= c .. '-'
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1996 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1997 assert_equal('', res)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1998
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
1999 res = ''
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2000 for c in test_null_string()
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2001 res ..= c .. '-'
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2002 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2003 assert_equal('', res)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2004
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2005 var foo: list<dict<any>> = [
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2006 {a: 'Cat'}
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2007 ]
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2008 for dd in foo
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2009 dd.counter = 12
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2010 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2011 assert_equal([{a: 'Cat', counter: 12}], foo)
25280
ca7a8ea2eb5f patch 8.2.3177: Vim9: can not use "for _ in expr" at script level
Bram Moolenaar <Bram@vim.org>
parents: 25260
diff changeset
2012
ca7a8ea2eb5f patch 8.2.3177: Vim9: can not use "for _ in expr" at script level
Bram Moolenaar <Bram@vim.org>
parents: 25260
diff changeset
2013 reslist = []
ca7a8ea2eb5f patch 8.2.3177: Vim9: can not use "for _ in expr" at script level
Bram Moolenaar <Bram@vim.org>
parents: 25260
diff changeset
2014 for _ in range(3)
ca7a8ea2eb5f patch 8.2.3177: Vim9: can not use "for _ in expr" at script level
Bram Moolenaar <Bram@vim.org>
parents: 25260
diff changeset
2015 reslist->add('x')
ca7a8ea2eb5f patch 8.2.3177: Vim9: can not use "for _ in expr" at script level
Bram Moolenaar <Bram@vim.org>
parents: 25260
diff changeset
2016 endfor
ca7a8ea2eb5f patch 8.2.3177: Vim9: can not use "for _ in expr" at script level
Bram Moolenaar <Bram@vim.org>
parents: 25260
diff changeset
2017 assert_equal(['x', 'x', 'x'], reslist)
24438
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2018 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2019 v9.CheckDefAndScriptSuccess(lines)
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
2020 enddef
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
2021
25358
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2022 def Test_for_loop_with_closure()
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2023 var lines =<< trim END
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2024 var flist: list<func>
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2025 for i in range(5)
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2026 var inloop = i
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2027 flist[i] = () => inloop
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2028 endfor
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2029 for i in range(5)
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2030 assert_equal(4, flist[i]())
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2031 endfor
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2032 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2033 v9.CheckDefAndScriptSuccess(lines)
25358
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2034
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2035 lines =<< trim END
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2036 var flist: list<func>
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2037 for i in range(5)
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2038 var inloop = i
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2039 flist[i] = () => {
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2040 return inloop
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2041 }
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2042 endfor
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2043 for i in range(5)
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2044 assert_equal(4, flist[i]())
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2045 endfor
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2046 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2047 v9.CheckDefAndScriptSuccess(lines)
25358
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2048 enddef
f03271631eb5 patch 8.2.3216: Vim9: crash when using variable in a loop at script level
Bram Moolenaar <Bram@vim.org>
parents: 25304
diff changeset
2049
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
2050 def Test_for_loop_fails()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2051 v9.CheckDefAndScriptFailure(['for '], ['E1097:', 'E690:'])
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2052 v9.CheckDefAndScriptFailure(['for x'], ['E1097:', 'E690:'])
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2053 v9.CheckDefAndScriptFailure(['for x in'], ['E1097:', 'E15:'])
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2054 v9.CheckDefAndScriptFailure(['for # in range(5)'], 'E690:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2055 v9.CheckDefAndScriptFailure(['for i In range(5)'], 'E690:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2056 v9.CheckDefAndScriptFailure(['var x = 5', 'for x in range(5)', 'endfor'], ['E1017:', 'E1041:'])
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2057 v9.CheckScriptFailure(['vim9script', 'var x = 5', 'for x in range(5)', '# comment', 'endfor'], 'E1041:', 3)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2058 v9.CheckScriptFailure(['def Func(arg: any)', 'for arg in range(5)', 'enddef', 'defcompile'], 'E1006:')
23092
c713358da074 patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents: 23084
diff changeset
2059 delfunc! g:Func
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2060 v9.CheckDefFailure(['for i in xxx'], 'E1001:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2061 v9.CheckDefFailure(['endfor'], 'E588:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2062 v9.CheckDefFailure(['for i in range(3)', 'echo 3'], 'E170:')
24234
7ffc795288dd patch 8.2.2658: :for cannot loop over a string
Bram Moolenaar <Bram@vim.org>
parents: 24232
diff changeset
2063
7ffc795288dd patch 8.2.2658: :for cannot loop over a string
Bram Moolenaar <Bram@vim.org>
parents: 24232
diff changeset
2064 # wrong type detected at compile time
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2065 v9.CheckDefFailure(['for i in {a: 1}', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported')
24234
7ffc795288dd patch 8.2.2658: :for cannot loop over a string
Bram Moolenaar <Bram@vim.org>
parents: 24232
diff changeset
2066
7ffc795288dd patch 8.2.2658: :for cannot loop over a string
Bram Moolenaar <Bram@vim.org>
parents: 24232
diff changeset
2067 # wrong type detected at runtime
7ffc795288dd patch 8.2.2658: :for cannot loop over a string
Bram Moolenaar <Bram@vim.org>
parents: 24232
diff changeset
2068 g:adict = {a: 1}
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2069 v9.CheckDefExecFailure(['for i in g:adict', 'echo 3', 'endfor'], 'E1177: For loop on dict not supported')
24234
7ffc795288dd patch 8.2.2658: :for cannot loop over a string
Bram Moolenaar <Bram@vim.org>
parents: 24232
diff changeset
2070 unlet g:adict
24440
d2f9bdd938fa patch 8.2.2760: Vim9: no error for changing a for loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24438
diff changeset
2071
d2f9bdd938fa patch 8.2.2760: Vim9: no error for changing a for loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24438
diff changeset
2072 var lines =<< trim END
d2f9bdd938fa patch 8.2.2760: Vim9: no error for changing a for loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24438
diff changeset
2073 var d: list<dict<any>> = [{a: 0}]
d2f9bdd938fa patch 8.2.2760: Vim9: no error for changing a for loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24438
diff changeset
2074 for e in d
d2f9bdd938fa patch 8.2.2760: Vim9: no error for changing a for loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24438
diff changeset
2075 e = {a: 0, b: ''}
d2f9bdd938fa patch 8.2.2760: Vim9: no error for changing a for loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24438
diff changeset
2076 endfor
d2f9bdd938fa patch 8.2.2760: Vim9: no error for changing a for loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24438
diff changeset
2077 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2078 v9.CheckDefAndScriptFailure(lines, ['E1018:', 'E46:'], 3)
24460
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
2079
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
2080 lines =<< trim END
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
2081 for nr: number in ['foo']
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
2082 endfor
f0a3adf16f01 patch 8.2.2770: Vim9: type of loop variable is not used
Bram Moolenaar <Bram@vim.org>
parents: 24446
diff changeset
2083 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2084 v9.CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got string', 1)
25149
18b31f0a4bb5 patch 8.2.3111: Vim9: confusing error with extra whitespace before colon
Bram Moolenaar <Bram@vim.org>
parents: 25124
diff changeset
2085
18b31f0a4bb5 patch 8.2.3111: Vim9: confusing error with extra whitespace before colon
Bram Moolenaar <Bram@vim.org>
parents: 25124
diff changeset
2086 lines =<< trim END
18b31f0a4bb5 patch 8.2.3111: Vim9: confusing error with extra whitespace before colon
Bram Moolenaar <Bram@vim.org>
parents: 25124
diff changeset
2087 for n : number in [1, 2]
18b31f0a4bb5 patch 8.2.3111: Vim9: confusing error with extra whitespace before colon
Bram Moolenaar <Bram@vim.org>
parents: 25124
diff changeset
2088 echo n
18b31f0a4bb5 patch 8.2.3111: Vim9: confusing error with extra whitespace before colon
Bram Moolenaar <Bram@vim.org>
parents: 25124
diff changeset
2089 endfor
18b31f0a4bb5 patch 8.2.3111: Vim9: confusing error with extra whitespace before colon
Bram Moolenaar <Bram@vim.org>
parents: 25124
diff changeset
2090 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2091 v9.CheckDefAndScriptFailure(lines, 'E1059:', 1)
25162
c44d6ac81c42 patch 8.2.3117: Vim9: type not properly checked in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25153
diff changeset
2092
c44d6ac81c42 patch 8.2.3117: Vim9: type not properly checked in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25153
diff changeset
2093 lines =<< trim END
c44d6ac81c42 patch 8.2.3117: Vim9: type not properly checked in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25153
diff changeset
2094 var d: dict<number> = {a: 1, b: 2}
c44d6ac81c42 patch 8.2.3117: Vim9: type not properly checked in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25153
diff changeset
2095 for [k: job, v: job] in d->items()
c44d6ac81c42 patch 8.2.3117: Vim9: type not properly checked in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25153
diff changeset
2096 echo k v
c44d6ac81c42 patch 8.2.3117: Vim9: type not properly checked in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25153
diff changeset
2097 endfor
c44d6ac81c42 patch 8.2.3117: Vim9: type not properly checked in for loop
Bram Moolenaar <Bram@vim.org>
parents: 25153
diff changeset
2098 END
27515
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2099 v9.CheckDefExecAndScriptFailure(lines, ['E1013: Argument 1: type mismatch, expected job but got string', 'E1012: Type mismatch; expected job but got string'], 2)
26238
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2100
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2101 lines =<< trim END
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2102 var i = 0
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2103 for i in [1, 2, 3]
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2104 echo i
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2105 endfor
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2106 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2107 v9.CheckDefExecAndScriptFailure(lines, ['E1017:', 'E1041:'])
26238
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2108
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2109 lines =<< trim END
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2110 var l = [0]
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2111 for l[0] in [1, 2, 3]
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2112 echo l[0]
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2113 endfor
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2114 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2115 v9.CheckDefExecAndScriptFailure(lines, ['E461:', 'E1017:'])
26238
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2116
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2117 lines =<< trim END
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2118 var d = {x: 0}
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2119 for d.x in [1, 2, 3]
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2120 echo d.x
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2121 endfor
14b4c778b61e patch 8.2.3650: Vim9: for loop variable can be a list member
Bram Moolenaar <Bram@vim.org>
parents: 26236
diff changeset
2122 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2123 v9.CheckDefExecAndScriptFailure(lines, ['E461:', 'E1017:'])
27515
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2124
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2125 lines =<< trim END
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2126 var l: list<dict<any>> = [{a: 1, b: 'x'}]
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2127 for item: dict<number> in l
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2128 echo item
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2129 endfor
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2130 END
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2131 v9.CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<number> but got dict<any>')
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2132
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2133 lines =<< trim END
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2134 var l: list<dict<any>> = [{n: 1}]
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2135 for item: dict<number> in l
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2136 item->extend({s: ''})
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2137 endfor
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2138 END
1aff400b819e patch 8.2.4285: Vim9: type of item in for loop not checked properly
Bram Moolenaar <Bram@vim.org>
parents: 27472
diff changeset
2139 v9.CheckDefExecAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>')
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
2140 enddef
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
2141
23068
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2142 def Test_for_loop_script_var()
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2143 # cannot use s:var in a :def function
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2144 v9.CheckDefFailure(['for s:var in range(3)', 'echo 3'], 'E1254:')
23068
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2145
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2146 # can use s:var in Vim9 script, with or without s:
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2147 var lines =<< trim END
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2148 vim9script
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2149 var total = 0
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2150 for s:var in [1, 2, 3]
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2151 total += s:var
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2152 endfor
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2153 assert_equal(6, total)
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2154
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2155 total = 0
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2156 for var in [1, 2, 3]
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2157 total += var
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2158 endfor
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2159 assert_equal(6, total)
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2160 END
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2161 enddef
2f034cb0a046 patch 8.2.2080: Vim9: no proper error message for using s:var in for loop
Bram Moolenaar <Bram@vim.org>
parents: 23066
diff changeset
2162
22975
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2163 def Test_for_loop_unpack()
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2164 var lines =<< trim END
23054
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2165 var result = []
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2166 for [v1, v2] in [[1, 2], [3, 4]]
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2167 result->add(v1)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2168 result->add(v2)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2169 endfor
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2170 assert_equal([1, 2, 3, 4], result)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2171
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2172 result = []
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2173 for [v1, v2; v3] in [[1, 2], [3, 4, 5, 6]]
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2174 result->add(v1)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2175 result->add(v2)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2176 result->add(v3)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2177 endfor
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2178 assert_equal([1, 2, [], 3, 4, [5, 6]], result)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2179
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2180 result = []
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2181 for [&ts, &sw] in [[1, 2], [3, 4]]
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2182 result->add(&ts)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2183 result->add(&sw)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2184 endfor
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2185 assert_equal([1, 2, 3, 4], result)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2186
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2187 var slist: list<string>
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2188 for [$LOOPVAR, @r, v:errmsg] in [['a', 'b', 'c'], ['d', 'e', 'f']]
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2189 slist->add($LOOPVAR)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2190 slist->add(@r)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2191 slist->add(v:errmsg)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2192 endfor
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2193 assert_equal(['a', 'b', 'c', 'd', 'e', 'f'], slist)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2194
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2195 slist = []
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2196 for [g:globalvar, b:bufvar, w:winvar, t:tabvar] in [['global', 'buf', 'win', 'tab'], ['1', '2', '3', '4']]
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2197 slist->add(g:globalvar)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2198 slist->add(b:bufvar)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2199 slist->add(w:winvar)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2200 slist->add(t:tabvar)
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2201 endfor
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2202 assert_equal(['global', 'buf', 'win', 'tab', '1', '2', '3', '4'], slist)
23084
49c9aa9e40d4 patch 8.2.2088: Vim9: script test sometimes fails
Bram Moolenaar <Bram@vim.org>
parents: 23072
diff changeset
2203 unlet! g:globalvar b:bufvar w:winvar t:tabvar
24679
80422f66978a patch 8.2.2878: Vim9: for loop list unpack only allows for one "_"
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
2204
80422f66978a patch 8.2.2878: Vim9: for loop list unpack only allows for one "_"
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
2205 var res = []
80422f66978a patch 8.2.2878: Vim9: for loop list unpack only allows for one "_"
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
2206 for [_, n, _] in [[1, 2, 3], [4, 5, 6]]
80422f66978a patch 8.2.2878: Vim9: for loop list unpack only allows for one "_"
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
2207 res->add(n)
80422f66978a patch 8.2.2878: Vim9: for loop list unpack only allows for one "_"
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
2208 endfor
80422f66978a patch 8.2.2878: Vim9: for loop list unpack only allows for one "_"
Bram Moolenaar <Bram@vim.org>
parents: 24555
diff changeset
2209 assert_equal([2, 5], res)
23054
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2210 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2211 v9.CheckDefAndScriptSuccess(lines)
23054
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2212
df0548b649c1 patch 8.2.2073: Vim9: for with unpack only works for local variables
Bram Moolenaar <Bram@vim.org>
parents: 22975
diff changeset
2213 lines =<< trim END
22975
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2214 for [v1, v2] in [[1, 2, 3], [3, 4]]
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2215 echo v1 v2
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2216 endfor
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2217 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2218 v9.CheckDefExecFailure(lines, 'E710:', 1)
22975
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2219
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2220 lines =<< trim END
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2221 for [v1, v2] in [[1], [3, 4]]
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2222 echo v1 v2
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2223 endfor
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2224 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2225 v9.CheckDefExecFailure(lines, 'E711:', 1)
22975
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2226
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2227 lines =<< trim END
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2228 for [v1, v1] in [[1, 2], [3, 4]]
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2229 echo v1
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2230 endfor
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2231 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2232 v9.CheckDefExecFailure(lines, 'E1017:', 1)
22975
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2233 enddef
a943b175586a patch 8.2.2034: Vim9: list unpack in for statement not compiled yet
Bram Moolenaar <Bram@vim.org>
parents: 22936
diff changeset
2234
23927
5e5780e3f75d patch 8.2.2506: Vim9: :continue does not work correctly in a :try block
Bram Moolenaar <Bram@vim.org>
parents: 23921
diff changeset
2235 def Test_for_loop_with_try_continue()
24438
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2236 var lines =<< trim END
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2237 var looped = 0
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2238 var cleanup = 0
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2239 for i in range(3)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2240 looped += 1
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2241 try
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2242 eval [][0]
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2243 catch
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2244 continue
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2245 finally
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2246 cleanup += 1
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2247 endtry
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2248 endfor
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2249 assert_equal(3, looped)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2250 assert_equal(3, cleanup)
5c6ccab68d1e patch 8.2.2759: Vim9: for loop infers type of loop variable
Bram Moolenaar <Bram@vim.org>
parents: 24418
diff changeset
2251 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2252 v9.CheckDefAndScriptSuccess(lines)
23927
5e5780e3f75d patch 8.2.2506: Vim9: :continue does not work correctly in a :try block
Bram Moolenaar <Bram@vim.org>
parents: 23921
diff changeset
2253 enddef
5e5780e3f75d patch 8.2.2506: Vim9: :continue does not work correctly in a :try block
Bram Moolenaar <Bram@vim.org>
parents: 23921
diff changeset
2254
25650
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2255 def Test_while_skipped_block()
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2256 # test skipped blocks at outside of function
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2257 var lines =<< trim END
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2258 var result = []
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2259 var n = 0
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2260 if true
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2261 n = 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2262 while n < 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2263 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2264 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2265 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2266 else
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2267 n = 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2268 while n < 5
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2269 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2270 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2271 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2272 endif
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2273 assert_equal([1, 2], result)
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2274
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2275 result = []
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2276 if false
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2277 n = 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2278 while n < 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2279 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2280 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2281 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2282 else
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2283 n = 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2284 while n < 5
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2285 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2286 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2287 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2288 endif
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2289 assert_equal([3, 4], result)
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2290 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2291 v9.CheckDefAndScriptSuccess(lines)
25650
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2292
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2293 # test skipped blocks at inside of function
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2294 lines =<< trim END
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2295 def DefTrue()
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2296 var result = []
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2297 var n = 0
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2298 if true
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2299 n = 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2300 while n < 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2301 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2302 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2303 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2304 else
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2305 n = 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2306 while n < 5
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2307 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2308 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2309 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2310 endif
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2311 assert_equal([1, 2], result)
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2312 enddef
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2313 DefTrue()
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2314
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2315 def DefFalse()
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2316 var result = []
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2317 var n = 0
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2318 if false
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2319 n = 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2320 while n < 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2321 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2322 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2323 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2324 else
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2325 n = 3
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2326 while n < 5
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2327 result += [n]
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2328 n += 1
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2329 endwhile
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2330 endif
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2331 assert_equal([3, 4], result)
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2332 enddef
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2333 DefFalse()
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2334 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2335 v9.CheckDefAndScriptSuccess(lines)
25650
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2336 enddef
6ed39aa92cb9 patch 8.2.3361: Vim9: crash with nested :while
Bram Moolenaar <Bram@vim.org>
parents: 25634
diff changeset
2337
19593
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2338 def Test_while_loop()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2339 var result = ''
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2340 var cnt = 0
19593
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2341 while cnt < 555
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2342 if cnt == 3
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2343 break
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2344 endif
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2345 cnt += 1
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2346 if cnt == 2
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2347 continue
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2348 endif
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2349 result ..= cnt .. '_'
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2350 endwhile
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2351 assert_equal('1_3_', result)
23884
00e904bdb8a5 patch 8.2.2484: Vim9: Cannot use a comment starting with #{
Bram Moolenaar <Bram@vim.org>
parents: 23882
diff changeset
2352
00e904bdb8a5 patch 8.2.2484: Vim9: Cannot use a comment starting with #{
Bram Moolenaar <Bram@vim.org>
parents: 23882
diff changeset
2353 var s = ''
24158
93e69703a290 patch 8.2.2620: Vim9: Using #{ for a dictionary gives strange errors
Bram Moolenaar <Bram@vim.org>
parents: 24150
diff changeset
2354 while s == 'x' # {comment}
23884
00e904bdb8a5 patch 8.2.2484: Vim9: Cannot use a comment starting with #{
Bram Moolenaar <Bram@vim.org>
parents: 23882
diff changeset
2355 endwhile
19593
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2356 enddef
043989a2f449 patch 8.2.0353: Vim9: while loop not tested
Bram Moolenaar <Bram@vim.org>
parents: 19585
diff changeset
2357
26236
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2358 def Test_while_loop_in_script()
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2359 var lines =<< trim END
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2360 vim9script
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2361 var result = ''
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2362 var cnt = 0
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2363 while cnt < 3
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2364 var s = 'v' .. cnt
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2365 result ..= s
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2366 cnt += 1
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2367 endwhile
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2368 assert_equal('v0v1v2', result)
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2369 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2370 v9.CheckScriptSuccess(lines)
26236
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2371 enddef
9e6ddd7b91cd patch 8.2.3649: Vim9: error for variable declared in while loop
Bram Moolenaar <Bram@vim.org>
parents: 26211
diff changeset
2372
19892
5feb426d2ea1 patch 8.2.0502: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19890
diff changeset
2373 def Test_while_loop_fails()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2374 v9.CheckDefFailure(['while xxx'], 'E1001:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2375 v9.CheckDefFailure(['endwhile'], 'E588:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2376 v9.CheckDefFailure(['continue'], 'E586:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2377 v9.CheckDefFailure(['if true', 'continue'], 'E586:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2378 v9.CheckDefFailure(['break'], 'E587:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2379 v9.CheckDefFailure(['if true', 'break'], 'E587:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2380 v9.CheckDefFailure(['while 1', 'echo 3'], 'E170:')
23882
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
2381
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
2382 var lines =<< trim END
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
2383 var s = ''
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
2384 while s = ''
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
2385 endwhile
a4df35126d9c patch 8.2.2483: Vim9: type error for misformed expression
Bram Moolenaar <Bram@vim.org>
parents: 23827
diff changeset
2386 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2387 v9.CheckDefFailure(lines, 'E488:')
19862
846fbbacce3a patch 8.2.0487: Vim9: compiling not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19860
diff changeset
2388 enddef
846fbbacce3a patch 8.2.0487: Vim9: compiling not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19860
diff changeset
2389
19730
fe8ba2f82f59 patch 8.2.0421: interrupting with CTRL-C does not always work
Bram Moolenaar <Bram@vim.org>
parents: 19728
diff changeset
2390 def Test_interrupt_loop()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2391 var caught = false
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2392 var x = 0
19736
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2393 try
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2394 while 1
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2395 x += 1
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2396 if x == 100
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2397 feedkeys("\<C-C>", 'Lt')
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2398 endif
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2399 endwhile
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2400 catch
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2401 caught = true
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2402 assert_equal(100, x)
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2403 endtry
4174c4da6ff7 patch 8.2.0424: checking for wrong return value
Bram Moolenaar <Bram@vim.org>
parents: 19730
diff changeset
2404 assert_true(caught, 'should have caught an exception')
21987
c33cec63cf53 patch 8.2.1543: Vim9: test with invalid SID is skipped in the GUI
Bram Moolenaar <Bram@vim.org>
parents: 21985
diff changeset
2405 # consume the CTRL-C
c33cec63cf53 patch 8.2.1543: Vim9: test with invalid SID is skipped in the GUI
Bram Moolenaar <Bram@vim.org>
parents: 21985
diff changeset
2406 getchar(0)
19730
fe8ba2f82f59 patch 8.2.0421: interrupting with CTRL-C does not always work
Bram Moolenaar <Bram@vim.org>
parents: 19728
diff changeset
2407 enddef
19726
ad37a198a708 patch 8.2.0419: various memory leaks in Vim9 script code
Bram Moolenaar <Bram@vim.org>
parents: 19623
diff changeset
2408
19999
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2409 def Test_automatic_line_continuation()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2410 var mylist = [
19999
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2411 'one',
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2412 'two',
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2413 'three',
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
2414 ] # comment
19999
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2415 assert_equal(['one', 'two', 'three'], mylist)
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2416
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2417 var mydict = {
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2418 ['one']: 1,
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2419 ['two']: 2,
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2420 ['three']:
19999
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2421 3,
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
2422 } # comment
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2423 assert_equal({one: 1, two: 2, three: 3}, mydict)
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2424 mydict = {
20023
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2425 one: 1, # comment
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2426 two: # comment
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2427 2, # comment
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2428 three: 3 # comment
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2429 }
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2430 assert_equal({one: 1, two: 2, three: 3}, mydict)
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2431 mydict = {
20023
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2432 one: 1,
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2433 two:
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2434 2,
c85d4e173cc9 patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents: 20019
diff changeset
2435 three: 3
19999
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2436 }
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
2437 assert_equal({one: 1, two: 2, three: 3}, mydict)
20011
628011800942 patch 8.2.0561: Vim9: cannot split function call in multiple lines
Bram Moolenaar <Bram@vim.org>
parents: 19999
diff changeset
2438
628011800942 patch 8.2.0561: Vim9: cannot split function call in multiple lines
Bram Moolenaar <Bram@vim.org>
parents: 19999
diff changeset
2439 assert_equal(
628011800942 patch 8.2.0561: Vim9: cannot split function call in multiple lines
Bram Moolenaar <Bram@vim.org>
parents: 19999
diff changeset
2440 ['one', 'two', 'three'],
628011800942 patch 8.2.0561: Vim9: cannot split function call in multiple lines
Bram Moolenaar <Bram@vim.org>
parents: 19999
diff changeset
2441 split('one two three')
628011800942 patch 8.2.0561: Vim9: cannot split function call in multiple lines
Bram Moolenaar <Bram@vim.org>
parents: 19999
diff changeset
2442 )
19999
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2443 enddef
844c7646f61b patch 8.2.0555: Vim9: line continuation is not always needed
Bram Moolenaar <Bram@vim.org>
parents: 19962
diff changeset
2444
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2445 def Test_vim9_comment()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2446 v9.CheckScriptSuccess([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2447 'vim9script',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2448 '# something',
23179
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2449 '#something',
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2450 '#{something',
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2451 ])
23179
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2452
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2453 split Xfile
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2454 v9.CheckScriptSuccess([
23179
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2455 'vim9script',
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2456 'edit #something',
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2457 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2458 v9.CheckScriptSuccess([
23179
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2459 'vim9script',
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2460 'edit #{something',
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2461 ])
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2462 close
821701ecbde7 patch 8.2.2135: Vim9: #{ still seen as start of dict in some places
Bram Moolenaar <Bram@vim.org>
parents: 23162
diff changeset
2463
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2464 v9.CheckScriptFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2465 'vim9script',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2466 ':# something',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2467 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2468 v9.CheckScriptFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2469 '# something',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2470 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2471 v9.CheckScriptFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2472 ':# something',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2473 ], 'E488:')
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2474
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2475 { # block start
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2476 } # block end
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2477 v9.CheckDefFailure([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2478 '{# comment',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2479 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2480 v9.CheckDefFailure([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2481 '{',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2482 '}# comment',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2483 ], 'E488:')
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2484
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2485 echo "yes" # comment
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2486 v9.CheckDefFailure([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2487 'echo "yes"# comment',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2488 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2489 v9.CheckScriptSuccess([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2490 'vim9script',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2491 'echo "yes" # something',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2492 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2493 v9.CheckScriptFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2494 'vim9script',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2495 'echo "yes"# something',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2496 ], 'E121:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2497 v9.CheckScriptFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2498 'vim9script',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2499 'echo# something',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2500 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2501 v9.CheckScriptFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2502 'echo "yes" # something',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2503 ], 'E121:')
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2504
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2505 exe "echo" # comment
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2506 v9.CheckDefFailure([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2507 'exe "echo"# comment',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2508 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2509 v9.CheckScriptSuccess([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2510 'vim9script',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2511 'exe "echo" # something',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2512 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2513 v9.CheckScriptFailure([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2514 'vim9script',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2515 'exe "echo"# something',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2516 ], 'E121:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2517 v9.CheckScriptFailure([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2518 'vim9script',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2519 'exe# something',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2520 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2521 v9.CheckScriptFailure([
20061
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2522 'exe "echo" # something',
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2523 ], 'E121:')
6e6a75800884 patch 8.2.0586: Vim9: # comment not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 20059
diff changeset
2524
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2525 v9.CheckDefFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2526 'try# comment',
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2527 ' echo "yes"',
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2528 'catch',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2529 'endtry',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2530 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2531 v9.CheckScriptFailure([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2532 'vim9script',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2533 'try# comment',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2534 'echo "yes"',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2535 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2536 v9.CheckDefFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2537 'try',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2538 ' throw#comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2539 'catch',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2540 'endtry',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2541 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2542 v9.CheckDefFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2543 'try',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2544 ' throw "yes"#comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2545 'catch',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2546 'endtry',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2547 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2548 v9.CheckDefFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2549 'try',
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2550 ' echo "yes"',
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2551 'catch# comment',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2552 'endtry',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2553 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2554 v9.CheckScriptFailure([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2555 'vim9script',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2556 'try',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2557 ' echo "yes"',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2558 'catch# comment',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2559 'endtry',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2560 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2561 v9.CheckDefFailure([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2562 'try',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2563 ' echo "yes"',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2564 'catch /pat/# comment',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2565 'endtry',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2566 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2567 v9.CheckDefFailure([
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2568 'try',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2569 'echo "yes"',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2570 'catch',
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2571 'endtry# comment',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2572 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2573 v9.CheckScriptFailure([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2574 'vim9script',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2575 'try',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2576 ' echo "yes"',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2577 'catch',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2578 'endtry# comment',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2579 ], 'E1144:')
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2580
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2581 v9.CheckScriptSuccess([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2582 'vim9script',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2583 'hi # comment',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2584 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2585 v9.CheckScriptFailure([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2586 'vim9script',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2587 'hi# comment',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2588 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2589 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2590 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2591 'hi Search # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2592 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2593 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2594 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2595 'hi Search# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2596 ], 'E416:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2597 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2598 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2599 'hi link This Search # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2600 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2601 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2602 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2603 'hi link This That# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2604 ], 'E413:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2605 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2606 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2607 'hi clear This # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2608 'hi clear # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2609 ])
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
2610 # not tested, because it doesn't give an error but a warning:
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
2611 # hi clear This# comment',
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2612 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2613 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2614 'hi clear# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2615 ], 'E416:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2616
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2617 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2618 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2619 'hi Group term=bold',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2620 'match Group /todo/ # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2621 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2622 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2623 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2624 'hi Group term=bold',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2625 'match Group /todo/# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2626 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2627 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2628 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2629 'match # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2630 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2631 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2632 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2633 'match# comment',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2634 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2635 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2636 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2637 'match none # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2638 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2639 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2640 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2641 'match none# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2642 ], 'E475:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2643
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2644 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2645 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2646 'menutrans clear # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2647 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2648 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2649 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2650 'menutrans clear# comment text',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2651 ], 'E474:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2652
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2653 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2654 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2655 'syntax clear # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2656 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2657 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2658 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2659 'syntax clear# comment text',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2660 ], 'E28:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2661 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2662 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2663 'syntax keyword Word some',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2664 'syntax clear Word # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2665 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2666 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2667 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2668 'syntax keyword Word some',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2669 'syntax clear Word# comment text',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2670 ], 'E28:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2671
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2672 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2673 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2674 'syntax list # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2675 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2676 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2677 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2678 'syntax list# comment text',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2679 ], 'E28:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2680
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2681 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2682 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2683 'syntax match Word /pat/ oneline # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2684 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2685 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2686 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2687 'syntax match Word /pat/ oneline# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2688 ], 'E475:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2689
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2690 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2691 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2692 'syntax keyword Word word # comm[ent',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2693 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2694 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2695 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2696 'syntax keyword Word word# comm[ent',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2697 ], 'E789:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2698
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2699 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2700 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2701 'syntax match Word /pat/ # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2702 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2703 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2704 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2705 'syntax match Word /pat/# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2706 ], 'E402:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2707
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2708 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2709 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2710 'syntax match Word /pat/ contains=Something # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2711 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2712 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2713 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2714 'syntax match Word /pat/ contains=Something# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2715 ], 'E475:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2716 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2717 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2718 'syntax match Word /pat/ contains= # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2719 ], 'E406:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2720 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2721 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2722 'syntax match Word /pat/ contains=# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2723 ], 'E475:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2724
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2725 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2726 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2727 'syntax region Word start=/pat/ end=/pat/ # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2728 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2729 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2730 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2731 'syntax region Word start=/pat/ end=/pat/# comment',
21375
92e2ed2a2778 patch 8.2.1238: Vim9: a few remaining errors not caught by try/catch
Bram Moolenaar <Bram@vim.org>
parents: 21371
diff changeset
2732 ], 'E402:')
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2733
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2734 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2735 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2736 'syntax sync # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2737 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2738 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2739 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2740 'syntax sync# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2741 ], 'E404:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2742 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2743 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2744 'syntax sync ccomment # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2745 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2746 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2747 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2748 'syntax sync ccomment# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2749 ], 'E404:')
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2750
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2751 v9.CheckScriptSuccess([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2752 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2753 'syntax cluster Some contains=Word # comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2754 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2755 v9.CheckScriptFailure([
20116
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2756 'vim9script',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2757 'syntax cluster Some contains=Word# comment',
513c62184ed8 patch 8.2.0613: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20113
diff changeset
2758 ], 'E475:')
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2759
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2760 v9.CheckScriptSuccess([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2761 'vim9script',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2762 'command Echo echo # comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2763 'command Echo # comment',
23092
c713358da074 patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents: 23084
diff changeset
2764 'delcommand Echo',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2765 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2766 v9.CheckScriptFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2767 'vim9script',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2768 'command Echo echo# comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2769 'Echo',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2770 ], 'E1144:')
23092
c713358da074 patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents: 23084
diff changeset
2771 delcommand Echo
23162
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2772
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2773 var curdir = getcwd()
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2774 v9.CheckScriptSuccess([
23162
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2775 'command Echo cd " comment',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2776 'Echo',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2777 'delcommand Echo',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2778 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2779 v9.CheckScriptSuccess([
23247
f2d05fb28e54 patch 8.2.2169: Vim9: test leaves file behind
Bram Moolenaar <Bram@vim.org>
parents: 23237
diff changeset
2780 'vim9script',
23162
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2781 'command Echo cd # comment',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2782 'Echo',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2783 'delcommand Echo',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2784 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2785 v9.CheckScriptFailure([
23162
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2786 'vim9script',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2787 'command Echo cd " comment',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2788 'Echo',
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2789 ], 'E344:')
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2790 delcommand Echo
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2791 chdir(curdir)
c923f1888a77 patch 8.2.2127: Vim9: executing user command from Vim9 script not tested
Bram Moolenaar <Bram@vim.org>
parents: 23152
diff changeset
2792
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2793 v9.CheckScriptFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2794 'vim9script',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2795 'command Echo# comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2796 ], 'E182:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2797 v9.CheckScriptFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2798 'vim9script',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2799 'command Echo echo',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2800 'command Echo# comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2801 ], 'E182:')
23092
c713358da074 patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents: 23084
diff changeset
2802 delcommand Echo
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2803
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2804 v9.CheckScriptSuccess([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2805 'vim9script',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2806 'function # comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2807 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2808 v9.CheckScriptFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2809 'vim9script',
21528
e0aa9b81f6a9 patch 8.2.1314: Vim9: rule for comment after :function is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21526
diff changeset
2810 'function " comment',
e0aa9b81f6a9 patch 8.2.1314: Vim9: rule for comment after :function is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21526
diff changeset
2811 ], 'E129:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2812 v9.CheckScriptFailure([
21528
e0aa9b81f6a9 patch 8.2.1314: Vim9: rule for comment after :function is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21526
diff changeset
2813 'vim9script',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2814 'function# comment',
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2815 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2816 v9.CheckScriptSuccess([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2817 'vim9script',
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2818 'import "./vim9.vim" as v9',
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2819 'function v9.CheckScriptSuccess # comment',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2820 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2821 v9.CheckScriptFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2822 'vim9script',
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2823 'import "./vim9.vim" as v9',
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2824 'function v9.CheckScriptSuccess# comment',
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2825 ], 'E1048: Item not found in script: CheckScriptSuccess#')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2826
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2827 v9.CheckScriptSuccess([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2828 'vim9script',
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
2829 'func g:DeleteMeA()',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2830 'endfunc',
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
2831 'delfunction g:DeleteMeA # comment',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2832 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2833 v9.CheckScriptFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2834 'vim9script',
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
2835 'func g:DeleteMeB()',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2836 'endfunc',
20189
63cc54100ae4 patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents: 20170
diff changeset
2837 'delfunction g:DeleteMeB# comment',
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2838 ], 'E488:')
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2839
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2840 v9.CheckScriptSuccess([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2841 'vim9script',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2842 'call execute("ls") # comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2843 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2844 v9.CheckScriptFailure([
20138
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2845 'vim9script',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2846 'call execute("ls")# comment',
d0a9766167ab patch 8.2.0624: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20116
diff changeset
2847 ], 'E488:')
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2848
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2849 v9.CheckScriptFailure([
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2850 'def Test() " comment',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2851 'enddef',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2852 ], 'E488:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2853 v9.CheckScriptFailure([
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2854 'vim9script',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2855 'def Test() " comment',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2856 'enddef',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2857 ], 'E488:')
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2858
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2859 v9.CheckScriptSuccess([
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2860 'func Test() " comment',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2861 'endfunc',
23092
c713358da074 patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents: 23084
diff changeset
2862 'delfunc Test',
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2863 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2864 v9.CheckScriptSuccess([
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2865 'vim9script',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2866 'func Test() " comment',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2867 'endfunc',
21528
e0aa9b81f6a9 patch 8.2.1314: Vim9: rule for comment after :function is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21526
diff changeset
2868 ])
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2869
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2870 v9.CheckScriptSuccess([
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2871 'def Test() # comment',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2872 'enddef',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2873 ])
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2874 v9.CheckScriptFailure([
21435
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2875 'func Test() # comment',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2876 'endfunc',
8ec9e2b54ce7 patch 8.2.1268: Vim9: no error for using double quote comment
Bram Moolenaar <Bram@vim.org>
parents: 21413
diff changeset
2877 ], 'E488:')
24774
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2878
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2879 var lines =<< trim END
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2880 vim9script
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2881 syn region Text
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2882 \ start='foo'
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2883 #\ comment
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2884 \ end='bar'
24786
524120691c3d patch 8.2.2931: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24774
diff changeset
2885 syn region Text start='foo'
524120691c3d patch 8.2.2931: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24774
diff changeset
2886 #\ comment
524120691c3d patch 8.2.2931: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24774
diff changeset
2887 \ end='bar'
24774
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2888 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2889 v9.CheckScriptSuccess(lines)
24774
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2890
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2891 lines =<< trim END
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2892 vim9script
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2893 syn region Text
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2894 \ start='foo'
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2895 "\ comment
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2896 \ end='bar'
8bf9726097d8 patch 8.2.2925: Vim9: line continuation comment uses legacy syntax
Bram Moolenaar <Bram@vim.org>
parents: 24699
diff changeset
2897 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2898 v9.CheckScriptFailure(lines, 'E399:')
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2899 enddef
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2900
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2901 def Test_vim9_comment_gui()
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2902 CheckCanRunGui
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2903
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2904 v9.CheckScriptFailure([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2905 'vim9script',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2906 'gui#comment'
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
2907 ], 'E1144:')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2908 v9.CheckScriptFailure([
20113
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2909 'vim9script',
2c23053c654a patch 8.2.0612: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20111
diff changeset
2910 'gui -f#comment'
25654
ef38fc02faaa patch 8.2.3363: when :edit reuses the current buffer the alternate file is set
Bram Moolenaar <Bram@vim.org>
parents: 25650
diff changeset
2911 ], 'E194:')
20059
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2912 enddef
de756b3f4dee patch 8.2.0585: Vim9: # comment not recognized after :vim9script
Bram Moolenaar <Bram@vim.org>
parents: 20055
diff changeset
2913
20079
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2914 def Test_vim9_comment_not_compiled()
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
2915 au TabEnter *.vim g:entered = 1
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
2916 au TabEnter *.x g:entered = 2
20079
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2917
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2918 edit test.vim
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2919 doautocmd TabEnter #comment
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2920 assert_equal(1, g:entered)
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2921
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2922 doautocmd TabEnter f.x
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2923 assert_equal(2, g:entered)
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2924
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2925 g:entered = 0
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2926 doautocmd TabEnter f.x #comment
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2927 assert_equal(2, g:entered)
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2928
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2929 assert_fails('doautocmd Syntax#comment', 'E216:')
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2930
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2931 au! TabEnter
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
2932 unlet g:entered
20091
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2933
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2934 v9.CheckScriptSuccess([
20091
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2935 'vim9script',
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
2936 'g:var = 123',
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2937 'b:var = 456',
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2938 'w:var = 777',
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2939 't:var = 888',
20091
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2940 'unlet g:var w:var # something',
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2941 ])
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2942
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2943 v9.CheckScriptFailure([
20091
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2944 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2945 'let var = 123',
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2946 ], 'E1126: Cannot use :let in Vim9 script')
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2947
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2948 v9.CheckScriptFailure([
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2949 'vim9script',
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2950 'var g:var = 123',
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2951 ], 'E1016: Cannot declare a global variable:')
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2952
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2953 v9.CheckScriptFailure([
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2954 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2955 'var b:var = 123',
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2956 ], 'E1016: Cannot declare a buffer variable:')
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2957
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2958 v9.CheckScriptFailure([
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2959 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2960 'var w:var = 123',
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2961 ], 'E1016: Cannot declare a window variable:')
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2962
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2963 v9.CheckScriptFailure([
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2964 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2965 'var t:var = 123',
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2966 ], 'E1016: Cannot declare a tab variable:')
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2967
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2968 v9.CheckScriptFailure([
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2969 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2970 'var v:version = 123',
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2971 ], 'E1016: Cannot declare a v: variable:')
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2972
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2973 v9.CheckScriptFailure([
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2974 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
2975 'var $VARIABLE = "text"',
20953
6b4b887a12f0 patch 8.2.1028: Vim9: no error for declaring buffer, window, etc. variable
Bram Moolenaar <Bram@vim.org>
parents: 20945
diff changeset
2976 ], 'E1016: Cannot declare an environment variable:')
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
2977
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2978 v9.CheckScriptFailure([
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
2979 'vim9script',
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
2980 'g:var = 123',
20397
c225be44692a patch 8.2.0753: Vim9: expressions are evaluated in the discovery phase
Bram Moolenaar <Bram@vim.org>
parents: 20351
diff changeset
2981 'unlet g:var# comment1',
20091
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2982 ], 'E108:')
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2983
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2984 v9.CheckScriptFailure([
20091
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2985 'let g:var = 123',
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2986 'unlet g:var # something',
a64c16ff98b8 patch 8.2.0601: Vim9: :unlet is not compiled
Bram Moolenaar <Bram@vim.org>
parents: 20089
diff changeset
2987 ], 'E488:')
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2988
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2989 v9.CheckScriptSuccess([
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2990 'vim9script',
20397
c225be44692a patch 8.2.0753: Vim9: expressions are evaluated in the discovery phase
Bram Moolenaar <Bram@vim.org>
parents: 20351
diff changeset
2991 'if 1 # comment2',
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2992 ' echo "yes"',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2993 'elseif 2 #comment',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2994 ' echo "no"',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2995 'endif',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2996 ])
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2997
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
2998 v9.CheckScriptFailure([
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
2999 'vim9script',
20397
c225be44692a patch 8.2.0753: Vim9: expressions are evaluated in the discovery phase
Bram Moolenaar <Bram@vim.org>
parents: 20351
diff changeset
3000 'if 1# comment3',
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3001 ' echo "yes"',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3002 'endif',
24958
21ec48d542a8 patch 8.2.3016: confusing error when expression is followed by comma
Bram Moolenaar <Bram@vim.org>
parents: 24934
diff changeset
3003 ], 'E488:')
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3004
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3005 v9.CheckScriptFailure([
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3006 'vim9script',
20397
c225be44692a patch 8.2.0753: Vim9: expressions are evaluated in the discovery phase
Bram Moolenaar <Bram@vim.org>
parents: 20351
diff changeset
3007 'if 0 # comment4',
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3008 ' echo "yes"',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3009 'elseif 2#comment',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3010 ' echo "no"',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3011 'endif',
24958
21ec48d542a8 patch 8.2.3016: confusing error when expression is followed by comma
Bram Moolenaar <Bram@vim.org>
parents: 24934
diff changeset
3012 ], 'E488:')
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3013
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3014 v9.CheckScriptSuccess([
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3015 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3016 'var v = 1 # comment5',
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3017 ])
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3018
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3019 v9.CheckScriptFailure([
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3020 'vim9script',
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3021 'var v = 1# comment6',
24958
21ec48d542a8 patch 8.2.3016: confusing error when expression is followed by comma
Bram Moolenaar <Bram@vim.org>
parents: 24934
diff changeset
3022 ], 'E488:')
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3023
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3024 v9.CheckScriptSuccess([
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3025 'vim9script',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3026 'new'
22147
d55008685870 patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
3027 'setline(1, ["# define pat", "last"])',
20982
bb49b5090a9c patch 8.2.1042: Vim9: cannot put an operator on the next line
Bram Moolenaar <Bram@vim.org>
parents: 20953
diff changeset
3028 ':$',
20111
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3029 'dsearch /pat/ #comment',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3030 'bwipe!',
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3031 ])
f40231487a49 patch 8.2.0611: Vim9: no check for space before #comment
Bram Moolenaar <Bram@vim.org>
parents: 20099
diff changeset
3032
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3033 v9.CheckScriptFailure([
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3034 'vim9script',
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3035 'new'
22147
d55008685870 patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
3036 'setline(1, ["# define pat", "last"])',
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3037 ':$',
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3038 'dsearch /pat/#comment',
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3039 'bwipe!',
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3040 ], 'E488:')
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3041
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3042 v9.CheckScriptFailure([
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3043 'vim9script',
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3044 'func! SomeFunc()',
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3045 ], 'E477:')
20079
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
3046 enddef
336483164ca6 patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
Bram Moolenaar <Bram@vim.org>
parents: 20061
diff changeset
3047
20351
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3048 def Test_finish()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3049 var lines =<< trim END
20351
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3050 vim9script
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
3051 g:res = 'one'
20351
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3052 if v:false | finish | endif
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
3053 g:res = 'two'
20351
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3054 finish
20945
0653b9b72091 patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents: 20921
diff changeset
3055 g:res = 'three'
20351
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3056 END
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3057 writefile(lines, 'Xfinished')
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3058 source Xfinished
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3059 assert_equal('two', g:res)
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3060
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3061 unlet g:res
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3062 delete('Xfinished')
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3063 enddef
680296770464 patch 8.2.0731: Vim9: parsing declarations continues after :finish
Bram Moolenaar <Bram@vim.org>
parents: 20349
diff changeset
3064
20399
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3065 def Test_forward_declaration()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3066 var lines =<< trim END
20399
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3067 vim9script
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3068 def GetValue(): string
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3069 return theVal
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3070 enddef
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3071 var theVal = 'something'
20528
489cb75c76b6 patch 8.2.0818: Vim9: using a discovery phase doesn't work well
Bram Moolenaar <Bram@vim.org>
parents: 20504
diff changeset
3072 g:initVal = GetValue()
20399
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3073 theVal = 'else'
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3074 g:laterVal = GetValue()
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3075 END
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3076 writefile(lines, 'Xforward')
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3077 source Xforward
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3078 assert_equal('something', g:initVal)
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3079 assert_equal('else', g:laterVal)
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3080
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3081 unlet g:initVal
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3082 unlet g:laterVal
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3083 delete('Xforward')
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3084 enddef
d1a54d2bd145 patch 8.2.0754: Vim9: No test for forward declaration
Bram Moolenaar <Bram@vim.org>
parents: 20397
diff changeset
3085
27690
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3086 def Test_declare_script_var_in_func()
24279
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3087 var lines =<< trim END
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3088 vim9script
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3089 func Declare()
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3090 let s:local = 123
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3091 endfunc
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3092 Declare()
27690
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3093 END
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3094 v9.CheckScriptFailure(lines, 'E1269:')
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3095 enddef
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3096
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3097 def Test_lock_script_var()
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3098 var lines =<< trim END
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3099 vim9script
fae9567b8024 patch 8.2.4371: Vim9: can create a script variable from a legacy function
Bram Moolenaar <Bram@vim.org>
parents: 27669
diff changeset
3100 var local = 123
24279
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3101 assert_equal(123, local)
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3102
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3103 var error: string
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3104 try
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3105 local = 'asdf'
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3106 catch
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3107 error = v:exception
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3108 endtry
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3109 assert_match('E1012: Type mismatch; expected number but got string', error)
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3110
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3111 lockvar local
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3112 try
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3113 local = 999
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3114 catch
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3115 error = v:exception
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3116 endtry
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3117 assert_match('E741: Value is locked: local', error)
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3118 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3119 v9.CheckScriptSuccess(lines)
24279
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3120 enddef
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3121
e3dbf2e58c6a patch 8.2.2680: Vim9: problem defining a script variable from legacy function
Bram Moolenaar <Bram@vim.org>
parents: 24234
diff changeset
3122
21801
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3123 func Test_vim9script_not_global()
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3124 " check that items defined in Vim9 script are script-local, not global
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3125 let vim9lines =<< trim END
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3126 vim9script
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3127 var name = 'local'
21801
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3128 func TheFunc()
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3129 echo 'local'
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3130 endfunc
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3131 def DefFunc()
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3132 echo 'local'
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3133 enddef
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3134 END
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3135 call writefile(vim9lines, 'Xvim9script.vim')
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3136 source Xvim9script.vim
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3137 try
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3138 echo g:var
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3139 assert_report('did not fail')
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3140 catch /E121:/
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3141 " caught
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3142 endtry
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3143 try
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3144 call TheFunc()
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3145 assert_report('did not fail')
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3146 catch /E117:/
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3147 " caught
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3148 endtry
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3149 try
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3150 call DefFunc()
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3151 assert_report('did not fail')
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3152 catch /E117:/
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3153 " caught
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3154 endtry
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3155
21987
c33cec63cf53 patch 8.2.1543: Vim9: test with invalid SID is skipped in the GUI
Bram Moolenaar <Bram@vim.org>
parents: 21985
diff changeset
3156 call delete('Xvim9script.vim')
21801
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3157 endfunc
1344d45ca6f2 patch 8.2.1450: Vim9: no check that script-local items don't become global
Bram Moolenaar <Bram@vim.org>
parents: 21791
diff changeset
3158
21150
951aad18b1af patch 8.2.1126: Vim9: using :copen causes an error
Bram Moolenaar <Bram@vim.org>
parents: 21146
diff changeset
3159 def Test_vim9_copen()
951aad18b1af patch 8.2.1126: Vim9: using :copen causes an error
Bram Moolenaar <Bram@vim.org>
parents: 21146
diff changeset
3160 # this was giving an error for setting w:quickfix_title
951aad18b1af patch 8.2.1126: Vim9: using :copen causes an error
Bram Moolenaar <Bram@vim.org>
parents: 21146
diff changeset
3161 copen
951aad18b1af patch 8.2.1126: Vim9: using :copen causes an error
Bram Moolenaar <Bram@vim.org>
parents: 21146
diff changeset
3162 quit
951aad18b1af patch 8.2.1126: Vim9: using :copen causes an error
Bram Moolenaar <Bram@vim.org>
parents: 21146
diff changeset
3163 enddef
951aad18b1af patch 8.2.1126: Vim9: using :copen causes an error
Bram Moolenaar <Bram@vim.org>
parents: 21146
diff changeset
3164
21907
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3165 def Test_script_var_in_autocmd()
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3166 # using a script variable from an autocommand, defined in a :def function in a
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3167 # legacy Vim script, cannot check the variable type.
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3168 var lines =<< trim END
21907
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3169 let s:counter = 1
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3170 def s:Func()
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3171 au! CursorHold
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3172 au CursorHold * s:counter += 1
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3173 enddef
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3174 call s:Func()
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3175 doau CursorHold
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3176 call assert_equal(2, s:counter)
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3177 au! CursorHold
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3178 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3179 v9.CheckScriptSuccess(lines)
21907
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3180 enddef
f4e21796f47d patch 8.2.1503: Vim9: error for autocmd defined in :def in legacy script
Bram Moolenaar <Bram@vim.org>
parents: 21905
diff changeset
3181
25260
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3182 def Test_error_in_autoload_script()
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3183 var save_rtp = &rtp
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3184 var dir = getcwd() .. '/Xruntime'
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3185 &rtp = dir
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3186 mkdir(dir .. '/autoload', 'p')
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3187
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3188 var lines =<< trim END
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3189 vim9script noclear
27472
55613f0d59bc patch 8.2.4264: Vim9: can use old style autoload function name
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
3190 export def Autoloaded()
25260
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3191 enddef
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3192 def Broken()
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3193 var x: any = ''
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3194 eval x != 0
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3195 enddef
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3196 Broken()
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3197 END
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3198 writefile(lines, dir .. '/autoload/script.vim')
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3199
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3200 lines =<< trim END
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3201 vim9script
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3202 def CallAutoloaded()
27472
55613f0d59bc patch 8.2.4264: Vim9: can use old style autoload function name
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
3203 script#Autoloaded()
25260
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3204 enddef
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3205
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3206 function Legacy()
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3207 try
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3208 call s:CallAutoloaded()
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3209 catch
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3210 call assert_match('E1030: Using a String as a Number', v:exception)
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3211 endtry
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3212 endfunction
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3213
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3214 Legacy()
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3215 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3216 v9.CheckScriptSuccess(lines)
25260
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3217
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3218 &rtp = save_rtp
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3219 delete(dir, 'rf')
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3220 enddef
a60895011da9 patch 8.2.3166: Vim9: nested autoload call error overruled by "Unknown error"
Bram Moolenaar <Bram@vim.org>
parents: 25230
diff changeset
3221
21979
a98211c3e14e patch 8.2.1539: using invalid script ID causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 21957
diff changeset
3222 def Test_invalid_sid()
a98211c3e14e patch 8.2.1539: using invalid script ID causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 21957
diff changeset
3223 assert_fails('func <SNR>1234_func', 'E123:')
21987
c33cec63cf53 patch 8.2.1543: Vim9: test with invalid SID is skipped in the GUI
Bram Moolenaar <Bram@vim.org>
parents: 21985
diff changeset
3224
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3225 if g:RunVim([], ['wq! Xdidit'], '+"func <SNR>1_func"')
22147
d55008685870 patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents: 22087
diff changeset
3226 assert_equal([], readfile('Xdidit'))
21979
a98211c3e14e patch 8.2.1539: using invalid script ID causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 21957
diff changeset
3227 endif
a98211c3e14e patch 8.2.1539: using invalid script ID causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 21957
diff changeset
3228 delete('Xdidit')
a98211c3e14e patch 8.2.1539: using invalid script ID causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 21957
diff changeset
3229 enddef
a98211c3e14e patch 8.2.1539: using invalid script ID causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 21957
diff changeset
3230
23152
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3231 def Test_restoring_cpo()
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3232 writefile(['vim9script', 'set nocp'], 'Xsourced')
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3233 writefile(['call writefile(["done"], "Xdone")', 'quit!'], 'Xclose')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3234 if g:RunVim([], [], '-u NONE +"set cpo+=a" -S Xsourced -S Xclose')
23152
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3235 assert_equal(['done'], readfile('Xdone'))
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3236 endif
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3237 delete('Xsourced')
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3238 delete('Xclose')
23247
f2d05fb28e54 patch 8.2.2169: Vim9: test leaves file behind
Bram Moolenaar <Bram@vim.org>
parents: 23237
diff changeset
3239 delete('Xdone')
23886
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3240
26745
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3241 writefile(['vim9script', 'g:cpoval = &cpo'], 'XanotherScript')
23886
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3242 set cpo=aABceFsMny>
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3243 edit XanotherScript
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3244 so %
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3245 assert_equal('aABceFsMny>', &cpo)
26745
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3246 assert_equal('aABceFs', g:cpoval)
23886
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3247 :1del
26745
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3248 setline(1, 'let g:cpoval = &cpo')
23886
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3249 w
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3250 so %
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3251 assert_equal('aABceFsMny>', &cpo)
26745
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3252 assert_equal('aABceFsMny>', g:cpoval)
23886
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3253
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3254 delete('XanotherScript')
eef0cffbdb94 patch 8.2.2485: when sourcing a script again the script version isn't reset
Bram Moolenaar <Bram@vim.org>
parents: 23884
diff changeset
3255 set cpo&vim
26745
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3256 unlet g:cpoval
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3257
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3258 if has('unix')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3259 # 'cpo' is not restored in main vimrc
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3260 var save_HOME = $HOME
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3261 $HOME = getcwd() .. '/Xhome'
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3262 mkdir('Xhome')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3263 var lines =<< trim END
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3264 vim9script
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3265 writefile(['before: ' .. &cpo], 'Xresult')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3266 set cpo+=M
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3267 writefile(['after: ' .. &cpo], 'Xresult', 'a')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3268 END
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3269 writefile(lines, 'Xhome/.vimrc')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3270
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3271 lines =<< trim END
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3272 call writefile(['later: ' .. &cpo], 'Xresult', 'a')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3273 END
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3274 writefile(lines, 'Xlegacy')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3275
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3276 lines =<< trim END
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3277 vim9script
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3278 call writefile(['vim9: ' .. &cpo], 'Xresult', 'a')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3279 qa
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3280 END
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3281 writefile(lines, 'Xvim9')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3282
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3283 var cmd = g:GetVimCommand() .. " -S Xlegacy -S Xvim9"
26745
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3284 cmd = substitute(cmd, '-u NONE', '', '')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3285 exe "silent !" .. cmd
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3286
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3287 assert_equal([
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3288 'before: aABceFs',
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3289 'after: aABceFsM',
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3290 'later: aABceFsM',
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3291 'vim9: aABceFs'], readfile('Xresult'))
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3292
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3293 $HOME = save_HOME
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3294 delete('Xhome', 'rf')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3295 delete('Xlegacy')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3296 delete('Xvim9')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3297 delete('Xresult')
dcd1c244e332 patch 8.2.3901: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script
Bram Moolenaar <Bram@vim.org>
parents: 26737
diff changeset
3298 endif
23152
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3299 enddef
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3300
24081
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3301 " Use :function so we can use Check commands
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3302 func Test_no_redraw_when_restoring_cpo()
24079
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3303 CheckScreendump
24081
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3304 CheckFeature timers
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3305
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3306 let lines =<< trim END
24079
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3307 vim9script
27472
55613f0d59bc patch 8.2.4264: Vim9: can use old style autoload function name
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
3308 export def Func()
24079
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3309 enddef
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3310 END
24081
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3311 call mkdir('Xdir/autoload', 'p')
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3312 call writefile(lines, 'Xdir/autoload/script.vim')
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3313
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3314 let lines =<< trim END
24079
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3315 vim9script
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3316 set cpo+=M
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3317 exe 'set rtp^=' .. getcwd() .. '/Xdir'
27472
55613f0d59bc patch 8.2.4264: Vim9: can use old style autoload function name
Bram Moolenaar <Bram@vim.org>
parents: 27457
diff changeset
3318 au CmdlineEnter : ++once timer_start(0, (_) => script#Func())
24079
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3319 setline(1, 'some text')
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3320 END
24081
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3321 call writefile(lines, 'XTest_redraw_cpo')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3322 let buf = g:RunVimInTerminal('-S XTest_redraw_cpo', {'rows': 6})
24081
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3323 call term_sendkeys(buf, "V:")
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3324 call VerifyScreenDump(buf, 'Test_vim9_no_redraw', {})
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3325
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3326 " clean up
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3327 call term_sendkeys(buf, "\<Esc>u")
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3328 call g:StopVimInTerminal(buf)
24081
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3329 call delete('XTest_redraw_cpo')
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3330 call delete('Xdir', 'rf')
7d28bac98927 patch 8.2.2582: Vim9: screendump test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 24079
diff changeset
3331 endfunc
24079
a9ff8368d35f patch 8.2.2581: Vim9: sourcing Vim9 script triggers a redraw
Bram Moolenaar <Bram@vim.org>
parents: 24077
diff changeset
3332
23152
1c94e4c9db00 patch 8.2.2122: Vim9: crash when sourcing vim9script early
Bram Moolenaar <Bram@vim.org>
parents: 23106
diff changeset
3333
22250
dd42235ed626 patch 8.2.1674: Vim9: internal error when using variable that was not set
Bram Moolenaar <Bram@vim.org>
parents: 22202
diff changeset
3334 def Test_unset_any_variable()
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3335 var lines =<< trim END
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3336 var name: any
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3337 assert_equal(0, name)
22250
dd42235ed626 patch 8.2.1674: Vim9: internal error when using variable that was not set
Bram Moolenaar <Bram@vim.org>
parents: 22202
diff changeset
3338 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3339 v9.CheckDefAndScriptSuccess(lines)
22250
dd42235ed626 patch 8.2.1674: Vim9: internal error when using variable that was not set
Bram Moolenaar <Bram@vim.org>
parents: 22202
diff changeset
3340 enddef
dd42235ed626 patch 8.2.1674: Vim9: internal error when using variable that was not set
Bram Moolenaar <Bram@vim.org>
parents: 22202
diff changeset
3341
22387
36f13f35bd78 patch 8.2.1742: test still fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22383
diff changeset
3342 func Test_define_func_at_command_line()
22383
82d92f6c756c patch 8.2.1740: test fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22381
diff changeset
3343 CheckRunVimInTerminal
82d92f6c756c patch 8.2.1740: test fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22381
diff changeset
3344
22387
36f13f35bd78 patch 8.2.1742: test still fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22383
diff changeset
3345 " call indirectly to avoid compilation error for missing functions
36f13f35bd78 patch 8.2.1742: test still fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22383
diff changeset
3346 call Run_Test_define_func_at_command_line()
36f13f35bd78 patch 8.2.1742: test still fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22383
diff changeset
3347 endfunc
36f13f35bd78 patch 8.2.1742: test still fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22383
diff changeset
3348
36f13f35bd78 patch 8.2.1742: test still fails without the terminal feature
Bram Moolenaar <Bram@vim.org>
parents: 22383
diff changeset
3349 def Run_Test_define_func_at_command_line()
22381
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3350 # run in a separate Vim instance to avoid the script context
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3351 var lines =<< trim END
22381
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3352 func CheckAndQuit()
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3353 call assert_fails('call Afunc()', 'E117: Unknown function: Bfunc')
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3354 call writefile(['errors: ' .. string(v:errors)], 'Xdidcmd')
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3355 endfunc
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3356 END
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3357 writefile([''], 'Xdidcmd')
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3358 writefile(lines, 'XcallFunc')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3359 var buf = g:RunVimInTerminal('-S XcallFunc', {rows: 6})
22381
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3360 # define Afunc() on the command line
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3361 term_sendkeys(buf, ":def Afunc()\<CR>Bfunc()\<CR>enddef\<CR>")
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3362 term_sendkeys(buf, ":call CheckAndQuit()\<CR>")
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3363 g:WaitForAssert(() => assert_equal(['errors: []'], readfile('Xdidcmd')))
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3364
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3365 call g:StopVimInTerminal(buf)
22381
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3366 delete('XcallFunc')
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3367 delete('Xdidcmd')
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3368 enddef
6fe9536694ff patch 8.2.1739: Vim9: crash when compiling a manually defined function
Bram Moolenaar <Bram@vim.org>
parents: 22351
diff changeset
3369
22551
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3370 def Test_script_var_scope()
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3371 var lines =<< trim END
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3372 vim9script
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3373 if true
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3374 if true
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3375 var one = 'one'
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3376 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3377 endif
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3378 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3379 endif
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3380 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3381 v9.CheckScriptFailure(lines, 'E121:', 7)
22551
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3382
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3383 lines =<< trim END
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3384 vim9script
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3385 if true
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3386 if false
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3387 var one = 'one'
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3388 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3389 else
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3390 var one = 'one'
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3391 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3392 endif
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3393 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3394 endif
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3395 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3396 v9.CheckScriptFailure(lines, 'E121:', 10)
22551
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3397
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3398 lines =<< trim END
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3399 vim9script
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3400 while true
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3401 var one = 'one'
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3402 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3403 break
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3404 endwhile
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3405 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3406 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3407 v9.CheckScriptFailure(lines, 'E121:', 7)
22551
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3408
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3409 lines =<< trim END
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3410 vim9script
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3411 for i in range(1)
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3412 var one = 'one'
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3413 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3414 endfor
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3415 echo one
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3416 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3417 v9.CheckScriptFailure(lines, 'E121:', 6)
22555
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3418
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3419 lines =<< trim END
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3420 vim9script
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3421 {
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3422 var one = 'one'
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3423 assert_equal('one', one)
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3424 }
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3425 assert_false(exists('one'))
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3426 assert_false(exists('s:one'))
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3427 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3428 v9.CheckScriptSuccess(lines)
22555
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3429
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3430 lines =<< trim END
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3431 vim9script
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3432 {
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3433 var one = 'one'
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3434 echo one
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3435 }
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3436 echo one
7d25264c246c patch 8.2.1826: Vim9: cannot use a {} block at script level
Bram Moolenaar <Bram@vim.org>
parents: 22551
diff changeset
3437 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3438 v9.CheckScriptFailure(lines, 'E121:', 6)
22551
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3439 enddef
86a115a80262 patch 8.2.1824: Vim9: variables at the script level escape their scope
Bram Moolenaar <Bram@vim.org>
parents: 22529
diff changeset
3440
22621
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3441 def Test_catch_exception_in_callback()
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3442 var lines =<< trim END
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3443 vim9script
24400
62e978382fa0 patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 24398
diff changeset
3444 def Callback(...l: list<any>)
22621
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3445 try
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3446 var x: string
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3447 var y: string
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3448 # this error should be caught with CHECKLEN
26372
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26238
diff changeset
3449 var sl = ['']
f5727e2603f0 patch 8.2.3717: Vim9: error for constant list size is only given at runtime
Bram Moolenaar <Bram@vim.org>
parents: 26238
diff changeset
3450 [x, y] = sl
22621
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3451 catch
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3452 g:caught = 'yes'
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3453 endtry
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3454 enddef
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
3455 popup_menu('popup', {callback: Callback})
22621
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3456 feedkeys("\r", 'xt')
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3457 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3458 v9.CheckScriptSuccess(lines)
22621
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3459
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3460 unlet g:caught
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3461 enddef
576a69fc0066 patch 8.2.1859: Vim9: crash in unpack assignment
Bram Moolenaar <Bram@vim.org>
parents: 22612
diff changeset
3462
22810
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3463 def Test_no_unknown_error_after_error()
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3464 if !has('unix') || !has('job')
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3465 throw 'Skipped: not unix of missing +job feature'
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3466 endif
25846
8b0dad68e98a patch 8.2.3457: MS-Windows Vim9: test executed and fails
Bram Moolenaar <Bram@vim.org>
parents: 25755
diff changeset
3467 # FIXME: this check should not be needed
8b0dad68e98a patch 8.2.3457: MS-Windows Vim9: test executed and fails
Bram Moolenaar <Bram@vim.org>
parents: 25755
diff changeset
3468 if has('win32')
8b0dad68e98a patch 8.2.3457: MS-Windows Vim9: test executed and fails
Bram Moolenaar <Bram@vim.org>
parents: 25755
diff changeset
3469 throw 'Skipped: does not work on MS-Windows'
8b0dad68e98a patch 8.2.3457: MS-Windows Vim9: test executed and fails
Bram Moolenaar <Bram@vim.org>
parents: 25755
diff changeset
3470 endif
22810
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3471 var lines =<< trim END
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3472 vim9script
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3473 var source: list<number>
24400
62e978382fa0 patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 24398
diff changeset
3474 def Out_cb(...l: list<any>)
22810
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3475 eval [][0]
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3476 enddef
24400
62e978382fa0 patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 24398
diff changeset
3477 def Exit_cb(...l: list<any>)
22810
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3478 sleep 1m
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3479 source += l
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3480 enddef
23072
4b398a229b0b patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents: 23068
diff changeset
3481 var myjob = job_start('echo burp', {out_cb: Out_cb, exit_cb: Exit_cb, mode: 'raw'})
23268
65fd662b434d patch 8.2.2180: Vim9: test for error after error is flaky
Bram Moolenaar <Bram@vim.org>
parents: 23252
diff changeset
3482 while job_status(myjob) == 'run'
65fd662b434d patch 8.2.2180: Vim9: test for error after error is flaky
Bram Moolenaar <Bram@vim.org>
parents: 23252
diff changeset
3483 sleep 10m
65fd662b434d patch 8.2.2180: Vim9: test for error after error is flaky
Bram Moolenaar <Bram@vim.org>
parents: 23252
diff changeset
3484 endwhile
23790
e2ebd45d4db0 patch 8.2.2436: Vim9 script test is a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 23723
diff changeset
3485 # wait for Exit_cb() to be called
24418
baf4913fe21c patch 8.2.2749: Vim9: test for error can be a bit flaky
Bram Moolenaar <Bram@vim.org>
parents: 24400
diff changeset
3486 sleep 200m
22810
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3487 END
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3488 writefile(lines, 'Xdef')
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3489 assert_fails('so Xdef', ['E684:', 'E1012:'])
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3490 delete('Xdef')
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3491 enddef
2d05dd71aac3 patch 8.2.1953: Vim9: extra "unknown" error after other error
Bram Moolenaar <Bram@vim.org>
parents: 22732
diff changeset
3492
23056
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3493 def InvokeNormal()
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3494 exe "norm! :m+1\r"
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3495 enddef
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3496
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3497 def Test_invoke_normal_in_visual_mode()
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3498 xnoremap <F3> <Cmd>call <SID>InvokeNormal()<CR>
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3499 new
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3500 setline(1, ['aaa', 'bbb'])
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3501 feedkeys("V\<F3>", 'xt')
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3502 assert_equal(['bbb', 'aaa'], getline(1, 2))
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3503 xunmap <F3>
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3504 enddef
57b6427c18e4 patch 8.2.2074: Vim9: using :normal from Vim9 script can't handle range
Bram Moolenaar <Bram@vim.org>
parents: 23054
diff changeset
3505
23185
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23183
diff changeset
3506 def Test_white_space_after_command()
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23183
diff changeset
3507 var lines =<< trim END
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23183
diff changeset
3508 exit_cb: Func})
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23183
diff changeset
3509 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3510 v9.CheckDefAndScriptFailure(lines, 'E1144:', 1)
23342
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
3511
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
3512 lines =<< trim END
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
3513 e#
13572a262b15 patch 8.2.2214: ":e#" does not give a warning for missing white space
Bram Moolenaar <Bram@vim.org>
parents: 23330
diff changeset
3514 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3515 v9.CheckDefAndScriptFailure(lines, 'E1144:', 1)
23185
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23183
diff changeset
3516 enddef
055fa9db6f39 patch 8.2.2138: Vim9: "exit_cb" causes Vim to exit
Bram Moolenaar <Bram@vim.org>
parents: 23183
diff changeset
3517
23330
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3518 def Test_script_var_gone_when_sourced_twice()
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3519 var lines =<< trim END
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3520 vim9script
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3521 if exists('g:guard')
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3522 finish
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3523 endif
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3524 g:guard = 1
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3525 var name = 'thename'
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3526 def g:GetName(): string
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3527 return name
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3528 enddef
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3529 def g:SetName(arg: string)
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3530 name = arg
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3531 enddef
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3532 END
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3533 writefile(lines, 'XscriptTwice.vim')
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3534 so XscriptTwice.vim
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3535 assert_equal('thename', g:GetName())
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3536 g:SetName('newname')
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3537 assert_equal('newname', g:GetName())
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3538 so XscriptTwice.vim
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3539 assert_fails('call g:GetName()', 'E1149:')
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3540 assert_fails('call g:SetName("x")', 'E1149:')
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3541
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3542 delfunc g:GetName
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3543 delfunc g:SetName
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3544 delete('XscriptTwice.vim')
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3545 unlet g:guard
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3546 enddef
e8eb4fd44902 patch 8.2.2208: Vim9: after reloading a script variable index may be invalid
Bram Moolenaar <Bram@vim.org>
parents: 23268
diff changeset
3547
23978
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3548 def Test_unsupported_commands()
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3549 var lines =<< trim END
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3550 ka
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3551 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3552 v9.CheckDefFailure(lines, 'E476:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3553 v9.CheckScriptFailure(['vim9script'] + lines, 'E492:')
23978
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3554
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3555 lines =<< trim END
23980
bee8c78c0c6a patch 8.2.2532: Vim9: confusing error if :k is used with a range
Bram Moolenaar <Bram@vim.org>
parents: 23978
diff changeset
3556 :1ka
bee8c78c0c6a patch 8.2.2532: Vim9: confusing error if :k is used with a range
Bram Moolenaar <Bram@vim.org>
parents: 23978
diff changeset
3557 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3558 v9.CheckDefFailure(lines, 'E476:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3559 v9.CheckScriptFailure(['vim9script'] + lines, 'E492:')
23980
bee8c78c0c6a patch 8.2.2532: Vim9: confusing error if :k is used with a range
Bram Moolenaar <Bram@vim.org>
parents: 23978
diff changeset
3560
bee8c78c0c6a patch 8.2.2532: Vim9: confusing error if :k is used with a range
Bram Moolenaar <Bram@vim.org>
parents: 23978
diff changeset
3561 lines =<< trim END
23978
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3562 t
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3563 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3564 v9.CheckDefFailure(lines, 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3565 v9.CheckScriptFailure(['vim9script'] + lines, 'E1100:')
23978
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3566
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3567 lines =<< trim END
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3568 x
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3569 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3570 v9.CheckDefFailure(lines, 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3571 v9.CheckScriptFailure(['vim9script'] + lines, 'E1100:')
23978
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3572
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3573 lines =<< trim END
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3574 xit
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3575 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3576 v9.CheckDefFailure(lines, 'E1100:')
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3577 v9.CheckScriptFailure(['vim9script'] + lines, 'E1100:')
23978
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3578 enddef
54b2aa1f0d42 patch 8.2.2531: Vim9: the :k command is obscure
Bram Moolenaar <Bram@vim.org>
parents: 23974
diff changeset
3579
24471
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3580 def Test_mapping_line_number()
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3581 var lines =<< trim END
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3582 vim9script
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3583 def g:FuncA()
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3584 # Some comment
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3585 FuncB(0)
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3586 enddef
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3587 # Some comment
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3588 def FuncB(
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3589 # Some comment
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3590 n: number
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3591 )
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3592 exe 'nno '
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3593 # Some comment
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3594 .. '<F3> a'
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3595 .. 'b'
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3596 .. 'c'
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3597 enddef
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3598 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3599 v9.CheckScriptSuccess(lines)
24471
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3600 var res = execute('verbose nmap <F3>')
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3601 assert_match('No mapping found', res)
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3602
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3603 g:FuncA()
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3604 res = execute('verbose nmap <F3>')
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3605 assert_match(' <F3> .* abc.*Last set from .*XScriptSuccess\d\+ line 11', res)
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3606
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3607 nunmap <F3>
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3608 delfunc g:FuncA
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3609 enddef
baf75c8e1b7b patch 8.2.2775: Vim9: wrong line number used for some commands
Bram Moolenaar <Bram@vim.org>
parents: 24469
diff changeset
3610
25176
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3611 def Test_option_set()
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3612 # legacy script allows for white space
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3613 var lines =<< trim END
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3614 set foldlevel =11
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3615 call assert_equal(11, &foldlevel)
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3616 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3617 v9.CheckScriptSuccess(lines)
25176
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3618
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3619 set foldlevel
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3620 set foldlevel=12
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3621 assert_equal(12, &foldlevel)
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3622 set foldlevel+=2
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3623 assert_equal(14, &foldlevel)
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3624 set foldlevel-=3
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3625 assert_equal(11, &foldlevel)
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3626
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3627 lines =<< trim END
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3628 set foldlevel =1
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3629 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3630 v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: =1')
25176
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3631
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3632 lines =<< trim END
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3633 set foldlevel +=1
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3634 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3635 v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: +=1')
25176
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3636
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3637 lines =<< trim END
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3638 set foldlevel ^=1
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3639 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3640 v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: ^=1')
25176
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3641
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3642 lines =<< trim END
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3643 set foldlevel -=1
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3644 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3645 v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: -=1')
25176
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3646
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3647 set foldlevel&
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3648 enddef
af3d0198faad patch 8.2.3124: Vim9: no error for white space between option and "=9"
Bram Moolenaar <Bram@vim.org>
parents: 25174
diff changeset
3649
24968
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3650 def Test_option_modifier()
25174
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3651 # legacy script allows for white space
24968
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3652 var lines =<< trim END
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3653 set hlsearch & hlsearch !
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3654 call assert_equal(1, &hlsearch)
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3655 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3656 v9.CheckScriptSuccess(lines)
24968
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3657
25174
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3658 set hlsearch
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3659 set hlsearch!
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3660 assert_equal(false, &hlsearch)
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3661
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3662 set hlsearch
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3663 set hlsearch&
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3664 assert_equal(false, &hlsearch)
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3665
24968
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3666 lines =<< trim END
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3667 set hlsearch &
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3668 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3669 v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: &')
24968
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3670
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3671 lines =<< trim END
25174
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3672 set hlsearch !
24968
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3673 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3674 v9.CheckDefExecAndScriptFailure(lines, 'E1205: No white space allowed between option and: !')
25174
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3675
b32c83317492 patch 8.2.3123: Vim9: confusing error when using white space after option
Bram Moolenaar <Bram@vim.org>
parents: 25164
diff changeset
3676 set hlsearch&
24968
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3677 enddef
d81a5c3a3aa6 patch 8.2.3021: spaces allowed between option name and "!", "?", etc.
Bram Moolenaar <Bram@vim.org>
parents: 24958
diff changeset
3678
25220
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3679 " This must be called last, it may cause following :def functions to fail
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3680 def Test_xxx_echoerr_line_number()
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3681 var lines =<< trim END
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3682 echoerr 'some'
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3683 .. ' error'
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3684 .. ' continued'
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3685 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3686 v9.CheckDefExecAndScriptFailure(lines, 'some error continued', 1)
25220
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3687 enddef
89b39ce243e2 patch 8.2.3146: Vim9: line number wrong for :execute argument
Bram Moolenaar <Bram@vim.org>
parents: 25218
diff changeset
3688
26496
8861ece40b4b patch 8.2.3778: lambda debug test fails in some configurations
Bram Moolenaar <Bram@vim.org>
parents: 26490
diff changeset
3689 func Test_debug_with_lambda()
26490
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3690 CheckRunVimInTerminal
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3691
26496
8861ece40b4b patch 8.2.3778: lambda debug test fails in some configurations
Bram Moolenaar <Bram@vim.org>
parents: 26490
diff changeset
3692 " call indirectly to avoid compilation error for missing functions
8861ece40b4b patch 8.2.3778: lambda debug test fails in some configurations
Bram Moolenaar <Bram@vim.org>
parents: 26490
diff changeset
3693 call Run_Test_debug_with_lambda()
8861ece40b4b patch 8.2.3778: lambda debug test fails in some configurations
Bram Moolenaar <Bram@vim.org>
parents: 26490
diff changeset
3694 endfunc
8861ece40b4b patch 8.2.3778: lambda debug test fails in some configurations
Bram Moolenaar <Bram@vim.org>
parents: 26490
diff changeset
3695
8861ece40b4b patch 8.2.3778: lambda debug test fails in some configurations
Bram Moolenaar <Bram@vim.org>
parents: 26490
diff changeset
3696 def Run_Test_debug_with_lambda()
26490
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3697 var lines =<< trim END
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3698 vim9script
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3699 def Func()
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3700 var n = 0
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3701 echo [0]->filter((_, v) => v == n)
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3702 enddef
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3703 breakadd func Func
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3704 Func()
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3705 END
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3706 writefile(lines, 'XdebugFunc')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3707 var buf = g:RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3708 g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
26490
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3709
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3710 term_sendkeys(buf, "cont\<CR>")
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3711 g:WaitForAssert(() => assert_match('\[0\]', term_getline(buf, 5)))
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3712
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3713 g:StopVimInTerminal(buf)
26490
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3714 delete('XdebugFunc')
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3715 enddef
cd452f46085e patch 8.2.3775: Vim9: lambda compiled without outer context when debugging
Bram Moolenaar <Bram@vim.org>
parents: 26430
diff changeset
3716
26698
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3717 func Test_debug_running_out_of_lines()
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3718 CheckRunVimInTerminal
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3719
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3720 " call indirectly to avoid compilation error for missing functions
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3721 call Run_Test_debug_running_out_of_lines()
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3722 endfunc
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3723
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3724 def Run_Test_debug_running_out_of_lines()
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3725 var lines =<< trim END
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3726 vim9script
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3727 def Crash()
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3728 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3729 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3730 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3731 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3732 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3733 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3734 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3735 if true
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3736 #
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3737 endif
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3738 enddef
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3739 breakadd func Crash
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3740 Crash()
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3741 END
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3742 writefile(lines, 'XdebugFunc')
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3743 var buf = g:RunVimInTerminal('-S XdebugFunc', {rows: 6, wait_for_ruler: 0})
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3744 g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
26698
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3745
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3746 term_sendkeys(buf, "next\<CR>")
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3747 g:TermWait(buf)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3748 g:WaitForAssert(() => assert_match('^>', term_getline(buf, 6)))
26698
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3749
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3750 term_sendkeys(buf, "cont\<CR>")
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3751 g:TermWait(buf)
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3752
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3753 g:StopVimInTerminal(buf)
26698
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3754 delete('XdebugFunc')
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3755 enddef
254fffd11fda patch 8.2.3878: Vim9: debugger tries to read more lines than there are
Bram Moolenaar <Bram@vim.org>
parents: 26660
diff changeset
3756
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3757 def s:ProfiledWithLambda()
25214
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3758 var n = 3
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3759 echo [[1, 2], [3, 4]]->filter((_, l) => l[0] == n)
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3760 enddef
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3761
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3762 def s:ProfiledNested()
25222
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3763 var x = 0
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3764 def Nested(): any
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3765 return x
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3766 enddef
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3767 Nested()
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3768 enddef
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3769
25230
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3770 def ProfiledNestedProfiled()
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3771 var x = 0
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3772 def Nested(): any
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3773 return x
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3774 enddef
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3775 Nested()
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3776 enddef
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3777
27237
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3778 def Test_ambigous_command_error()
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3779 var lines =<< trim END
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3780 vim9script
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3781 command CmdA echomsg 'CmdA'
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3782 command CmdB echomsg 'CmdB'
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3783 Cmd
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3784 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3785 v9.CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 4)
27237
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3786
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3787 lines =<< trim END
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3788 vim9script
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3789 def Func()
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3790 Cmd
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3791 enddef
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3792 Func()
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3793 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3794 v9.CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 1)
27237
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3795
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3796 lines =<< trim END
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3797 vim9script
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3798 nnoremap <F3> <ScriptCmd>Cmd<CR>
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3799 feedkeys("\<F3>", 'xt')
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3800 END
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3801 v9.CheckScriptFailure(lines, 'E464: Ambiguous use of user-defined command: Cmd', 3)
27237
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3802
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3803 delcommand CmdA
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3804 delcommand CmdB
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3805 nunmap <F3>
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3806 enddef
44cb142c8615 patch 8.2.4147: E464 does not always include the offending command
Bram Moolenaar <Bram@vim.org>
parents: 27084
diff changeset
3807
26211
485c7c4afeb7 patch 8.2.3637: typos in test files
Bram Moolenaar <Bram@vim.org>
parents: 26048
diff changeset
3808 " Execute this near the end, profiling doesn't stop until Vim exits.
25214
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3809 " This only tests that it works, not the profiling output.
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3810 def Test_xx_profile_with_lambda()
25218
645c7963a586 patch 8.2.3145: Vim9: profile test fails without profile feature
Bram Moolenaar <Bram@vim.org>
parents: 25214
diff changeset
3811 CheckFeature profile
645c7963a586 patch 8.2.3145: Vim9: profile test fails without profile feature
Bram Moolenaar <Bram@vim.org>
parents: 25214
diff changeset
3812
25214
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3813 profile start Xprofile.log
25222
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3814 profile func ProfiledWithLambda
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3815 ProfiledWithLambda()
25230
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3816
25222
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3817 profile func ProfiledNested
fbb530e081ca patch 8.2.3147: Vim9: profiling does not work with a nested function
Bram Moolenaar <Bram@vim.org>
parents: 25220
diff changeset
3818 ProfiledNested()
25230
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3819
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3820 # Also profile the nested function. Use a different function, although the
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3821 # contents is the same, to make sure it was not already compiled.
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3822 profile func *
27457
4c16acb2525f patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 27237
diff changeset
3823 g:ProfiledNestedProfiled()
25230
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3824
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3825 profdel func *
658dfd6be868 patch 8.2.3151: Vim9: profiling fails if nested function is also profiled
Bram Moolenaar <Bram@vim.org>
parents: 25222
diff changeset
3826 profile pause
25214
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3827 enddef
218df177cff8 patch 8.2.3143: Vim9: wrong context if lambda called from profiled function
Bram Moolenaar <Bram@vim.org>
parents: 25202
diff changeset
3828
19894
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3829 " Keep this last, it messes up highlighting.
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3830 def Test_substitute_cmd()
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3831 new
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3832 setline(1, 'something')
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3833 :substitute(some(other(
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3834 assert_equal('otherthing', getline(1))
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3835 bwipe!
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3836
21353
fb8c8fcb7b60 patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
3837 # also when the context is Vim9 script
22415
1cefe1c013ac patch 8.2.1756: Vim9: :let will soon be disallowed
Bram Moolenaar <Bram@vim.org>
parents: 22395
diff changeset
3838 var lines =<< trim END
19894
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3839 vim9script
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3840 new
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3841 setline(1, 'something')
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3842 :substitute(some(other(
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3843 assert_equal('otherthing', getline(1))
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3844 bwipe!
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3845 END
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3846 writefile(lines, 'Xvim9lines')
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3847 source Xvim9lines
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3848
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3849 delete('Xvim9lines')
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3850 enddef
ea4f8e789627 patch 8.2.0503: Vim9: some code is not tested
Bram Moolenaar <Bram@vim.org>
parents: 19892
diff changeset
3851
19181
94eda51ba9ba patch 8.2.0149: maintaining a Vim9 branch separately is more work
Bram Moolenaar <Bram@vim.org>
parents:
diff changeset
3852 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker