Mercurial > vim
annotate src/testdir/test_vim9_func.vim @ 22798:3c72820f88b2 v8.2.1947
patch 8.2.1947: crash when using "zj" without folds
Commit: https://github.com/vim/vim/commit/c136a3528b7ebb825c3863d701af44f023381181
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Nov 3 20:05:40 2020 +0100
patch 8.2.1947: crash when using "zj" without folds
Problem: Crash when using "zj" without folds. (Sean Dewar)
Solution: Check for at least one fold. (closes https://github.com/vim/vim/issues/7245)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 03 Nov 2020 20:15:03 +0100 |
parents | d235c5fa0bbe |
children | 8a5369f5f2b4 |
rev | line source |
---|---|
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 " Test various aspects of the Vim9 script language. |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 source check.vim |
22155
de47cb7b41e6
patch 8.2.1627: Vim9: cannot pass "true" to submatch/term_gettty/term_start
Bram Moolenaar <Bram@vim.org>
parents:
22149
diff
changeset
|
4 source term_util.vim |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 source view_util.vim |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
6 source vim9.vim |
21172
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
7 source screendump.vim |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 func Test_def_basic() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 def SomeFunc(): string |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 return 'yes' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
12 enddef |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
13 call SomeFunc()->assert_equal('yes') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 endfunc |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 |
22586
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
16 func Test_compiling_error() |
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
17 " use a terminal to see the whole error message |
22584
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
18 CheckRunVimInTerminal |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
19 |
22586
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
20 call TestCompilingError() |
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
21 endfunc |
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
22 |
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
23 def TestCompilingError() |
22584
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
24 var lines =<< trim END |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
25 vim9script |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
26 def Fails() |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
27 echo nothing |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
28 enddef |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
29 defcompile |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
30 END |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
31 call writefile(lines, 'XTest_compile_error') |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
32 var buf = RunVimInTerminal('-S XTest_compile_error', |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
33 #{rows: 10, wait_for_ruler: 0}) |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
34 var text = '' |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
35 for loop in range(100) |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
36 text = '' |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
37 for i in range(1, 9) |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
38 text ..= term_getline(buf, i) |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
39 endfor |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
40 if text =~ 'Error detected' |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
41 break |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
42 endif |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
43 sleep 20m |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
44 endfor |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
45 assert_match('Error detected while compiling command line.*Fails.*Variable not found: nothing', text) |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
46 |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
47 # clean up |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
48 call StopVimInTerminal(buf) |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
49 call delete('XTest_compile_error') |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
50 enddef |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
51 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 def ReturnString(): string |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
53 return 'string' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
54 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
55 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
56 def ReturnNumber(): number |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
57 return 123 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
58 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
59 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
60 let g:notNumber = 'string' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
61 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
62 def ReturnGlobal(): number |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
63 return g:notNumber |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
64 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
65 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 def Test_return_something() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
67 ReturnString()->assert_equal('string') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
68 ReturnNumber()->assert_equal(123) |
22284
6b385c2b9ff5
patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Bram Moolenaar <Bram@vim.org>
parents:
22264
diff
changeset
|
69 assert_fails('ReturnGlobal()', 'E1012: Type mismatch; expected number but got string', '', 1, 'ReturnGlobal') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
70 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
71 |
20909
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
72 def Test_missing_return() |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
73 CheckDefFailure(['def Missing(): number', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
74 ' if g:cond', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
75 ' echo "no return"', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
76 ' else', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
77 ' return 0', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
78 ' endif' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
79 'enddef'], 'E1027:') |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
80 CheckDefFailure(['def Missing(): number', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
81 ' if g:cond', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
82 ' return 1', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
83 ' else', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
84 ' echo "no return"', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
85 ' endif' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
86 'enddef'], 'E1027:') |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
87 CheckDefFailure(['def Missing(): number', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
88 ' if g:cond', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
89 ' return 1', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
90 ' else', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
91 ' return 2', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
92 ' endif' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
93 ' return 3' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
94 'enddef'], 'E1095:') |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
95 enddef |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
96 |
22620
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
97 def Test_return_bool() |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
98 var lines =<< trim END |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
99 vim9script |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
100 def MenuFilter(id: number, key: string): bool |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
101 return popup_filter_menu(id, key) |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
102 enddef |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
103 def YesnoFilter(id: number, key: string): bool |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
104 return popup_filter_yesno(id, key) |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
105 enddef |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
106 defcompile |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
107 END |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
108 CheckScriptSuccess(lines) |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
109 enddef |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
110 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
111 let s:nothing = 0 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
112 def ReturnNothing() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
113 s:nothing = 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
114 if true |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
115 return |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
116 endif |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
117 s:nothing = 2 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
118 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
119 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
120 def Test_return_nothing() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
121 ReturnNothing() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
122 s:nothing->assert_equal(1) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
123 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
124 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
125 func Increment() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
126 let g:counter += 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
127 endfunc |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
128 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
129 def Test_call_ufunc_count() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
130 g:counter = 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
131 Increment() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
132 Increment() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
133 Increment() |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
134 # works with and without :call |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
135 g:counter->assert_equal(4) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
136 eval g:counter->assert_equal(4) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
137 unlet g:counter |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
138 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
139 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
140 def MyVarargs(arg: string, ...rest: list<string>): string |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
141 var res = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
142 for s in rest |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
143 res ..= ',' .. s |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
144 endfor |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
145 return res |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
146 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
147 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
148 def Test_call_varargs() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
149 MyVarargs('one')->assert_equal('one') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
150 MyVarargs('one', 'two')->assert_equal('one,two') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
151 MyVarargs('one', 'two', 'three')->assert_equal('one,two,three') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
152 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
153 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
154 def MyDefaultArgs(name = 'string'): string |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
155 return name |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
156 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
157 |
21345
5dd4cbc1e9e6
patch 8.2.1223: Vim9: invalid type error for function default value
Bram Moolenaar <Bram@vim.org>
parents:
21335
diff
changeset
|
158 def MyDefaultSecond(name: string, second: bool = true): string |
5dd4cbc1e9e6
patch 8.2.1223: Vim9: invalid type error for function default value
Bram Moolenaar <Bram@vim.org>
parents:
21335
diff
changeset
|
159 return second ? name : 'none' |
5dd4cbc1e9e6
patch 8.2.1223: Vim9: invalid type error for function default value
Bram Moolenaar <Bram@vim.org>
parents:
21335
diff
changeset
|
160 enddef |
5dd4cbc1e9e6
patch 8.2.1223: Vim9: invalid type error for function default value
Bram Moolenaar <Bram@vim.org>
parents:
21335
diff
changeset
|
161 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
162 def Test_call_default_args() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
163 MyDefaultArgs()->assert_equal('string') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
164 MyDefaultArgs('one')->assert_equal('one') |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
165 assert_fails('MyDefaultArgs("one", "two")', 'E118:', '', 3, 'Test_call_default_args') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
166 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
167 MyDefaultSecond('test')->assert_equal('test') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
168 MyDefaultSecond('test', true)->assert_equal('test') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
169 MyDefaultSecond('test', false)->assert_equal('none') |
21345
5dd4cbc1e9e6
patch 8.2.1223: Vim9: invalid type error for function default value
Bram Moolenaar <Bram@vim.org>
parents:
21335
diff
changeset
|
170 |
20528
489cb75c76b6
patch 8.2.0818: Vim9: using a discovery phase doesn't work well
Bram Moolenaar <Bram@vim.org>
parents:
20433
diff
changeset
|
171 CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef', 'defcompile'], 'E1001:') |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
172 CheckScriptFailure(['def Func(arg: number = "text")', 'enddef', 'defcompile'], 'E1013: Argument 1: type mismatch, expected number but got string') |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
173 enddef |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
174 |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
175 def Test_nested_function() |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
176 def Nested(arg: string): string |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
177 return 'nested ' .. arg |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
178 enddef |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
179 Nested('function')->assert_equal('nested function') |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
180 |
20281
ab8c8fd0f868
patch 8.2.0696: Vim9: nested function does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
20279
diff
changeset
|
181 CheckDefFailure(['def Nested()', 'enddef', 'Nested(66)'], 'E118:') |
ab8c8fd0f868
patch 8.2.0696: Vim9: nested function does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
20279
diff
changeset
|
182 CheckDefFailure(['def Nested(arg: string)', 'enddef', 'Nested()'], 'E119:') |
ab8c8fd0f868
patch 8.2.0696: Vim9: nested function does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
20279
diff
changeset
|
183 |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
184 CheckDefFailure(['func Nested()', 'endfunc'], 'E1086:') |
21602
7028f45bf0ea
patch 8.2.1351: Vim9: no proper error if using namespace for nested function
Bram Moolenaar <Bram@vim.org>
parents:
21588
diff
changeset
|
185 CheckDefFailure(['def s:Nested()', 'enddef'], 'E1075:') |
7028f45bf0ea
patch 8.2.1351: Vim9: no proper error if using namespace for nested function
Bram Moolenaar <Bram@vim.org>
parents:
21588
diff
changeset
|
186 CheckDefFailure(['def b:Nested()', 'enddef'], 'E1075:') |
22216
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
187 |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
188 CheckDefFailure([ |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
189 'def Outer()', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
190 ' def Inner()', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
191 ' # comment', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
192 ' enddef', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
193 ' def Inner()', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
194 ' enddef', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
195 'enddef'], 'E1073:') |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
196 CheckDefFailure([ |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
197 'def Outer()', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
198 ' def Inner()', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
199 ' # comment', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
200 ' enddef', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
201 ' def! Inner()', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
202 ' enddef', |
f9b4576a618b
patch 8.2.1657: Vim9: no proper error for nested ":def!"
Bram Moolenaar <Bram@vim.org>
parents:
22214
diff
changeset
|
203 'enddef'], 'E1117:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
204 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
205 |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
206 func Test_call_default_args_from_func() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
207 call MyDefaultArgs()->assert_equal('string') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
208 call MyDefaultArgs('one')->assert_equal('one') |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
209 call assert_fails('call MyDefaultArgs("one", "two")', 'E118:', '', 3, 'Test_call_default_args_from_func') |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
210 endfunc |
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
211 |
21558
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
212 def Test_nested_global_function() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
213 var lines =<< trim END |
21558
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
214 vim9script |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
215 def Outer() |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
216 def g:Inner(): string |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
217 return 'inner' |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
218 enddef |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
219 enddef |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
220 defcompile |
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
221 Outer() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
222 g:Inner()->assert_equal('inner') |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
223 delfunc g:Inner |
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
224 Outer() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
225 g:Inner()->assert_equal('inner') |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
226 delfunc g:Inner |
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
227 Outer() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
228 g:Inner()->assert_equal('inner') |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
229 delfunc g:Inner |
21558
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
230 END |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
231 CheckScriptSuccess(lines) |
21588
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
232 |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
233 lines =<< trim END |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
234 vim9script |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
235 def Outer() |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
236 def g:Inner(): string |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
237 return 'inner' |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
238 enddef |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
239 enddef |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
240 defcompile |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
241 Outer() |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
242 Outer() |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
243 END |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
244 CheckScriptFailure(lines, "E122:") |
21604
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
245 |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
246 lines =<< trim END |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
247 vim9script |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
248 def Func() |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
249 echo 'script' |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
250 enddef |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
251 def Outer() |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
252 def Func() |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
253 echo 'inner' |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
254 enddef |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
255 enddef |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
256 defcompile |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
257 END |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
258 CheckScriptFailure(lines, "E1073:") |
21558
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
259 enddef |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
260 |
21586
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
261 def Test_global_local_function() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
262 var lines =<< trim END |
21586
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
263 vim9script |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
264 def g:Func(): string |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
265 return 'global' |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
266 enddef |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
267 def Func(): string |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
268 return 'local' |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
269 enddef |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
270 g:Func()->assert_equal('global') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
271 Func()->assert_equal('local') |
21586
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
272 END |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
273 CheckScriptSuccess(lines) |
21747
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
274 |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
275 lines =<< trim END |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
276 vim9script |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
277 def g:Funcy() |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
278 echo 'funcy' |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
279 enddef |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
280 s:Funcy() |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
281 END |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
282 CheckScriptFailure(lines, 'E117:') |
21586
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
283 enddef |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
284 |
22236
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
285 def Test_local_function_shadows_global() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
286 var lines =<< trim END |
22236
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
287 vim9script |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
288 def g:Gfunc(): string |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
289 return 'global' |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
290 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
291 def AnotherFunc(): number |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
292 var Gfunc = function('len') |
22236
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
293 return Gfunc('testing') |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
294 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
295 g:Gfunc()->assert_equal('global') |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
296 AnotherFunc()->assert_equal(7) |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
297 delfunc g:Gfunc |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
298 END |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
299 CheckScriptSuccess(lines) |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
300 |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
301 lines =<< trim END |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
302 vim9script |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
303 def g:Func(): string |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
304 return 'global' |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
305 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
306 def AnotherFunc() |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
307 g:Func = function('len') |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
308 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
309 AnotherFunc() |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
310 END |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
311 CheckScriptFailure(lines, 'E705:') |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
312 delfunc g:Func |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
313 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
314 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
315 func TakesOneArg(arg) |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
316 echo a:arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
317 endfunc |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
318 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
319 def Test_call_wrong_args() |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
320 CheckDefFailure(['TakesOneArg()'], 'E119:') |
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
321 CheckDefFailure(['TakesOneArg(11, 22)'], 'E118:') |
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
322 CheckDefFailure(['bufnr(xxx)'], 'E1001:') |
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
323 CheckScriptFailure(['def Func(Ref: func(s: string))'], 'E475:') |
21969
ba2415df82d7
patch 8.2.1534: Vim9: type error for argument type is not at call position
Bram Moolenaar <Bram@vim.org>
parents:
21967
diff
changeset
|
324 |
22734
02b782e80ee4
patch 8.2.1915: Vim9: error for wrong number of arguments is not useful
Bram Moolenaar <Bram@vim.org>
parents:
22655
diff
changeset
|
325 CheckDefFailure(['echo {i -> 0}()'], 'E119: Not enough arguments for function: {i -> 0}()') |
02b782e80ee4
patch 8.2.1915: Vim9: error for wrong number of arguments is not useful
Bram Moolenaar <Bram@vim.org>
parents:
22655
diff
changeset
|
326 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
327 var lines =<< trim END |
21969
ba2415df82d7
patch 8.2.1534: Vim9: type error for argument type is not at call position
Bram Moolenaar <Bram@vim.org>
parents:
21967
diff
changeset
|
328 vim9script |
ba2415df82d7
patch 8.2.1534: Vim9: type error for argument type is not at call position
Bram Moolenaar <Bram@vim.org>
parents:
21967
diff
changeset
|
329 def Func(s: string) |
ba2415df82d7
patch 8.2.1534: Vim9: type error for argument type is not at call position
Bram Moolenaar <Bram@vim.org>
parents:
21967
diff
changeset
|
330 echo s |
ba2415df82d7
patch 8.2.1534: Vim9: type error for argument type is not at call position
Bram Moolenaar <Bram@vim.org>
parents:
21967
diff
changeset
|
331 enddef |
ba2415df82d7
patch 8.2.1534: Vim9: type error for argument type is not at call position
Bram Moolenaar <Bram@vim.org>
parents:
21967
diff
changeset
|
332 Func([]) |
ba2415df82d7
patch 8.2.1534: Vim9: type error for argument type is not at call position
Bram Moolenaar <Bram@vim.org>
parents:
21967
diff
changeset
|
333 END |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
334 CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 5) |
22318
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
335 |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
336 lines =<< trim END |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
337 vim9script |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
338 def FuncOne(nr: number) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
339 echo nr |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
340 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
341 def FuncTwo() |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
342 FuncOne() |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
343 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
344 defcompile |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
345 END |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
346 writefile(lines, 'Xscript') |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
347 var didCatch = false |
22318
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
348 try |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
349 source Xscript |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
350 catch |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
351 assert_match('E119: Not enough arguments for function: <SNR>\d\+_FuncOne', v:exception) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
352 assert_match('Xscript\[8\]..function <SNR>\d\+_FuncTwo, line 1', v:throwpoint) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
353 didCatch = true |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
354 endtry |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
355 assert_true(didCatch) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
356 |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
357 lines =<< trim END |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
358 vim9script |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
359 def FuncOne(nr: number) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
360 echo nr |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
361 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
362 def FuncTwo() |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
363 FuncOne(1, 2) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
364 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
365 defcompile |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
366 END |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
367 writefile(lines, 'Xscript') |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
368 didCatch = false |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
369 try |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
370 source Xscript |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
371 catch |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
372 assert_match('E118: Too many arguments for function: <SNR>\d\+_FuncOne', v:exception) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
373 assert_match('Xscript\[8\]..function <SNR>\d\+_FuncTwo, line 1', v:throwpoint) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
374 didCatch = true |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
375 endtry |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
376 assert_true(didCatch) |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
377 |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
378 delete('Xscript') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
379 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
380 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
381 " Default arg and varargs |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
382 def MyDefVarargs(one: string, two = 'foo', ...rest: list<string>): string |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
383 var res = one .. ',' .. two |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
384 for s in rest |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
385 res ..= ',' .. s |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
386 endfor |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
387 return res |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
388 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
389 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
390 def Test_call_def_varargs() |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
391 assert_fails('MyDefVarargs()', 'E119:', '', 1, 'Test_call_def_varargs') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
392 MyDefVarargs('one')->assert_equal('one,foo') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
393 MyDefVarargs('one', 'two')->assert_equal('one,two') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
394 MyDefVarargs('one', 'two', 'three')->assert_equal('one,two,three') |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
395 CheckDefFailure(['MyDefVarargs("one", 22)'], |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
396 'E1013: Argument 2: type mismatch, expected string but got number') |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
397 CheckDefFailure(['MyDefVarargs("one", "two", 123)'], |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
398 'E1013: Argument 3: type mismatch, expected string but got number') |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
399 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
400 var lines =<< trim END |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
401 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
402 def Func(...l: list<string>) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
403 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
404 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
405 Func('a', 'b', 'c') |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
406 END |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
407 CheckScriptSuccess(lines) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
408 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
409 lines =<< trim END |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
410 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
411 def Func(...l: list<string>) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
412 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
413 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
414 Func() |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
415 END |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
416 CheckScriptSuccess(lines) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
417 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
418 lines =<< trim END |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
419 vim9script |
22292
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
420 def Func(...l: any) |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
421 echo l |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
422 enddef |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
423 Func(0) |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
424 END |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
425 CheckScriptSuccess(lines) |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
426 |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
427 lines =<< trim END |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
428 vim9script |
22349
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
429 def Func(..._l: list<string>) |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
430 echo _l |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
431 enddef |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
432 Func('a', 'b', 'c') |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
433 END |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
434 CheckScriptSuccess(lines) |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
435 |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
436 lines =<< trim END |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
437 vim9script |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
438 def Func(...l: list<string>) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
439 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
440 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
441 Func(1, 2, 3) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
442 END |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
443 CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch') |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
444 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
445 lines =<< trim END |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
446 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
447 def Func(...l: list<string>) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
448 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
449 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
450 Func('a', 9) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
451 END |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
452 CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch') |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
453 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
454 lines =<< trim END |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
455 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
456 def Func(...l: list<string>) |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
457 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
458 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
459 Func(1, 'a') |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
460 END |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
461 CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
462 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
463 |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
464 let s:value = '' |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
465 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
466 def FuncOneDefArg(opt = 'text') |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
467 s:value = opt |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
468 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
469 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
470 def FuncTwoDefArg(nr = 123, opt = 'text'): string |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
471 return nr .. opt |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
472 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
473 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
474 def FuncVarargs(...arg: list<string>): string |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
475 return join(arg, ',') |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
476 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
477 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
478 def Test_func_type_varargs() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
479 var RefDefArg: func(?string) |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
480 RefDefArg = FuncOneDefArg |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
481 RefDefArg() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
482 s:value->assert_equal('text') |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
483 RefDefArg('some') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
484 s:value->assert_equal('some') |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
485 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
486 var RefDef2Arg: func(?number, ?string): string |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
487 RefDef2Arg = FuncTwoDefArg |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
488 RefDef2Arg()->assert_equal('123text') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
489 RefDef2Arg(99)->assert_equal('99text') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
490 RefDef2Arg(77, 'some')->assert_equal('77some') |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
491 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
492 CheckDefFailure(['var RefWrong: func(string?)'], 'E1010:') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
493 CheckDefFailure(['var RefWrong: func(?string, string)'], 'E1007:') |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
494 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
495 var RefVarargs: func(...list<string>): string |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
496 RefVarargs = FuncVarargs |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
497 RefVarargs()->assert_equal('') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
498 RefVarargs('one')->assert_equal('one') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
499 RefVarargs('one', 'two')->assert_equal('one,two') |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
500 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
501 CheckDefFailure(['var RefWrong: func(...list<string>, string)'], 'E110:') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
502 CheckDefFailure(['var RefWrong: func(...list<string>, ?string)'], 'E110:') |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
503 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
504 |
19944
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
505 " Only varargs |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
506 def MyVarargsOnly(...args: list<string>): string |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
507 return join(args, ',') |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
508 enddef |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
509 |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
510 def Test_call_varargs_only() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
511 MyVarargsOnly()->assert_equal('') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
512 MyVarargsOnly('one')->assert_equal('one') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
513 MyVarargsOnly('one', 'two')->assert_equal('one,two') |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
514 CheckDefFailure(['MyVarargsOnly(1)'], 'E1013: Argument 1: type mismatch, expected string but got number') |
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
515 CheckDefFailure(['MyVarargsOnly("one", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number') |
19944
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
516 enddef |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
517 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
518 def Test_using_var_as_arg() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
519 writefile(['def Func(x: number)', 'var x = 234', 'enddef', 'defcompile'], 'Xdef') |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
520 assert_fails('so Xdef', 'E1006:', '', 1, 'Func') |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
521 delete('Xdef') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
522 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
523 |
20355
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
524 def DictArg(arg: dict<string>) |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
525 arg['key'] = 'value' |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
526 enddef |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
527 |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
528 def ListArg(arg: list<string>) |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
529 arg[0] = 'value' |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
530 enddef |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
531 |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
532 def Test_assign_to_argument() |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
533 # works for dict and list |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
534 var d: dict<string> = {} |
20355
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
535 DictArg(d) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
536 d['key']->assert_equal('value') |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
537 var l: list<string> = [] |
20355
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
538 ListArg(l) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
539 l[0]->assert_equal('value') |
20355
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
540 |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
541 CheckScriptFailure(['def Func(arg: number)', 'arg = 3', 'enddef', 'defcompile'], 'E1090:') |
20355
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
542 enddef |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
543 |
22339
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
544 " These argument names are reserved in legacy functions. |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
545 def WithReservedNames(firstline: string, lastline: string): string |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
546 return firstline .. lastline |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
547 enddef |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
548 |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
549 def Test_argument_names() |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
550 assert_equal('OK', WithReservedNames('O', 'K')) |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
551 enddef |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
552 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
553 def Test_call_func_defined_later() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
554 g:DefinedLater('one')->assert_equal('one') |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
555 assert_fails('NotDefined("one")', 'E117:', '', 2, 'Test_call_func_defined_later') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
556 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
557 |
20140
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
558 func DefinedLater(arg) |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
559 return a:arg |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
560 endfunc |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
561 |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
562 def Test_call_funcref() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
563 g:SomeFunc('abc')->assert_equal(3) |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
564 assert_fails('NotAFunc()', 'E117:', '', 2, 'Test_call_funcref') # comment after call |
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
565 assert_fails('g:NotAFunc()', 'E117:', '', 3, 'Test_call_funcref') |
21439
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
566 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
567 var lines =<< trim END |
21439
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
568 vim9script |
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
569 def RetNumber(): number |
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
570 return 123 |
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
571 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
572 var Funcref: func: number = function('RetNumber') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
573 Funcref()->assert_equal(123) |
21439
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
574 END |
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
575 CheckScriptSuccess(lines) |
21441
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
576 |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
577 lines =<< trim END |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
578 vim9script |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
579 def RetNumber(): number |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
580 return 123 |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
581 enddef |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
582 def Bar(F: func: number): number |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
583 return F() |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
584 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
585 var Funcref = function('RetNumber') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
586 Bar(Funcref)->assert_equal(123) |
21441
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
587 END |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
588 CheckScriptSuccess(lines) |
21467
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
589 |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
590 lines =<< trim END |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
591 vim9script |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
592 def UseNumber(nr: number) |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
593 echo nr |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
594 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
595 var Funcref: func(number) = function('UseNumber') |
21467
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
596 Funcref(123) |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
597 END |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
598 CheckScriptSuccess(lines) |
21469
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
599 |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
600 lines =<< trim END |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
601 vim9script |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
602 def UseNumber(nr: number) |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
603 echo nr |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
604 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
605 var Funcref: func(string) = function('UseNumber') |
21469
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
606 END |
22284
6b385c2b9ff5
patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Bram Moolenaar <Bram@vim.org>
parents:
22264
diff
changeset
|
607 CheckScriptFailure(lines, 'E1012: Type mismatch; expected func(string) but got func(number)') |
21500
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
608 |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
609 lines =<< trim END |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
610 vim9script |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
611 def EchoNr(nr = 34) |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
612 g:echo = nr |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
613 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
614 var Funcref: func(?number) = function('EchoNr') |
21500
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
615 Funcref() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
616 g:echo->assert_equal(34) |
21500
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
617 Funcref(123) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
618 g:echo->assert_equal(123) |
21500
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
619 END |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
620 CheckScriptSuccess(lines) |
21502
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
621 |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
622 lines =<< trim END |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
623 vim9script |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
624 def EchoList(...l: list<number>) |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
625 g:echo = l |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
626 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
627 var Funcref: func(...list<number>) = function('EchoList') |
21502
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
628 Funcref() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
629 g:echo->assert_equal([]) |
21502
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
630 Funcref(1, 2, 3) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
631 g:echo->assert_equal([1, 2, 3]) |
21502
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
632 END |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
633 CheckScriptSuccess(lines) |
21504
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
634 |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
635 lines =<< trim END |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
636 vim9script |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
637 def OptAndVar(nr: number, opt = 12, ...l: list<number>): number |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
638 g:optarg = opt |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
639 g:listarg = l |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
640 return nr |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
641 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
642 var Funcref: func(number, ?number, ...list<number>): number = function('OptAndVar') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
643 Funcref(10)->assert_equal(10) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
644 g:optarg->assert_equal(12) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
645 g:listarg->assert_equal([]) |
21504
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
646 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
647 Funcref(11, 22)->assert_equal(11) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
648 g:optarg->assert_equal(22) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
649 g:listarg->assert_equal([]) |
21504
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
650 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
651 Funcref(17, 18, 1, 2, 3)->assert_equal(17) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
652 g:optarg->assert_equal(18) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
653 g:listarg->assert_equal([1, 2, 3]) |
21504
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
654 END |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
655 CheckScriptSuccess(lines) |
20140
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
656 enddef |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
657 |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
658 let SomeFunc = function('len') |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
659 let NotAFunc = 'text' |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
660 |
19993
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
661 def CombineFuncrefTypes() |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
662 # same arguments, different return type |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
663 var Ref1: func(bool): string |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
664 var Ref2: func(bool): number |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
665 var Ref3: func(bool): any |
19993
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
666 Ref3 = g:cond ? Ref1 : Ref2 |
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
667 |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
668 # different number of arguments |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
669 var Refa1: func(bool): number |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
670 var Refa2: func(bool, number): number |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
671 var Refa3: func: number |
19993
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
672 Refa3 = g:cond ? Refa1 : Refa2 |
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
673 |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
674 # different argument types |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
675 var Refb1: func(bool, string): number |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
676 var Refb2: func(string, number): number |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
677 var Refb3: func(any, any): number |
19993
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
678 Refb3 = g:cond ? Refb1 : Refb2 |
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
679 enddef |
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
680 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
681 def FuncWithForwardCall() |
20140
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
682 return g:DefinedEvenLater("yes") |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
683 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
684 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
685 def DefinedEvenLater(arg: string): string |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
686 return arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
687 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
688 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
689 def Test_error_in_nested_function() |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
690 # Error in called function requires unwinding the call stack. |
22165
c512e6f57ff2
patch 8.2.1632: not checking the context of test_fails()
Bram Moolenaar <Bram@vim.org>
parents:
22163
diff
changeset
|
691 assert_fails('FuncWithForwardCall()', 'E1096:', '', 1, 'FuncWithForwardCall') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
692 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
693 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
694 def Test_return_type_wrong() |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
695 CheckScriptFailure([ |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
696 'def Func(): number', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
697 'return "a"', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
698 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
699 'defcompile'], 'expected number but got string') |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
700 CheckScriptFailure([ |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
701 'def Func(): string', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
702 'return 1', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
703 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
704 'defcompile'], 'expected string but got number') |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
705 CheckScriptFailure([ |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
706 'def Func(): void', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
707 'return "a"', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
708 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
709 'defcompile'], |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
710 'E1096: Returning a value in a function without a return type') |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
711 CheckScriptFailure([ |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
712 'def Func()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
713 'return "a"', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
714 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
715 'defcompile'], |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
716 'E1096: Returning a value in a function without a return type') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
717 |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
718 CheckScriptFailure([ |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
719 'def Func(): number', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
720 'return', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
721 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
722 'defcompile'], 'E1003:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
723 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
724 CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
725 CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:') |
19932
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
726 CheckScriptFailure(['def Func()', 'return 1'], 'E1057:') |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
727 |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
728 CheckScriptFailure([ |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
729 'vim9script', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
730 'def FuncB()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
731 ' return 123', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
732 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
733 'def FuncA()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
734 ' FuncB()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
735 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
736 'defcompile'], 'E1096:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
737 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
738 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
739 def Test_arg_type_wrong() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
740 CheckScriptFailure(['def Func3(items: list)', 'echo "a"', 'enddef'], 'E1008: Missing <type>') |
19932
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
741 CheckScriptFailure(['def Func4(...)', 'echo "a"', 'enddef'], 'E1055: Missing name after ...') |
20142
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
742 CheckScriptFailure(['def Func5(items:string)', 'echo "a"'], 'E1069:') |
20029
8fb1cf4c44d5
patch 8.2.0570: Vim9: no error when omitting type from argument
Bram Moolenaar <Bram@vim.org>
parents:
20023
diff
changeset
|
743 CheckScriptFailure(['def Func5(items)', 'echo "a"'], 'E1077:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
744 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
745 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
746 def Test_vim9script_call() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
747 var lines =<< trim END |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
748 vim9script |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
749 var name = '' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
750 def MyFunc(arg: string) |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
751 name = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
752 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
753 MyFunc('foobar') |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
754 name->assert_equal('foobar') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
755 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
756 var str = 'barfoo' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
757 str->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
758 name->assert_equal('barfoo') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
759 |
20945
0653b9b72091
patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents:
20909
diff
changeset
|
760 g:value = 'value' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
761 g:value->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
762 name->assert_equal('value') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
763 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
764 var listvar = [] |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
765 def ListFunc(arg: list<number>) |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
766 listvar = arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
767 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
768 [1, 2, 3]->ListFunc() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
769 listvar->assert_equal([1, 2, 3]) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
770 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
771 var dictvar = {} |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
772 def DictFunc(arg: dict<number>) |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
773 dictvar = arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
774 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
775 {'a': 1, 'b': 2}->DictFunc() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
776 dictvar->assert_equal(#{a: 1, b: 2}) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
777 def CompiledDict() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
778 {'a': 3, 'b': 4}->DictFunc() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
779 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
780 CompiledDict() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
781 dictvar->assert_equal(#{a: 3, b: 4}) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
782 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
783 #{a: 3, b: 4}->DictFunc() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
784 dictvar->assert_equal(#{a: 3, b: 4}) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
785 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
786 ('text')->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
787 name->assert_equal('text') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
788 ("some")->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
789 name->assert_equal('some') |
21118
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
790 |
21475
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
791 # line starting with single quote is not a mark |
21544
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
792 # line starting with double quote can be a method call |
21335
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
793 'asdfasdf'->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
794 name->assert_equal('asdfasdf') |
21544
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
795 "xyz"->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
796 name->assert_equal('xyz') |
21335
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
797 |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
798 def UseString() |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
799 'xyork'->MyFunc() |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
800 enddef |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
801 UseString() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
802 name->assert_equal('xyork') |
21335
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
803 |
21544
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
804 def UseString2() |
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
805 "knife"->MyFunc() |
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
806 enddef |
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
807 UseString2() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
808 name->assert_equal('knife') |
21544
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
809 |
21475
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
810 # prepending a colon makes it a mark |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
811 new |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
812 setline(1, ['aaa', 'bbb', 'ccc']) |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
813 normal! 3Gmt1G |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
814 :'t |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
815 getcurpos()[1]->assert_equal(3) |
21475
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
816 bwipe! |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
817 |
21118
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
818 MyFunc( |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
819 'continued' |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
820 ) |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
821 assert_equal('continued', |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
822 name |
21118
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
823 ) |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
824 |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
825 call MyFunc( |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
826 'more' |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
827 .. |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
828 'lines' |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
829 ) |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
830 assert_equal( |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
831 'morelines', |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
832 name) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
833 END |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
834 writefile(lines, 'Xcall.vim') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
835 source Xcall.vim |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
836 delete('Xcall.vim') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
837 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
838 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
839 def Test_vim9script_call_fail_decl() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
840 var lines =<< trim END |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
841 vim9script |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
842 var name = '' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
843 def MyFunc(arg: string) |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
844 var name = 123 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
845 enddef |
20528
489cb75c76b6
patch 8.2.0818: Vim9: using a discovery phase doesn't work well
Bram Moolenaar <Bram@vim.org>
parents:
20433
diff
changeset
|
846 defcompile |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
847 END |
21463
7f36d36f7195
patch 8.2.1282: Vim9: crash when using CheckScriptFailure()
Bram Moolenaar <Bram@vim.org>
parents:
21441
diff
changeset
|
848 CheckScriptFailure(lines, 'E1054:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
849 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
850 |
21383
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
851 def Test_vim9script_call_fail_type() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
852 var lines =<< trim END |
21383
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
853 vim9script |
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
854 def MyFunc(arg: string) |
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
855 echo arg |
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
856 enddef |
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
857 MyFunc(1234) |
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
858 END |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
859 CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got number') |
21383
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
860 enddef |
f25d007f90ac
patch 8.2.1242: Vim9: no error if calling a function with wrong type
Bram Moolenaar <Bram@vim.org>
parents:
21353
diff
changeset
|
861 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
862 def Test_vim9script_call_fail_const() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
863 var lines =<< trim END |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
864 vim9script |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
865 const var = '' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
866 def MyFunc(arg: string) |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
867 var = 'asdf' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
868 enddef |
20528
489cb75c76b6
patch 8.2.0818: Vim9: using a discovery phase doesn't work well
Bram Moolenaar <Bram@vim.org>
parents:
20433
diff
changeset
|
869 defcompile |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
870 END |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
871 writefile(lines, 'Xcall_const.vim') |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
872 assert_fails('source Xcall_const.vim', 'E46:', '', 1, 'MyFunc') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
873 delete('Xcall_const.vim') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
874 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
875 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
876 " Test that inside :function a Python function can be defined, :def is not |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
877 " recognized. |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
878 func Test_function_python() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
879 CheckFeature python3 |
22437
7bd80999ea21
patch 8.2.1767: Vim9: test fails with python support
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
880 let py = 'python3' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
881 execute py "<< EOF" |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
882 def do_something(): |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
883 return 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
884 EOF |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
885 endfunc |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
886 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
887 def Test_delfunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
888 var lines =<< trim END |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
889 vim9script |
20189
63cc54100ae4
patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents:
20142
diff
changeset
|
890 def g:GoneSoon() |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
891 echo 'hello' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
892 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
893 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
894 def CallGoneSoon() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
895 GoneSoon() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
896 enddef |
20528
489cb75c76b6
patch 8.2.0818: Vim9: using a discovery phase doesn't work well
Bram Moolenaar <Bram@vim.org>
parents:
20433
diff
changeset
|
897 defcompile |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
898 |
20189
63cc54100ae4
patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents:
20142
diff
changeset
|
899 delfunc g:GoneSoon |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
900 CallGoneSoon() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
901 END |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
902 writefile(lines, 'XToDelFunc') |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
903 assert_fails('so XToDelFunc', 'E933:', '', 1, 'CallGoneSoon') |
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
904 assert_fails('so XToDelFunc', 'E933:', '', 1, 'CallGoneSoon') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
905 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
906 delete('XToDelFunc') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
907 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
908 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
909 def Test_redef_failure() |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
910 writefile(['def Func0(): string', 'return "Func0"', 'enddef'], 'Xdef') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
911 so Xdef |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
912 writefile(['def Func1(): string', 'return "Func1"', 'enddef'], 'Xdef') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
913 so Xdef |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
914 writefile(['def! Func0(): string', 'enddef', 'defcompile'], 'Xdef') |
22163
b6d36f0b4f03
patch 8.2.1631: test_fails() does not check the context of the line number
Bram Moolenaar <Bram@vim.org>
parents:
22159
diff
changeset
|
915 assert_fails('so Xdef', 'E1027:', '', 1, 'Func0') |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
916 writefile(['def Func2(): string', 'return "Func2"', 'enddef'], 'Xdef') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
917 so Xdef |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
918 delete('Xdef') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
919 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
920 g:Func0()->assert_equal(0) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
921 g:Func1()->assert_equal('Func1') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
922 g:Func2()->assert_equal('Func2') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
923 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
924 delfunc! Func0 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
925 delfunc! Func1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
926 delfunc! Func2 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
927 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
928 |
20142
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
929 def Test_vim9script_func() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
930 var lines =<< trim END |
20142
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
931 vim9script |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
932 func Func(arg) |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
933 echo a:arg |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
934 endfunc |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
935 Func('text') |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
936 END |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
937 writefile(lines, 'XVim9Func') |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
938 so XVim9Func |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
939 |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
940 delete('XVim9Func') |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
941 enddef |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
942 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
943 let s:funcResult = 0 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
944 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
945 def FuncNoArgNoRet() |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
946 s:funcResult = 11 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
947 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
948 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
949 def FuncNoArgRetNumber(): number |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
950 s:funcResult = 22 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
951 return 1234 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
952 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
953 |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
954 def FuncNoArgRetString(): string |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
955 s:funcResult = 45 |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
956 return 'text' |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
957 enddef |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
958 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
959 def FuncOneArgNoRet(arg: number) |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
960 s:funcResult = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
961 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
962 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
963 def FuncOneArgRetNumber(arg: number): number |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
964 s:funcResult = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
965 return arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
966 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
967 |
19985
f863aa96cae5
patch 8.2.0548: Vim9: not all possible func type errors tested
Bram Moolenaar <Bram@vim.org>
parents:
19975
diff
changeset
|
968 def FuncTwoArgNoRet(one: bool, two: number) |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
969 s:funcResult = two |
19985
f863aa96cae5
patch 8.2.0548: Vim9: not all possible func type errors tested
Bram Moolenaar <Bram@vim.org>
parents:
19975
diff
changeset
|
970 enddef |
f863aa96cae5
patch 8.2.0548: Vim9: not all possible func type errors tested
Bram Moolenaar <Bram@vim.org>
parents:
19975
diff
changeset
|
971 |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
972 def FuncOneArgRetString(arg: string): string |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
973 return arg |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
974 enddef |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
975 |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
976 def FuncOneArgRetAny(arg: any): any |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
977 return arg |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
978 enddef |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
979 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
980 def Test_func_type() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
981 var Ref1: func() |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
982 s:funcResult = 0 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
983 Ref1 = FuncNoArgNoRet |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
984 Ref1() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
985 s:funcResult->assert_equal(11) |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
986 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
987 var Ref2: func |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
988 s:funcResult = 0 |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
989 Ref2 = FuncNoArgNoRet |
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
990 Ref2() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
991 s:funcResult->assert_equal(11) |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
992 |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
993 s:funcResult = 0 |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
994 Ref2 = FuncOneArgNoRet |
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
995 Ref2(12) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
996 s:funcResult->assert_equal(12) |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
997 |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
998 s:funcResult = 0 |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
999 Ref2 = FuncNoArgRetNumber |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1000 Ref2()->assert_equal(1234) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1001 s:funcResult->assert_equal(22) |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
1002 |
21921
e420f3cf60e2
patch 8.2.1510: using "var" in :def function may refer to legacy script var
Bram Moolenaar <Bram@vim.org>
parents:
21913
diff
changeset
|
1003 s:funcResult = 0 |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
1004 Ref2 = FuncOneArgRetNumber |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1005 Ref2(13)->assert_equal(13) |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1006 s:funcResult->assert_equal(13) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1007 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1008 |
21162
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
1009 def Test_repeat_return_type() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1010 var res = 0 |
21162
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
1011 for n in repeat([1], 3) |
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
1012 res += n |
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
1013 endfor |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1014 res->assert_equal(3) |
21164
4a190861f0cc
patch 8.2.1133: Vim9: return type of add() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21162
diff
changeset
|
1015 |
4a190861f0cc
patch 8.2.1133: Vim9: return type of add() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21162
diff
changeset
|
1016 res = 0 |
4a190861f0cc
patch 8.2.1133: Vim9: return type of add() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21162
diff
changeset
|
1017 for n in add([1, 2], 3) |
4a190861f0cc
patch 8.2.1133: Vim9: return type of add() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21162
diff
changeset
|
1018 res += n |
4a190861f0cc
patch 8.2.1133: Vim9: return type of add() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21162
diff
changeset
|
1019 endfor |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1020 res->assert_equal(6) |
21162
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
1021 enddef |
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
1022 |
21170
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
1023 def Test_argv_return_type() |
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
1024 next fileone filetwo |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1025 var res = '' |
21170
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
1026 for name in argv() |
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
1027 res ..= name |
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
1028 endfor |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1029 res->assert_equal('fileonefiletwo') |
21170
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
1030 enddef |
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
1031 |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1032 def Test_func_type_part() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1033 var RefVoid: func: void |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1034 RefVoid = FuncNoArgNoRet |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1035 RefVoid = FuncOneArgNoRet |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1036 CheckDefFailure(['var RefVoid: func: void', 'RefVoid = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...) but got func(): number') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1037 CheckDefFailure(['var RefVoid: func: void', 'RefVoid = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...) but got func(): string') |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1038 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1039 var RefAny: func(): any |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1040 RefAny = FuncNoArgRetNumber |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1041 RefAny = FuncNoArgRetString |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1042 CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func()') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1043 CheckDefFailure(['var RefAny: func(): any', 'RefAny = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func(number)') |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1044 |
22498
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1045 var RefAnyNoArgs: func: any = RefAny |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1046 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1047 var RefNr: func: number |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1048 RefNr = FuncNoArgRetNumber |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1049 RefNr = FuncOneArgRetNumber |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1050 CheckDefFailure(['var RefNr: func: number', 'RefNr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): number but got func()') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1051 CheckDefFailure(['var RefNr: func: number', 'RefNr = FuncNoArgRetString'], 'E1012: Type mismatch; expected func(...): number but got func(): string') |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1052 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1053 var RefStr: func: string |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1054 RefStr = FuncNoArgRetString |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1055 RefStr = FuncOneArgRetString |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1056 CheckDefFailure(['var RefStr: func: string', 'RefStr = FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): string but got func()') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1057 CheckDefFailure(['var RefStr: func: string', 'RefStr = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...): string but got func(): number') |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1058 enddef |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
1059 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1060 def Test_func_type_fails() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1061 CheckDefFailure(['var ref1: func()'], 'E704:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1062 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1063 CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(): number') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1064 CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncOneArgNoRet'], 'E1012: Type mismatch; expected func() but got func(number)') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1065 CheckDefFailure(['var Ref1: func()', 'Ref1 = FuncOneArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(number): number') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1066 CheckDefFailure(['var Ref1: func(bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(bool) but got func(bool, number)') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1067 CheckDefFailure(['var Ref1: func(?bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(?bool) but got func(bool, number)') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1068 CheckDefFailure(['var Ref1: func(...bool)', 'Ref1 = FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(...bool) but got func(bool, number)') |
19985
f863aa96cae5
patch 8.2.0548: Vim9: not all possible func type errors tested
Bram Moolenaar <Bram@vim.org>
parents:
19975
diff
changeset
|
1069 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1070 CheckDefFailure(['var RefWrong: func(string ,number)'], 'E1068:') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1071 CheckDefFailure(['var RefWrong: func(string,number)'], 'E1069:') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1072 CheckDefFailure(['var RefWrong: func(bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool)'], 'E1005:') |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1073 CheckDefFailure(['var RefWrong: func(bool):string'], 'E1069:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1074 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1075 |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1076 def Test_func_return_type() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1077 var nr: number |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1078 nr = FuncNoArgRetNumber() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1079 nr->assert_equal(1234) |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1080 |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1081 nr = FuncOneArgRetAny(122) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1082 nr->assert_equal(122) |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1083 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1084 var str: string |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1085 str = FuncOneArgRetAny('yes') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1086 str->assert_equal('yes') |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1087 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1088 CheckDefFailure(['var str: string', 'str = FuncNoArgRetNumber()'], 'E1012: Type mismatch; expected string but got number') |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1089 enddef |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
1090 |
22498
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1091 def Test_func_common_type() |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1092 def FuncOne(n: number): number |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1093 return n |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1094 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1095 def FuncTwo(s: string): number |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1096 return len(s) |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1097 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1098 def FuncThree(n: number, s: string): number |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1099 return n + len(s) |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1100 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1101 var list = [FuncOne, FuncTwo, FuncThree] |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1102 assert_equal(8, list[0](8)) |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1103 assert_equal(4, list[1]('word')) |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1104 assert_equal(7, list[2](3, 'word')) |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1105 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1106 |
20015
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1107 def MultiLine( |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1108 arg1: string, |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1109 arg2 = 1234, |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1110 ...rest: list<string> |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1111 ): string |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1112 return arg1 .. arg2 .. join(rest, '-') |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1113 enddef |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1114 |
20023
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1115 def MultiLineComment( |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1116 arg1: string, # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1117 arg2 = 1234, # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1118 ...rest: list<string> # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1119 ): string # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1120 return arg1 .. arg2 .. join(rest, '-') |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1121 enddef |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
1122 |
20015
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1123 def Test_multiline() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1124 MultiLine('text')->assert_equal('text1234') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1125 MultiLine('text', 777)->assert_equal('text777') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1126 MultiLine('text', 777, 'one')->assert_equal('text777one') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1127 MultiLine('text', 777, 'one', 'two')->assert_equal('text777one-two') |
20015
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1128 enddef |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1129 |
20017
ee823254dda5
patch 8.2.0564: Vim9: calling a def function from non-vim9 may fail
Bram Moolenaar <Bram@vim.org>
parents:
20015
diff
changeset
|
1130 func Test_multiline_not_vim9() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1131 call MultiLine('text')->assert_equal('text1234') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1132 call MultiLine('text', 777)->assert_equal('text777') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1133 call MultiLine('text', 777, 'one')->assert_equal('text777one') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1134 call MultiLine('text', 777, 'one', 'two')->assert_equal('text777one-two') |
20017
ee823254dda5
patch 8.2.0564: Vim9: calling a def function from non-vim9 may fail
Bram Moolenaar <Bram@vim.org>
parents:
20015
diff
changeset
|
1135 endfunc |
ee823254dda5
patch 8.2.0564: Vim9: calling a def function from non-vim9 may fail
Bram Moolenaar <Bram@vim.org>
parents:
20015
diff
changeset
|
1136 |
20015
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
1137 |
19932
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1138 " When using CheckScriptFailure() for the below test, E1010 is generated instead |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1139 " of E1056. |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1140 func Test_E1056_1059() |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1141 let caught_1056 = 0 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1142 try |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1143 def F(): |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1144 return 1 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1145 enddef |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1146 catch /E1056:/ |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1147 let caught_1056 = 1 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1148 endtry |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1149 eval caught_1056->assert_equal(1) |
19932
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1150 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1151 let caught_1059 = 0 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1152 try |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1153 def F5(items : list) |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1154 echo 'a' |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1155 enddef |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1156 catch /E1059:/ |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1157 let caught_1059 = 1 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1158 endtry |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1159 eval caught_1059->assert_equal(1) |
19932
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
1160 endfunc |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1161 |
20287
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1162 func DelMe() |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1163 echo 'DelMe' |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1164 endfunc |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1165 |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1166 def Test_error_reporting() |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1167 # comment lines at the start of the function |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1168 var lines =<< trim END |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1169 " comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1170 def Func() |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1171 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1172 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1173 invalid |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1174 enddef |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1175 defcompile |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1176 END |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
1177 writefile(lines, 'Xdef') |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1178 try |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1179 source Xdef |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1180 assert_report('should have failed') |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1181 catch /E476:/ |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1182 v:exception->assert_match('Invalid command: invalid') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1183 v:throwpoint->assert_match(', line 3$') |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1184 endtry |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1185 |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1186 # comment lines after the start of the function |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1187 lines =<< trim END |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1188 " comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1189 def Func() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1190 var x = 1234 |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1191 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1192 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1193 invalid |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1194 enddef |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1195 defcompile |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1196 END |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
1197 writefile(lines, 'Xdef') |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1198 try |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1199 source Xdef |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1200 assert_report('should have failed') |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1201 catch /E476:/ |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1202 v:exception->assert_match('Invalid command: invalid') |
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1203 v:throwpoint->assert_match(', line 4$') |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1204 endtry |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1205 |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1206 lines =<< trim END |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1207 vim9script |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1208 def Func() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1209 var db = #{foo: 1, bar: 2} |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1210 # comment |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1211 var x = db.asdf |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1212 enddef |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1213 defcompile |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1214 Func() |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1215 END |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
1216 writefile(lines, 'Xdef') |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1217 try |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1218 source Xdef |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1219 assert_report('should have failed') |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1220 catch /E716:/ |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1221 v:throwpoint->assert_match('_Func, line 3$') |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1222 endtry |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
1223 |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
1224 delete('Xdef') |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1225 enddef |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
1226 |
20287
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1227 def Test_deleted_function() |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1228 CheckDefExecFailure([ |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1229 'var RefMe: func = function("g:DelMe")', |
20287
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1230 'delfunc g:DelMe', |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1231 'echo RefMe()'], 'E117:') |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1232 enddef |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1233 |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1234 def Test_unknown_function() |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1235 CheckDefExecFailure([ |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1236 'var Ref: func = function("NotExist")', |
21265
6a4806e326dd
patch 8.2.1183: assert_fails() checks the last error message
Bram Moolenaar <Bram@vim.org>
parents:
21263
diff
changeset
|
1237 'delfunc g:NotExist'], 'E700:') |
20287
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1238 enddef |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
1239 |
20244
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
1240 def RefFunc(Ref: func(string): string): string |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
1241 return Ref('more') |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
1242 enddef |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
1243 |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
1244 def Test_closure_simple() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1245 var local = 'some ' |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1246 RefFunc({s -> local .. s})->assert_equal('some more') |
20244
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
1247 enddef |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
1248 |
20247
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1249 def MakeRef() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1250 var local = 'some ' |
20247
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1251 g:Ref = {s -> local .. s} |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1252 enddef |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1253 |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1254 def Test_closure_ref_after_return() |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1255 MakeRef() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1256 g:Ref('thing')->assert_equal('some thing') |
20247
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1257 unlet g:Ref |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1258 enddef |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1259 |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1260 def MakeTwoRefs() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1261 var local = ['some'] |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1262 g:Extend = {s -> local->add(s)} |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1263 g:Read = {-> local} |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1264 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1265 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1266 def Test_closure_two_refs() |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1267 MakeTwoRefs() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1268 join(g:Read(), ' ')->assert_equal('some') |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1269 g:Extend('more') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1270 join(g:Read(), ' ')->assert_equal('some more') |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1271 g:Extend('even') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1272 join(g:Read(), ' ')->assert_equal('some more even') |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1273 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1274 unlet g:Extend |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1275 unlet g:Read |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1276 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1277 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1278 def ReadRef(Ref: func(): list<string>): string |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1279 return join(Ref(), ' ') |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1280 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1281 |
22284
6b385c2b9ff5
patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Bram Moolenaar <Bram@vim.org>
parents:
22264
diff
changeset
|
1282 def ExtendRef(Ref: func(string): list<string>, add: string) |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1283 Ref(add) |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1284 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1285 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1286 def Test_closure_two_indirect_refs() |
20257
683c2da4982b
patch 8.2.0684: Vim9: memory leak when using lambda
Bram Moolenaar <Bram@vim.org>
parents:
20255
diff
changeset
|
1287 MakeTwoRefs() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1288 ReadRef(g:Read)->assert_equal('some') |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1289 ExtendRef(g:Extend, 'more') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1290 ReadRef(g:Read)->assert_equal('some more') |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1291 ExtendRef(g:Extend, 'even') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1292 ReadRef(g:Read)->assert_equal('some more even') |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1293 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1294 unlet g:Extend |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1295 unlet g:Read |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
1296 enddef |
20247
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
1297 |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1298 def MakeArgRefs(theArg: string) |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1299 var local = 'loc_val' |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1300 g:UseArg = {s -> theArg .. '/' .. local .. '/' .. s} |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1301 enddef |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1302 |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1303 def MakeArgRefsVarargs(theArg: string, ...rest: list<string>) |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1304 var local = 'the_loc' |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1305 g:UseVararg = {s -> theArg .. '/' .. local .. '/' .. s .. '/' .. join(rest)} |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1306 enddef |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1307 |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1308 def Test_closure_using_argument() |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1309 MakeArgRefs('arg_val') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1310 g:UseArg('call_val')->assert_equal('arg_val/loc_val/call_val') |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1311 |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1312 MakeArgRefsVarargs('arg_val', 'one', 'two') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1313 g:UseVararg('call_val')->assert_equal('arg_val/the_loc/call_val/one two') |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1314 |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1315 unlet g:UseArg |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1316 unlet g:UseVararg |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1317 enddef |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
1318 |
22541
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1319 def MakeGetAndAppendRefs() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1320 var local = 'a' |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1321 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1322 def Append(arg: string) |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1323 local ..= arg |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1324 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1325 g:Append = Append |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1326 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1327 def Get(): string |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1328 return local |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1329 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1330 g:Get = Get |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1331 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1332 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1333 def Test_closure_append_get() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1334 MakeGetAndAppendRefs() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1335 g:Get()->assert_equal('a') |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1336 g:Append('-b') |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1337 g:Get()->assert_equal('a-b') |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1338 g:Append('-c') |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1339 g:Get()->assert_equal('a-b-c') |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1340 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1341 unlet g:Append |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1342 unlet g:Get |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1343 enddef |
20295
bc2c9ea94ec1
patch 8.2.0703: Vim9: closure cannot store value in outer context
Bram Moolenaar <Bram@vim.org>
parents:
20287
diff
changeset
|
1344 |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
1345 def Test_nested_closure() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1346 var local = 'text' |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
1347 def Closure(arg: string): string |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
1348 return local .. arg |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
1349 enddef |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1350 Closure('!!!')->assert_equal('text!!!') |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
1351 enddef |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
1352 |
20433
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1353 func GetResult(Ref) |
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1354 return a:Ref('some') |
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1355 endfunc |
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1356 |
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1357 def Test_call_closure_not_compiled() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1358 var text = 'text' |
20433
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1359 g:Ref = {s -> s .. text} |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1360 GetResult(g:Ref)->assert_equal('sometext') |
20433
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1361 enddef |
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
1362 |
22314
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1363 def Test_double_closure_fails() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1364 var lines =<< trim END |
22314
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1365 vim9script |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1366 def Func() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1367 var name = 0 |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1368 for i in range(2) |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1369 timer_start(0, {-> name}) |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1370 endfor |
22314
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1371 enddef |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1372 Func() |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1373 END |
22371
15003353a464
patch 8.2.1734: Vim9: cannot use a funcref for a closure twice
Bram Moolenaar <Bram@vim.org>
parents:
22349
diff
changeset
|
1374 CheckScriptSuccess(lines) |
22314
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1375 enddef |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
1376 |
22541
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1377 def Test_nested_closure_used() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1378 var lines =<< trim END |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1379 vim9script |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1380 def Func() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1381 var x = 'hello' |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1382 var Closure = {-> x} |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1383 g:Myclosure = {-> Closure()} |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1384 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1385 Func() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1386 assert_equal('hello', g:Myclosure()) |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1387 END |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1388 CheckScriptSuccess(lines) |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
1389 enddef |
22527
c3e3c5707fe9
patch 8.2.1812: Vim9: nested closure throws an internal error
Bram Moolenaar <Bram@vim.org>
parents:
22498
diff
changeset
|
1390 |
22401
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1391 def Test_nested_closure_fails() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1392 var lines =<< trim END |
22401
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1393 vim9script |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1394 def FuncA() |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1395 FuncB(0) |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1396 enddef |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1397 def FuncB(n: number): list<string> |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1398 return map([0], {_, v -> n}) |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1399 enddef |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1400 FuncA() |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1401 END |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1402 CheckScriptFailure(lines, 'E1012:') |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1403 enddef |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
1404 |
22460
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1405 def Test_nested_lambda() |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1406 var lines =<< trim END |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1407 vim9script |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1408 def Func() |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1409 var x = 4 |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1410 var Lambda1 = {-> 7} |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1411 var Lambda2 = {-> [Lambda1(), x]} |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1412 var res = Lambda2() |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1413 assert_equal([7, 4], res) |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1414 enddef |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1415 Func() |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1416 END |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1417 CheckScriptSuccess(lines) |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1418 enddef |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
1419 |
20972
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
1420 def Line_continuation_in_def(dir: string = ''): string |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1421 var path: string = empty(dir) |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1422 \ ? 'empty' |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1423 \ : 'full' |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1424 return path |
20972
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
1425 enddef |
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
1426 |
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
1427 def Test_line_continuation_in_def() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1428 Line_continuation_in_def('.')->assert_equal('full') |
20972
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
1429 enddef |
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
1430 |
22284
6b385c2b9ff5
patch 8.2.1691: Vim9: list<any> is not accepted where list<number> is expected
Bram Moolenaar <Bram@vim.org>
parents:
22264
diff
changeset
|
1431 def Line_continuation_in_lambda(): list<string> |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1432 var x = range(97, 100) |
21263
71bd2f9adb61
patch 8.2.1182: Vim9: no check for whitespace after comma in lambda
Bram Moolenaar <Bram@vim.org>
parents:
21208
diff
changeset
|
1433 ->map({_, v -> nr2char(v) |
21208
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1434 ->toupper()}) |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1435 ->reverse() |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1436 return x |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1437 enddef |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1438 |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1439 def Test_line_continuation_in_lambda() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1440 Line_continuation_in_lambda()->assert_equal(['D', 'C', 'B', 'A']) |
21208
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1441 enddef |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
1442 |
21176
54c665ad2db3
patch 8.2.1139: Vim9: test for silent echo fails in some environments
Bram Moolenaar <Bram@vim.org>
parents:
21174
diff
changeset
|
1443 func Test_silent_echo() |
21172
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1444 CheckScreendump |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1445 |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1446 let lines =<< trim END |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1447 vim9script |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1448 def EchoNothing() |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1449 silent echo '' |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1450 enddef |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1451 defcompile |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1452 END |
21176
54c665ad2db3
patch 8.2.1139: Vim9: test for silent echo fails in some environments
Bram Moolenaar <Bram@vim.org>
parents:
21174
diff
changeset
|
1453 call writefile(lines, 'XTest_silent_echo') |
21172
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1454 |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1455 " Check that the balloon shows up after a mouse move |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1456 let buf = RunVimInTerminal('-S XTest_silent_echo', {'rows': 6}) |
21176
54c665ad2db3
patch 8.2.1139: Vim9: test for silent echo fails in some environments
Bram Moolenaar <Bram@vim.org>
parents:
21174
diff
changeset
|
1457 call term_sendkeys(buf, ":abc") |
21172
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1458 call VerifyScreenDump(buf, 'Test_vim9_silent_echo', {}) |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1459 |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1460 " clean up |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1461 call StopVimInTerminal(buf) |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1462 call delete('XTest_silent_echo') |
21176
54c665ad2db3
patch 8.2.1139: Vim9: test for silent echo fails in some environments
Bram Moolenaar <Bram@vim.org>
parents:
21174
diff
changeset
|
1463 endfunc |
21172
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
1464 |
22736
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1465 def SilentlyError() |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1466 execute('silent! invalid') |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1467 g:did_it = 'yes' |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1468 enddef |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1469 |
22742
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1470 func UserError() |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1471 silent! invalid |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1472 endfunc |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1473 |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1474 def SilentlyUserError() |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1475 UserError() |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1476 g:did_it = 'yes' |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1477 enddef |
22736
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1478 |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1479 " This can't be a :def function, because the assert would not be reached. |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1480 func Test_ignore_silent_error() |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1481 let g:did_it = 'no' |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1482 call SilentlyError() |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1483 call assert_equal('yes', g:did_it) |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1484 |
22742
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1485 let g:did_it = 'no' |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1486 call SilentlyUserError() |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
1487 call assert_equal('yes', g:did_it) |
22736
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1488 |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1489 unlet g:did_it |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1490 endfunc |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
1491 |
22760
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1492 def Test_ignore_silent_error_in_filter() |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1493 var lines =<< trim END |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1494 vim9script |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1495 def Filter(winid: number, key: string): bool |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1496 if key == 'o' |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1497 silent! eval [][0] |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1498 return true |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1499 endif |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1500 return popup_filter_menu(winid, key) |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1501 enddef |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1502 |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1503 popup_create('popup', #{filter: Filter}) |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1504 feedkeys("o\r", 'xnt') |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1505 END |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1506 CheckScriptSuccess(lines) |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1507 enddef |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
1508 |
22135
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1509 def Fibonacci(n: number): number |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1510 if n < 2 |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1511 return n |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1512 else |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1513 return Fibonacci(n - 1) + Fibonacci(n - 2) |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1514 endif |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1515 enddef |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
1516 |
21281
13b1567ae0c6
patch 8.2.1191: Vim9: crash when function calls itself
Bram Moolenaar <Bram@vim.org>
parents:
21265
diff
changeset
|
1517 def Test_recursive_call() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1518 Fibonacci(20)->assert_equal(6765) |
21281
13b1567ae0c6
patch 8.2.1191: Vim9: crash when function calls itself
Bram Moolenaar <Bram@vim.org>
parents:
21265
diff
changeset
|
1519 enddef |
13b1567ae0c6
patch 8.2.1191: Vim9: crash when function calls itself
Bram Moolenaar <Bram@vim.org>
parents:
21265
diff
changeset
|
1520 |
21303
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1521 def TreeWalk(dir: string): list<any> |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1522 return readdir(dir)->map({_, val -> |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1523 fnamemodify(dir .. '/' .. val, ':p')->isdirectory() |
21630
3c6c52fbc8ea
patch 8.2.1365: Vim9: no error for missing white space around operator
Bram Moolenaar <Bram@vim.org>
parents:
21604
diff
changeset
|
1524 ? {val: TreeWalk(dir .. '/' .. val)} |
21303
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1525 : val |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1526 }) |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1527 enddef |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1528 |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1529 def Test_closure_in_map() |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1530 mkdir('XclosureDir/tdir', 'p') |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1531 writefile(['111'], 'XclosureDir/file1') |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1532 writefile(['222'], 'XclosureDir/file2') |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1533 writefile(['333'], 'XclosureDir/tdir/file3') |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1534 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1535 TreeWalk('XclosureDir')->assert_equal(['file1', 'file2', {'tdir': ['file3']}]) |
21303
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1536 |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1537 delete('XclosureDir', 'rf') |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1538 enddef |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
1539 |
22496
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1540 def Test_invalid_function_name() |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1541 var lines =<< trim END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1542 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1543 def s: list<string> |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1544 END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1545 CheckScriptFailure(lines, 'E129:') |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1546 |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1547 lines =<< trim END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1548 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1549 def g: list<string> |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1550 END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1551 CheckScriptFailure(lines, 'E129:') |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1552 |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1553 lines =<< trim END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1554 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1555 def <SID>: list<string> |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1556 END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1557 CheckScriptFailure(lines, 'E884:') |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1558 |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1559 lines =<< trim END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1560 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1561 def F list<string> |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1562 END |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1563 CheckScriptFailure(lines, 'E488:') |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1564 enddef |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
1565 |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1566 def Test_partial_call() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1567 var Xsetlist = function('setloclist', [0]) |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1568 Xsetlist([], ' ', {'title': 'test'}) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1569 getloclist(0, {'title': 1})->assert_equal({'title': 'test'}) |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1570 |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1571 Xsetlist = function('setloclist', [0, [], ' ']) |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1572 Xsetlist({'title': 'test'}) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1573 getloclist(0, {'title': 1})->assert_equal({'title': 'test'}) |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1574 |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1575 Xsetlist = function('setqflist') |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1576 Xsetlist([], ' ', {'title': 'test'}) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1577 getqflist({'title': 1})->assert_equal({'title': 'test'}) |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1578 |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1579 Xsetlist = function('setqflist', [[], ' ']) |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1580 Xsetlist({'title': 'test'}) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1581 getqflist({'title': 1})->assert_equal({'title': 'test'}) |
22498
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1582 |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1583 var Len: func: number = function('len', ['word']) |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
1584 assert_equal(4, Len()) |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1585 enddef |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
1586 |
21689
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1587 def Test_cmd_modifier() |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1588 tab echo '0' |
22147
d55008685870
patch 8.2.1623: Vim9: using :call where it is not needed
Bram Moolenaar <Bram@vim.org>
parents:
22139
diff
changeset
|
1589 CheckDefFailure(['5tab echo 3'], 'E16:') |
21689
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1590 enddef |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1591 |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1592 def Test_restore_modifiers() |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1593 # check that when compiling a :def function command modifiers are not messed |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1594 # up. |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1595 var lines =<< trim END |
21689
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1596 vim9script |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1597 set eventignore= |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1598 autocmd QuickFixCmdPost * copen |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1599 def AutocmdsDisabled() |
22734
02b782e80ee4
patch 8.2.1915: Vim9: error for wrong number of arguments is not useful
Bram Moolenaar <Bram@vim.org>
parents:
22655
diff
changeset
|
1600 eval 0 |
21689
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1601 enddef |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1602 func Func() |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1603 noautocmd call s:AutocmdsDisabled() |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1604 let g:ei_after = &eventignore |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1605 endfunc |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1606 Func() |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1607 END |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1608 CheckScriptSuccess(lines) |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1609 g:ei_after->assert_equal('') |
21689
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1610 enddef |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
1611 |
22214
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1612 def StackTop() |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1613 eval 1 |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1614 eval 2 |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1615 # call not on fourth line |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1616 StackBot() |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1617 enddef |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1618 |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1619 def StackBot() |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1620 # throw an error |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1621 eval [][0] |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1622 enddef |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1623 |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1624 def Test_callstack_def() |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1625 try |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1626 StackTop() |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1627 catch |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1628 v:throwpoint->assert_match('Test_callstack_def\[2\]..StackTop\[4\]..StackBot, line 2') |
22214
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1629 endtry |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1630 enddef |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
1631 |
22537
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1632 " Re-using spot for variable used in block |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1633 def Test_block_scoped_var() |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1634 var lines =<< trim END |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1635 vim9script |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1636 def Func() |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1637 var x = ['a', 'b', 'c'] |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1638 if 1 |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1639 var y = 'x' |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1640 map(x, {-> y}) |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1641 endif |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1642 var z = x |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1643 assert_equal(['x', 'x', 'x'], z) |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1644 enddef |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1645 Func() |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1646 END |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1647 CheckScriptSuccess(lines) |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1648 enddef |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
1649 |
20257
683c2da4982b
patch 8.2.0684: Vim9: memory leak when using lambda
Bram Moolenaar <Bram@vim.org>
parents:
20255
diff
changeset
|
1650 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1651 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |