Mercurial > vim
annotate src/testdir/test_vim9_func.vim @ 27464:a14c4d3e3260 v8.2.4260
patch 8.2.4260: Vim9: can still use a global function without g:
Commit: https://github.com/vim/vim/commit/848faddb870f3ba4d84fcacd1cccb5cdbbfd9c41
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jan 30 15:28:30 2022 +0000
patch 8.2.4260: Vim9: can still use a global function without g:
Problem: Vim9: can still use a global function without g: at the script
level.
Solution: Also check for g: at the script level. (issue #9637)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 30 Jan 2022 16:30:04 +0100 |
parents | 4c16acb2525f |
children | 55613f0d59bc |
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 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
6 import './vim9.vim' as v9 |
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() |
24369
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
21 call TestCompilingErrorInTry() |
22586
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
22 endfunc |
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
23 |
622294200ccd
patch 8.2.1841: Vim9: test for compilation error fails in normal build
Bram Moolenaar <Bram@vim.org>
parents:
22584
diff
changeset
|
24 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
|
25 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
|
26 vim9script |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
27 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
|
28 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
|
29 enddef |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
30 defcompile |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
31 END |
24369
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
32 writefile(lines, 'XTest_compile_error') |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
33 var buf = g:RunVimInTerminal('-S XTest_compile_error', |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
34 {rows: 10, wait_for_ruler: 0}) |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
35 g:WaitForAssert(() => assert_match('Error detected while compiling command line.*Fails.*Variable not found: nothing', |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
36 g:Term_getlines(buf, range(1, 9)))) |
22584
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
37 |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
38 # clean up |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
39 g:StopVimInTerminal(buf) |
24369
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
40 delete('XTest_compile_error') |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
41 enddef |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
42 |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
43 def TestCompilingErrorInTry() |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
44 var dir = 'Xdir/autoload' |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
45 mkdir(dir, 'p') |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
46 |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
47 var lines =<< trim END |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
48 vim9script |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
49 def script#OnlyCompiled() |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
50 g:runtime = 'yes' |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
51 invalid |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
52 enddef |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
53 END |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
54 writefile(lines, dir .. '/script.vim') |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
55 |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
56 lines =<< trim END |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
57 vim9script |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
58 todo |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
59 try |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
60 script#OnlyCompiled() |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
61 catch /nothing/ |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
62 endtry |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
63 END |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
64 lines[1] = 'set rtp=' .. getcwd() .. '/Xdir' |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
65 writefile(lines, 'XTest_compile_error') |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
66 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
67 var buf = g:RunVimInTerminal('-S XTest_compile_error', {rows: 10, wait_for_ruler: 0}) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
68 g:WaitForAssert(() => assert_match('Error detected while compiling command line.*function script#OnlyCompiled.*Invalid command: invalid', |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
69 g:Term_getlines(buf, range(1, 9)))) |
24369
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
70 |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
71 # clean up |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
72 g:StopVimInTerminal(buf) |
24369
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
73 delete('XTest_compile_error') |
a97fb00978f6
patch 8.2.2725: Vim9: message about compiling is wrong when using try/catch
Bram Moolenaar <Bram@vim.org>
parents:
24355
diff
changeset
|
74 delete('Xdir', 'rf') |
22584
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
75 enddef |
c271498e03b2
patch 8.2.1840: Vim9: error message is not clear about compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22541
diff
changeset
|
76 |
24854
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
77 def Test_compile_error_in_called_function() |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
78 var lines =<< trim END |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
79 vim9script |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
80 var n: number |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
81 def Foo() |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
82 &hls = n |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
83 enddef |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
84 def Bar() |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
85 Foo() |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
86 enddef |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
87 silent! Foo() |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
88 Bar() |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
89 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
90 v9.CheckScriptFailureList(lines, ['E1012:', 'E1191:']) |
24854
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
91 enddef |
c9ccb1976049
patch 8.2.2965: Vim9: crash when calling function that failed to compile
Bram Moolenaar <Bram@vim.org>
parents:
24826
diff
changeset
|
92 |
24988
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
93 def Test_wrong_function_name() |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
94 var lines =<< trim END |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
95 vim9script |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
96 func _Foo() |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
97 echo 'foo' |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
98 endfunc |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
99 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
100 v9.CheckScriptFailure(lines, 'E128:') |
24988
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
101 |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
102 lines =<< trim END |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
103 vim9script |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
104 def _Foo() |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
105 echo 'foo' |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
106 enddef |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
107 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
108 v9.CheckScriptFailure(lines, 'E128:') |
24988
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
109 enddef |
494112d2aa93
patch 8.2.3031: no error if a function name starts with an underscore
Bram Moolenaar <Bram@vim.org>
parents:
24890
diff
changeset
|
110 |
24436
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
111 def Test_autoload_name_mismatch() |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
112 var dir = 'Xdir/autoload' |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
113 mkdir(dir, 'p') |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
114 |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
115 var lines =<< trim END |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
116 vim9script |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
117 def scriptX#Function() |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
118 # comment |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
119 g:runtime = 'yes' |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
120 enddef |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
121 END |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
122 writefile(lines, dir .. '/script.vim') |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
123 |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
124 var save_rtp = &rtp |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
125 exe 'set rtp=' .. getcwd() .. '/Xdir' |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
126 lines =<< trim END |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
127 call script#Function() |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
128 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
129 v9.CheckScriptFailure(lines, 'E746:', 2) |
24436
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
130 |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
131 &rtp = save_rtp |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
132 delete(dir, 'rf') |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
133 enddef |
ccdd5e9a3763
patch 8.2.2758: Vim9: wrong line number for autoload function with wrong name
Bram Moolenaar <Bram@vim.org>
parents:
24420
diff
changeset
|
134 |
24874
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
135 def Test_autoload_names() |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
136 var dir = 'Xdir/autoload' |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
137 mkdir(dir, 'p') |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
138 |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
139 var lines =<< trim END |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
140 func foobar#function() |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
141 return 'yes' |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
142 endfunc |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
143 let foobar#var = 'no' |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
144 END |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
145 writefile(lines, dir .. '/foobar.vim') |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
146 |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
147 var save_rtp = &rtp |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
148 exe 'set rtp=' .. getcwd() .. '/Xdir' |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
149 |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
150 lines =<< trim END |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
151 assert_equal('yes', foobar#function()) |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
152 var Function = foobar#function |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
153 assert_equal('yes', Function()) |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
154 |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
155 assert_equal('no', foobar#var) |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
156 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
157 v9.CheckDefAndScriptSuccess(lines) |
24874
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
158 |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
159 &rtp = save_rtp |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
160 delete(dir, 'rf') |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
161 enddef |
14b0b35d8488
patch 8.2.2975: Vim9: can only use an autoload function name as a string
Bram Moolenaar <Bram@vim.org>
parents:
24858
diff
changeset
|
162 |
25609
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
163 def Test_autoload_error_in_script() |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
164 var dir = 'Xdir/autoload' |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
165 mkdir(dir, 'p') |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
166 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
167 var lines =<< trim END |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
168 func scripterror#function() |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
169 let g:called_function = 'yes' |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
170 endfunc |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
171 let 0 = 1 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
172 END |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
173 writefile(lines, dir .. '/scripterror.vim') |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
174 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
175 var save_rtp = &rtp |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
176 exe 'set rtp=' .. getcwd() .. '/Xdir' |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
177 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
178 g:called_function = 'no' |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
179 # The error in the autoload script cannot be checked with assert_fails(), use |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
180 # CheckDefSuccess() instead of CheckDefFailure() |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
181 try |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
182 v9.CheckDefSuccess(['scripterror#function()']) |
25609
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
183 catch |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
184 assert_match('E121: Undefined variable: 0', v:exception) |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
185 endtry |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
186 assert_equal('no', g:called_function) |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
187 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
188 lines =<< trim END |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
189 func scriptcaught#function() |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
190 let g:called_function = 'yes' |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
191 endfunc |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
192 try |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
193 let 0 = 1 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
194 catch |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
195 let g:caught = v:exception |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
196 endtry |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
197 END |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
198 writefile(lines, dir .. '/scriptcaught.vim') |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
199 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
200 g:called_function = 'no' |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
201 v9.CheckDefSuccess(['scriptcaught#function()']) |
25609
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
202 assert_match('E121: Undefined variable: 0', g:caught) |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
203 assert_equal('yes', g:called_function) |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
204 |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
205 &rtp = save_rtp |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
206 delete(dir, 'rf') |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
207 enddef |
f8bcd21e6e24
patch 8.2.3341: Vim9: function call aborted despite try/catch
Bram Moolenaar <Bram@vim.org>
parents:
25579
diff
changeset
|
208 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
209 def s:CallRecursive(n: number): number |
22908
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
210 return CallRecursive(n + 1) |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
211 enddef |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
212 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
213 def s:CallMapRecursive(l: list<number>): number |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
214 return map(l, (_, v) => CallMapRecursive([v]))[0] |
22908
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
215 enddef |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
216 |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
217 def Test_funcdepth_error() |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
218 set maxfuncdepth=10 |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
219 |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
220 var caught = false |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
221 try |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
222 CallRecursive(1) |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
223 catch /E132:/ |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
224 caught = true |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
225 endtry |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
226 assert_true(caught) |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
227 |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
228 caught = false |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
229 try |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
230 CallMapRecursive([1]) |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
231 catch /E132:/ |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
232 caught = true |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
233 endtry |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
234 assert_true(caught) |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
235 |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
236 set maxfuncdepth& |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
237 enddef |
54219df706b5
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
Bram Moolenaar <Bram@vim.org>
parents:
22816
diff
changeset
|
238 |
23442
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
239 def Test_endfunc_enddef() |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
240 var lines =<< trim END |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
241 def Test() |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
242 echo 'test' |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
243 endfunc |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
244 enddef |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
245 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
246 v9.CheckScriptFailure(lines, 'E1151:', 3) |
23442
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
247 |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
248 lines =<< trim END |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
249 def Test() |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
250 func Nested() |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
251 echo 'test' |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
252 enddef |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
253 enddef |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
254 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
255 v9.CheckScriptFailure(lines, 'E1152:', 4) |
24208
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
256 |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
257 lines =<< trim END |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
258 def Ok() |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
259 echo 'hello' |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
260 enddef | echo 'there' |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
261 def Bad() |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
262 echo 'hello' |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
263 enddef there |
7a21b2581dce
patch 8.2.2645: using inline function is not properly tested
Bram Moolenaar <Bram@vim.org>
parents:
24156
diff
changeset
|
264 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
265 v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: there', 6) |
23442
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
266 enddef |
f00d6ff51046
patch 8.2.2264: Vim9: no error for mismatched :endfunc or :enddef
Bram Moolenaar <Bram@vim.org>
parents:
23428
diff
changeset
|
267 |
23444
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
268 def Test_missing_endfunc_enddef() |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
269 var lines =<< trim END |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
270 vim9script |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
271 def Test() |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
272 echo 'test' |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
273 endef |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
274 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
275 v9.CheckScriptFailure(lines, 'E1057:', 2) |
23444
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
276 |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
277 lines =<< trim END |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
278 vim9script |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
279 func Some() |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
280 echo 'test' |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
281 enfffunc |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
282 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
283 v9.CheckScriptFailure(lines, 'E126:', 2) |
23444
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
284 enddef |
7278e86c2f70
patch 8.2.2265: error message for missing endfunc/enddef is last line
Bram Moolenaar <Bram@vim.org>
parents:
23442
diff
changeset
|
285 |
23727
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
286 def Test_white_space_before_paren() |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
287 var lines =<< trim END |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
288 vim9script |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
289 def Test () |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
290 echo 'test' |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
291 enddef |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
292 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
293 v9.CheckScriptFailure(lines, 'E1068:', 2) |
23727
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
294 |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
295 lines =<< trim END |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
296 vim9script |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
297 func Test () |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
298 echo 'test' |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
299 endfunc |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
300 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
301 v9.CheckScriptFailure(lines, 'E1068:', 2) |
23727
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
302 |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
303 lines =<< trim END |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
304 def Test () |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
305 echo 'test' |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
306 enddef |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
307 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
308 v9.CheckScriptFailure(lines, 'E1068:', 1) |
23727
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
309 |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
310 lines =<< trim END |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
311 func Test () |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
312 echo 'test' |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
313 endfunc |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
314 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
315 v9.CheckScriptSuccess(lines) |
23727
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
316 enddef |
7d0959080545
patch 8.2.2405: Vim9: no need to allow white space before "(" for :def
Bram Moolenaar <Bram@vim.org>
parents:
23691
diff
changeset
|
317 |
23545
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
318 def Test_enddef_dict_key() |
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
319 var d = { |
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
320 enddef: 'x', |
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
321 endfunc: 'y', |
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
322 } |
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
323 assert_equal({enddef: 'x', endfunc: 'y'}, d) |
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
324 enddef |
987fb6e8a376
patch 8.2.2315: Vim9: "enddef" as dict key misintepreted as function end
Bram Moolenaar <Bram@vim.org>
parents:
23531
diff
changeset
|
325 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
326 def ReturnString(): string |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
327 return 'string' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
328 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
329 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
330 def ReturnNumber(): number |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
331 return 123 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
332 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
333 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
334 let g:notNumber = 'string' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
335 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
336 def ReturnGlobal(): number |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
337 return g:notNumber |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
338 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
339 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
340 def Test_return_something() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
341 g:ReturnString()->assert_equal('string') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
342 g:ReturnNumber()->assert_equal(123) |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
343 assert_fails('g:ReturnGlobal()', 'E1012: Type mismatch; expected number but got string', '', 1, 'ReturnGlobal') |
27219
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
344 |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
345 var lines =<< trim END |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
346 vim9script |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
347 |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
348 def Msg() |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
349 echomsg 'in Msg()...' |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
350 enddef |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
351 |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
352 def Func() |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
353 return Msg() |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
354 enddef |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
355 defcompile |
47dbeda35910
patch 8.2.4138: Vim9: no error for return with argument when invalid
Bram Moolenaar <Bram@vim.org>
parents:
27022
diff
changeset
|
356 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
357 v9.CheckScriptFailure(lines, 'E1096:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
358 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
359 |
23691
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
360 def Test_check_argument_type() |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
361 var lines =<< trim END |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
362 vim9script |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
363 def Val(a: number, b: number): number |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
364 return 0 |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
365 enddef |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
366 def Func() |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
367 var x: any = true |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
368 Val(0, x) |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
369 enddef |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
370 disass Func |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
371 Func() |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
372 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
373 v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got bool', 2) |
23691
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
374 enddef |
0d56d4f107d8
patch 8.2.2387: runtime type check does not mention argument index
Bram Moolenaar <Bram@vim.org>
parents:
23689
diff
changeset
|
375 |
20909
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
376 def Test_missing_return() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
377 v9.CheckDefFailure(['def Missing(): number', |
20909
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
378 ' if g:cond', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
379 ' echo "no return"', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
380 ' else', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
381 ' return 0', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
382 ' endif' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
383 'enddef'], 'E1027:') |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
384 v9.CheckDefFailure(['def Missing(): number', |
20909
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
385 ' if g:cond', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
386 ' return 1', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
387 ' else', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
388 ' echo "no return"', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
389 ' endif' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
390 'enddef'], 'E1027:') |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
391 v9.CheckDefFailure(['def Missing(): number', |
20909
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
392 ' if g:cond', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
393 ' return 1', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
394 ' else', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
395 ' return 2', |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
396 ' endif' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
397 ' return 3' |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
398 'enddef'], 'E1095:') |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
399 enddef |
0d7465881b06
patch 8.2.1006: Vim9: require unnecessary return statement
Bram Moolenaar <Bram@vim.org>
parents:
20903
diff
changeset
|
400 |
22620
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
401 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
|
402 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
|
403 vim9script |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
404 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
|
405 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
|
406 enddef |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
407 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
|
408 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
|
409 enddef |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
410 defcompile |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
411 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
412 v9.CheckScriptSuccess(lines) |
22620
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
413 enddef |
b5d68d8a5187
patch 8.2.1858: Vim9: filter functions return number instead of bool
Bram Moolenaar <Bram@vim.org>
parents:
22586
diff
changeset
|
414 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
415 let s:nothing = 0 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
416 def ReturnNothing() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
417 s:nothing = 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
418 if true |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
419 return |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
420 endif |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
421 s:nothing = 2 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
422 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
423 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
424 def Test_return_nothing() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
425 g:ReturnNothing() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
426 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
|
427 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
428 |
23630
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
429 def Test_return_invalid() |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
430 var lines =<< trim END |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
431 vim9script |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
432 def Func(): invalid |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
433 return xxx |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
434 enddef |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
435 defcompile |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
436 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
437 v9.CheckScriptFailure(lines, 'E1010:', 2) |
23925
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
438 |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
439 lines =<< trim END |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
440 vim9script |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
441 def Test(Fun: func(number): number): list<number> |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
442 return map([1, 2, 3], (_, i) => Fun(i)) |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
443 enddef |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
444 defcompile |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
445 def Inc(nr: number): nr |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
446 return nr + 2 |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
447 enddef |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
448 echo Test(Inc) |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
449 END |
e979bf909fd8
patch 8.2.2505: Vim9: crash after defining function with invalid return type
Bram Moolenaar <Bram@vim.org>
parents:
23923
diff
changeset
|
450 # doing this twice was leaking memory |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
451 v9.CheckScriptFailure(lines, 'E1010:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
452 v9.CheckScriptFailure(lines, 'E1010:') |
23630
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
453 enddef |
ca98d85e92da
patch 8.2.2357: Vim9: crash when parsing function return type fails
Bram Moolenaar <Bram@vim.org>
parents:
23565
diff
changeset
|
454 |
25774
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
455 def Test_return_list_any() |
26925
4e77f9961650
patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents:
26851
diff
changeset
|
456 # This used to fail but now the actual list type is checked, and since it has |
4e77f9961650
patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents:
26851
diff
changeset
|
457 # an item of type string it can be used as list<string>. |
25774
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
458 var lines =<< trim END |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
459 vim9script |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
460 def Func(): list<string> |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
461 var l: list<any> |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
462 l->add('string') |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
463 return l |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
464 enddef |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
465 echo Func() |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
466 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
467 v9.CheckScriptSuccess(lines) |
26925
4e77f9961650
patch 8.2.3991: Vim9: error when extending dict<any>
Bram Moolenaar <Bram@vim.org>
parents:
26851
diff
changeset
|
468 |
25774
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
469 lines =<< trim END |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
470 vim9script |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
471 def Func(): list<string> |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
472 var l: list<any> |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
473 l += ['string'] |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
474 return l |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
475 enddef |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
476 echo Func() |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
477 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
478 v9.CheckScriptSuccess(lines) |
25774
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
479 enddef |
9edad9a8cca6
patch 8.2.3422: Vim9: no failure if return type differs from returned var
Bram Moolenaar <Bram@vim.org>
parents:
25737
diff
changeset
|
480 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
481 func s:Increment() |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
482 let g:counter += 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
483 endfunc |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
484 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
485 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
|
486 g:counter = 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
487 Increment() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
488 Increment() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
489 Increment() |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
490 # 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
|
491 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
|
492 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
|
493 unlet g:counter |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
494 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
495 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
496 def s: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
|
497 var res = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
498 for s in rest |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
499 res ..= ',' .. s |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
500 endfor |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
501 return res |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
502 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
503 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
504 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
|
505 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
|
506 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
|
507 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
|
508 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
509 |
25737
d923be9d752d
patch 8.2.3404: Vim9: no error for white space before "("
Bram Moolenaar <Bram@vim.org>
parents:
25646
diff
changeset
|
510 def Test_call_white_space() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
511 v9.CheckDefAndScriptFailure(["call Test ('text')"], ['E476:', 'E1068:']) |
25737
d923be9d752d
patch 8.2.3404: Vim9: no error for white space before "("
Bram Moolenaar <Bram@vim.org>
parents:
25646
diff
changeset
|
512 enddef |
d923be9d752d
patch 8.2.3404: Vim9: no error for white space before "("
Bram Moolenaar <Bram@vim.org>
parents:
25646
diff
changeset
|
513 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
514 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
|
515 return name |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
516 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
517 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
518 def s:MyDefaultSecond(name: string, second: bool = true): string |
21345
5dd4cbc1e9e6
patch 8.2.1223: Vim9: invalid type error for function default value
Bram Moolenaar <Bram@vim.org>
parents:
21335
diff
changeset
|
519 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
|
520 enddef |
5dd4cbc1e9e6
patch 8.2.1223: Vim9: invalid type error for function default value
Bram Moolenaar <Bram@vim.org>
parents:
21335
diff
changeset
|
521 |
24272
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
522 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
523 def Test_call_default_args() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
524 g:MyDefaultArgs()->assert_equal('string') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
525 g:MyDefaultArgs(v:none)->assert_equal('string') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
526 g:MyDefaultArgs('one')->assert_equal('one') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
527 assert_fails('g:MyDefaultArgs("one", "two")', 'E118:', '', 4, '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
|
528 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
529 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
|
530 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
|
531 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
|
532 |
24272
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
533 var lines =<< trim END |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
534 def MyDefaultThird(name: string, aa = 'aa', bb = 'bb'): string |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
535 return name .. aa .. bb |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
536 enddef |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
537 |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
538 MyDefaultThird('->')->assert_equal('->aabb') |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
539 MyDefaultThird('->', v:none)->assert_equal('->aabb') |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
540 MyDefaultThird('->', 'xx')->assert_equal('->xxbb') |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
541 MyDefaultThird('->', v:none, v:none)->assert_equal('->aabb') |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
542 MyDefaultThird('->', 'xx', v:none)->assert_equal('->xxbb') |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
543 MyDefaultThird('->', v:none, 'yy')->assert_equal('->aayy') |
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
544 MyDefaultThird('->', 'xx', 'yy')->assert_equal('->xxyy') |
25108
de29f9a76233
patch 8.2.3091: Vim9: default argument expr. cannot use previous argument
Bram Moolenaar <Bram@vim.org>
parents:
25046
diff
changeset
|
545 |
de29f9a76233
patch 8.2.3091: Vim9: default argument expr. cannot use previous argument
Bram Moolenaar <Bram@vim.org>
parents:
25046
diff
changeset
|
546 def DefArg(mandatory: any, optional = mandatory): string |
de29f9a76233
patch 8.2.3091: Vim9: default argument expr. cannot use previous argument
Bram Moolenaar <Bram@vim.org>
parents:
25046
diff
changeset
|
547 return mandatory .. optional |
de29f9a76233
patch 8.2.3091: Vim9: default argument expr. cannot use previous argument
Bram Moolenaar <Bram@vim.org>
parents:
25046
diff
changeset
|
548 enddef |
de29f9a76233
patch 8.2.3091: Vim9: default argument expr. cannot use previous argument
Bram Moolenaar <Bram@vim.org>
parents:
25046
diff
changeset
|
549 DefArg(1234)->assert_equal('12341234') |
de29f9a76233
patch 8.2.3091: Vim9: default argument expr. cannot use previous argument
Bram Moolenaar <Bram@vim.org>
parents:
25046
diff
changeset
|
550 DefArg("ok")->assert_equal('okok') |
24272
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
551 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
552 v9.CheckDefAndScriptSuccess(lines) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
553 |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
554 v9.CheckScriptFailure(['def Func(arg: number = asdf)', 'enddef', 'defcompile'], 'E1001:') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
555 delfunc g:Func |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
556 v9.CheckScriptFailure(['def Func(arg: number = "text")', 'enddef', 'defcompile'], 'E1013: Argument 1: type mismatch, expected number but got string') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
557 delfunc g:Func |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
558 v9.CheckDefFailure(['def Func(x: number = )', 'enddef'], 'E15:') |
24097
26d3c1539bcc
patch 8.2.2590: Vim9: default argument value may cause internal error
Bram Moolenaar <Bram@vim.org>
parents:
24069
diff
changeset
|
559 |
24272
cabed216cc2f
patch 8.2.2677: Vim9: cannot use only some of the default arguments
Bram Moolenaar <Bram@vim.org>
parents:
24218
diff
changeset
|
560 lines =<< trim END |
24097
26d3c1539bcc
patch 8.2.2590: Vim9: default argument value may cause internal error
Bram Moolenaar <Bram@vim.org>
parents:
24069
diff
changeset
|
561 vim9script |
26d3c1539bcc
patch 8.2.2590: Vim9: default argument value may cause internal error
Bram Moolenaar <Bram@vim.org>
parents:
24069
diff
changeset
|
562 def Func(a = b == 0 ? 1 : 2, b = 0) |
26d3c1539bcc
patch 8.2.2590: Vim9: default argument value may cause internal error
Bram Moolenaar <Bram@vim.org>
parents:
24069
diff
changeset
|
563 enddef |
26d3c1539bcc
patch 8.2.2590: Vim9: default argument value may cause internal error
Bram Moolenaar <Bram@vim.org>
parents:
24069
diff
changeset
|
564 defcompile |
26d3c1539bcc
patch 8.2.2590: Vim9: default argument value may cause internal error
Bram Moolenaar <Bram@vim.org>
parents:
24069
diff
changeset
|
565 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
566 v9.CheckScriptFailure(lines, 'E1001: Variable not found: b') |
26674
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
567 |
26680
1b288eb2fcdc
patch 8.2.3869: Vim9: type checking for "any" is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26674
diff
changeset
|
568 # using script variable requires matching type or type cast when executed |
26674
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
569 lines =<< trim END |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
570 vim9script |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
571 var a: any |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
572 def Func(arg: string = a) |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
573 echo arg |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
574 enddef |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
575 defcompile |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
576 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
577 v9.CheckScriptSuccess(lines + ['a = "text"', 'Func()']) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
578 v9.CheckScriptFailure(lines + ['a = 123', 'Func()'], 'E1013: Argument 1: type mismatch, expected string but got number') |
26674
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
579 |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
580 # using global variable does not require type cast |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
581 lines =<< trim END |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
582 vim9script |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
583 def Func(arg: string = g:str) |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
584 echo arg |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
585 enddef |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
586 g:str = 'works' |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
587 Func() |
38a270fdd3f6
patch 8.2.3866: Vim9: type checking global variables is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
26650
diff
changeset
|
588 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
589 v9.CheckScriptSuccess(lines) |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
590 enddef |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
591 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
592 def s:FuncWithComment( # comment |
23511
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
593 a: number, #comment |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
594 b: bool, # comment |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
595 c: string) #comment |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
596 assert_equal(4, a) |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
597 assert_equal(true, b) |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
598 assert_equal('yes', c) |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
599 enddef |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
600 |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
601 def Test_func_with_comments() |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
602 FuncWithComment(4, true, 'yes') |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
603 |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
604 var lines =<< trim END |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
605 def Func(# comment |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
606 arg: string) |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
607 enddef |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
608 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
609 v9.CheckScriptFailure(lines, 'E125:', 1) |
23511
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
610 |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
611 lines =<< trim END |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
612 def Func( |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
613 arg: string# comment |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
614 ) |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
615 enddef |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
616 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
617 v9.CheckScriptFailure(lines, 'E475:', 2) |
23511
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
618 |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
619 lines =<< trim END |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
620 def Func( |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
621 arg: string |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
622 )# comment |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
623 enddef |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
624 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
625 v9.CheckScriptFailure(lines, 'E488:', 3) |
23511
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
626 enddef |
7e8703464f01
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
Bram Moolenaar <Bram@vim.org>
parents:
23481
diff
changeset
|
627 |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
628 def Test_nested_function() |
26323
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
629 def NestedDef(arg: string): string |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
630 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
|
631 enddef |
26323
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
632 NestedDef(':def')->assert_equal('nested :def') |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
633 |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
634 func NestedFunc(arg) |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
635 return 'nested ' .. a:arg |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
636 endfunc |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
637 NestedFunc(':func')->assert_equal('nested :func') |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
638 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
639 v9.CheckDefFailure(['def Nested()', 'enddef', 'Nested(66)'], 'E118:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
640 v9.CheckDefFailure(['def Nested(arg: string)', 'enddef', 'Nested()'], 'E119:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
641 |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
642 v9.CheckDefFailure(['def s:Nested()', 'enddef'], 'E1075:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
643 v9.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
|
644 |
23112
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
645 var lines =<< trim END |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
646 def Outer() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
647 def Inner() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
648 # comment |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
649 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
650 def Inner() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
651 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
652 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
653 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
654 v9.CheckDefFailure(lines, 'E1073:') |
23112
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
655 |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
656 lines =<< trim END |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
657 def Outer() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
658 def Inner() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
659 # comment |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
660 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
661 def! Inner() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
662 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
663 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
664 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
665 v9.CheckDefFailure(lines, 'E1117:') |
23112
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
666 |
26735
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
667 lines =<< trim END |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
668 vim9script |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
669 def Outer() |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
670 def Inner() |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
671 g:result = 'ok' |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
672 enddef |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
673 Inner() |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
674 enddef |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
675 Outer() |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
676 Inner() |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
677 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
678 v9.CheckScriptFailure(lines, 'E117: Unknown function: Inner') |
26735
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
679 assert_equal('ok', g:result) |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
680 unlet g:result |
44c7d42dff25
patch 8.2.3896: Vim9: no test for nested function not available later
Bram Moolenaar <Bram@vim.org>
parents:
26680
diff
changeset
|
681 |
23112
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
682 # nested function inside conditional |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
683 lines =<< trim END |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
684 vim9script |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
685 var thecount = 0 |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
686 if true |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
687 def Test(): number |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
688 def TheFunc(): number |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
689 thecount += 1 |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
690 return thecount |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
691 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
692 return TheFunc() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
693 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
694 endif |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
695 defcompile |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
696 assert_equal(1, Test()) |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
697 assert_equal(2, Test()) |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
698 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
699 v9.CheckScriptSuccess(lines) |
24152
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
700 |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
701 # also works when "thecount" is inside the "if" block |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
702 lines =<< trim END |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
703 vim9script |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
704 if true |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
705 var thecount = 0 |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
706 def Test(): number |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
707 def TheFunc(): number |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
708 thecount += 1 |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
709 return thecount |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
710 enddef |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
711 return TheFunc() |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
712 enddef |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
713 endif |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
714 defcompile |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
715 assert_equal(1, Test()) |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
716 assert_equal(2, Test()) |
c308076e225e
patch 8.2.2617: Vim9: script variable in block not found by function
Bram Moolenaar <Bram@vim.org>
parents:
24097
diff
changeset
|
717 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
718 v9.CheckScriptSuccess(lines) |
25632
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
719 |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
720 lines =<< trim END |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
721 vim9script |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
722 def Outer() |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
723 def Inner() |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
724 echo 'hello' |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
725 enddef burp |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
726 enddef |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
727 defcompile |
c204815f3058
patch 8.2.3352: Vim9: error for nested :enddef has wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
25630
diff
changeset
|
728 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
729 v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: burp', 3) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
730 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
731 |
23426
c3c690c8fcbf
patch 8.2.2256: Vim9: cannot use function( after line break in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23299
diff
changeset
|
732 def Test_not_nested_function() |
c3c690c8fcbf
patch 8.2.2256: Vim9: cannot use function( after line break in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23299
diff
changeset
|
733 echo printf('%d', |
c3c690c8fcbf
patch 8.2.2256: Vim9: cannot use function( after line break in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23299
diff
changeset
|
734 function('len')('xxx')) |
c3c690c8fcbf
patch 8.2.2256: Vim9: cannot use function( after line break in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23299
diff
changeset
|
735 enddef |
c3c690c8fcbf
patch 8.2.2256: Vim9: cannot use function( after line break in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23299
diff
changeset
|
736 |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
737 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
|
738 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
|
739 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
|
740 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
|
741 endfunc |
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
742 |
21558
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
743 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
|
744 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
|
745 vim9script |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
746 def Outer() |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
747 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
|
748 return 'inner' |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
749 enddef |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
750 enddef |
21566
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
751 defcompile |
1e3e5058041c
patch 8.2.1333: Vim9: memory leak when using nested global function
Bram Moolenaar <Bram@vim.org>
parents:
21564
diff
changeset
|
752 Outer() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
753 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
|
754 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
|
755 Outer() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
756 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
|
757 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
|
758 Outer() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
759 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
|
760 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
|
761 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
762 v9.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
|
763 |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
764 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
|
765 vim9script |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
766 def Outer() |
26323
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
767 func g:Inner() |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
768 return 'inner' |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
769 endfunc |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
770 enddef |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
771 defcompile |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
772 Outer() |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
773 g:Inner()->assert_equal('inner') |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
774 delfunc g:Inner |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
775 Outer() |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
776 g:Inner()->assert_equal('inner') |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
777 delfunc g:Inner |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
778 Outer() |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
779 g:Inner()->assert_equal('inner') |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
780 delfunc g:Inner |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
781 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
782 v9.CheckScriptSuccess(lines) |
26323
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
783 |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
784 lines =<< trim END |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
785 vim9script |
3841da4eac23
patch 8.2.3692: Vim9: cannot use :func inside a :def function
Bram Moolenaar <Bram@vim.org>
parents:
26205
diff
changeset
|
786 def Outer() |
21588
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
787 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
|
788 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
|
789 enddef |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
790 enddef |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
791 defcompile |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
792 Outer() |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
793 Outer() |
9ade1da22402
patch 8.2.1344: Vim9: No test for trying to redefine global function
Bram Moolenaar <Bram@vim.org>
parents:
21586
diff
changeset
|
794 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
795 v9.CheckScriptFailure(lines, "E122:") |
23285
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
796 delfunc g:Inner |
21604
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
797 |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
798 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
|
799 vim9script |
23291
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
800 def Outer() |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
801 def g:Inner() |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
802 echo map([1, 2, 3], (_, v) => v + 1) |
23291
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
803 enddef |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
804 g:Inner() |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
805 enddef |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
806 Outer() |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
807 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
808 v9.CheckScriptSuccess(lines) |
23291
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
809 delfunc g:Inner |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
810 |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
811 lines =<< trim END |
8e1427ac2bce
patch 8.2.2191: Vim9: using wrong name with lambda in nested function
Bram Moolenaar <Bram@vim.org>
parents:
23289
diff
changeset
|
812 vim9script |
21604
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
813 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
|
814 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
|
815 enddef |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
816 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
|
817 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
|
818 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
|
819 enddef |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
820 enddef |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
821 defcompile |
d9c45474cac1
patch 8.2.1352: Vim9: no error for shadowing a script-local function
Bram Moolenaar <Bram@vim.org>
parents:
21602
diff
changeset
|
822 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
823 v9.CheckScriptFailure(lines, "E1073:", 1) |
26205
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
824 |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
825 lines =<< trim END |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
826 vim9script |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
827 def Func() |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
828 echo 'script' |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
829 enddef |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
830 def Func() |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
831 echo 'script' |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
832 enddef |
9e5e331828da
patch 8.2.3634: error for already defined function uses wrong line number
Bram Moolenaar <Bram@vim.org>
parents:
26203
diff
changeset
|
833 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
834 v9.CheckScriptFailure(lines, "E1073:", 5) |
21558
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
835 enddef |
1c4d4aa22b37
patch 8.2.1329: Vim9: cannot define global function inside :def function
Bram Moolenaar <Bram@vim.org>
parents:
21544
diff
changeset
|
836 |
22973
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
837 def DefListAll() |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
838 def |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
839 enddef |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
840 |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
841 def DefListOne() |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
842 def DefListOne |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
843 enddef |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
844 |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
845 def DefListMatches() |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
846 def /DefList |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
847 enddef |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
848 |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
849 def Test_nested_def_list() |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
850 var funcs = split(execute('call DefListAll()'), "\n") |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
851 assert_true(len(funcs) > 10) |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
852 assert_true(funcs->index('def DefListAll()') >= 0) |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
853 |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
854 funcs = split(execute('call DefListOne()'), "\n") |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
855 assert_equal([' def DefListOne()', '1 def DefListOne', ' enddef'], funcs) |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
856 |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
857 funcs = split(execute('call DefListMatches()'), "\n") |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
858 assert_true(len(funcs) >= 3) |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
859 assert_true(funcs->index('def DefListAll()') >= 0) |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
860 assert_true(funcs->index('def DefListOne()') >= 0) |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
861 assert_true(funcs->index('def DefListMatches()') >= 0) |
23112
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
862 |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
863 var lines =<< trim END |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
864 vim9script |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
865 def Func() |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
866 def +Func+ |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
867 enddef |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
868 defcompile |
892303d45d2a
patch 8.2.2102: Vim9: not all error messages tested
Bram Moolenaar <Bram@vim.org>
parents:
23102
diff
changeset
|
869 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
870 v9.CheckScriptFailure(lines, 'E476:', 1) |
22973
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
871 enddef |
4c97c0747017
patch 8.2.2033: Vim9: :def without argument gives compilation error
Bram Moolenaar <Bram@vim.org>
parents:
22969
diff
changeset
|
872 |
21586
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
873 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
|
874 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
|
875 vim9script |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
876 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
|
877 return 'global' |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
878 enddef |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
879 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
|
880 return 'local' |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
881 enddef |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
882 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
|
883 Func()->assert_equal('local') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
884 delfunc g:Func |
21586
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
885 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
886 v9.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
|
887 |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
888 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
|
889 vim9script |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
890 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
|
891 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
|
892 enddef |
7e1316c6d0eb
patch 8.2.1423: Vim9: find global function when looking for script-local
Bram Moolenaar <Bram@vim.org>
parents:
21693
diff
changeset
|
893 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
|
894 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
895 v9.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
|
896 enddef |
5470c36ed7e6
patch 8.2.1343: Vim9: cannot find global function when using g:
Bram Moolenaar <Bram@vim.org>
parents:
21566
diff
changeset
|
897 |
22236
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
898 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
|
899 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
|
900 vim9script |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
901 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
|
902 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
|
903 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
904 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
|
905 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
|
906 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
|
907 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
908 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
|
909 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
|
910 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
|
911 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
912 v9.CheckScriptSuccess(lines) |
22236
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
913 |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
914 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
|
915 vim9script |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
916 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
|
917 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
|
918 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
919 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
|
920 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
|
921 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
922 AnotherFunc() |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
923 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
924 v9.CheckScriptFailure(lines, 'E705:') |
22236
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
925 delfunc g:Func |
24355
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
926 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
927 # global function is not found with g: prefix |
24355
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
928 lines =<< trim END |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
929 vim9script |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
930 def g:Func(): string |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
931 return 'global' |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
932 enddef |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
933 def AnotherFunc(): string |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
934 return Func() |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
935 enddef |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
936 assert_equal('global', AnotherFunc()) |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
937 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
938 v9.CheckScriptFailure(lines, 'E117:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
939 delfunc g:Func |
24355
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
940 |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
941 lines =<< trim END |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
942 vim9script |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
943 def g:Func(): string |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
944 return 'global' |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
945 enddef |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
946 assert_equal('global', g:Func()) |
24355
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
947 delfunc g:Func |
beb395ca3e2f
patch 8.2.2718: Vim9: no explicit test for using a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
24272
diff
changeset
|
948 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
949 v9.CheckScriptSuccess(lines) |
26974
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
950 |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
951 # This does not shadow "i" which is visible only inside the for loop |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
952 lines =<< trim END |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
953 vim9script |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
954 |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
955 def Foo(i: number) |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
956 echo i |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
957 enddef |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
958 |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
959 for i in range(3) |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
960 # Foo() is compiled here |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
961 Foo(i) |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
962 endfor |
fceb494e22de
patch 8.2.4016: Vim9: incorrect error for argument that is shadowing var
Bram Moolenaar <Bram@vim.org>
parents:
26960
diff
changeset
|
963 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
964 v9.CheckScriptSuccess(lines) |
22236
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
965 enddef |
3d0632b260fd
patch 8.2.1667: local function name cannot shadow a global function name
Bram Moolenaar <Bram@vim.org>
parents:
22222
diff
changeset
|
966 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
967 func TakesOneArg(arg) |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
968 echo a:arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
969 endfunc |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
970 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
971 def Test_call_wrong_args() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
972 v9.CheckDefFailure(['g:TakesOneArg()'], 'E119:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
973 v9.CheckDefFailure(['g:TakesOneArg(11, 22)'], 'E118:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
974 v9.CheckDefFailure(['bufnr(xxx)'], 'E1001:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
975 v9.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
|
976 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
977 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
|
978 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
|
979 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
|
980 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
|
981 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
|
982 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
|
983 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
984 v9.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
|
985 |
26851
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
986 # argument name declared earlier is found when declaring a function |
22318
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
987 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
|
988 vim9script |
23996
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
989 var name = 'piet' |
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
990 def FuncOne(name: string) |
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
991 echo nr |
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
992 enddef |
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
993 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
994 v9.CheckScriptFailure(lines, 'E1168:') |
23996
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
995 |
26851
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
996 # argument name declared later is only found when compiling |
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
997 lines =<< trim END |
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
998 vim9script |
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
999 def FuncOne(name: string) |
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
1000 echo nr |
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
1001 enddef |
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
1002 var name = 'piet' |
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
1003 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1004 v9.CheckScriptSuccess(lines) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1005 v9.CheckScriptFailure(lines + ['defcompile'], 'E1168:') |
26851
15913ba6363e
patch 8.2.3954: Vim9: no error for shadowing if script var is declared later
Bram Moolenaar <Bram@vim.org>
parents:
26845
diff
changeset
|
1006 |
23996
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
1007 lines =<< trim END |
c192411b27e8
patch 8.2.2540: Vim9: no error for using script var name for argument
Bram Moolenaar <Bram@vim.org>
parents:
23940
diff
changeset
|
1008 vim9script |
22318
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1009 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
|
1010 echo nr |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1011 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1012 def FuncTwo() |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1013 FuncOne() |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1014 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1015 defcompile |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1016 END |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1017 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
|
1018 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
|
1019 try |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1020 source Xscript |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1021 catch |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1022 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
|
1023 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
|
1024 didCatch = true |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1025 endtry |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1026 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
|
1027 |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1028 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
|
1029 vim9script |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1030 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
|
1031 echo nr |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1032 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1033 def FuncTwo() |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1034 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
|
1035 enddef |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1036 defcompile |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1037 END |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1038 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
|
1039 didCatch = false |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1040 try |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1041 source Xscript |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1042 catch |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1043 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
|
1044 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
|
1045 didCatch = true |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1046 endtry |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1047 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
|
1048 |
3f5f96a8dd83
patch 8.2.1708: Vim9: error message for function has unpritable characters
Bram Moolenaar <Bram@vim.org>
parents:
22314
diff
changeset
|
1049 delete('Xscript') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1050 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1051 |
23252
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1052 def Test_call_funcref_wrong_args() |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1053 var head =<< trim END |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1054 vim9script |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1055 def Func3(a1: string, a2: number, a3: list<number>) |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1056 echo a1 .. a2 .. a3[0] |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1057 enddef |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1058 def Testme() |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1059 var funcMap: dict<func> = {func: Func3} |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1060 END |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1061 var tail =<< trim END |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1062 enddef |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1063 Testme() |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1064 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1065 v9.CheckScriptSuccess(head + ["funcMap['func']('str', 123, [1, 2, 3])"] + tail) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1066 |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1067 v9.CheckScriptFailure(head + ["funcMap['func']('str', 123)"] + tail, 'E119:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1068 v9.CheckScriptFailure(head + ["funcMap['func']('str', 123, [1], 4)"] + tail, 'E118:') |
23527
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1069 |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1070 var lines =<< trim END |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1071 vim9script |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1072 var Ref: func(number): any |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1073 Ref = (j) => !j |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1074 echo Ref(false) |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1075 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1076 v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got bool', 4) |
23527
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1077 |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1078 lines =<< trim END |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1079 vim9script |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1080 var Ref: func(number): any |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1081 Ref = (j) => !j |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1082 call Ref(false) |
27ca5534a408
patch 8.2.2306: Vim9: when using function reference type is not checked
Bram Moolenaar <Bram@vim.org>
parents:
23511
diff
changeset
|
1083 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1084 v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got bool', 4) |
23252
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1085 enddef |
35583da6397e
patch 8.2.2172: Vim9: number of arguments is not always checked
Bram Moolenaar <Bram@vim.org>
parents:
23249
diff
changeset
|
1086 |
22816
8a5369f5f2b4
patch 8.2.1956: Vim9: cannot specify argument types for lambda
Bram Moolenaar <Bram@vim.org>
parents:
22760
diff
changeset
|
1087 def Test_call_lambda_args() |
24400
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1088 var lines =<< trim END |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1089 var Callback = (..._) => 'anything' |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1090 assert_equal('anything', Callback()) |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1091 assert_equal('anything', Callback(1)) |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1092 assert_equal('anything', Callback('a', 2)) |
24402
009a540f16a6
patch 8.2.2741: Vim9: Partial call does not check right arguments
Bram Moolenaar <Bram@vim.org>
parents:
24400
diff
changeset
|
1093 |
009a540f16a6
patch 8.2.2741: Vim9: Partial call does not check right arguments
Bram Moolenaar <Bram@vim.org>
parents:
24400
diff
changeset
|
1094 assert_equal('xyz', ((a: string): string => a)('xyz')) |
24400
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1095 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1096 v9.CheckDefAndScriptSuccess(lines) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1097 |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1098 v9.CheckDefFailure(['echo ((i) => 0)()'], |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
1099 'E119: Not enough arguments for function: ((i) => 0)()') |
22816
8a5369f5f2b4
patch 8.2.1956: Vim9: cannot specify argument types for lambda
Bram Moolenaar <Bram@vim.org>
parents:
22760
diff
changeset
|
1100 |
24400
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1101 lines =<< trim END |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
1102 var Ref = (x: number, y: number) => x + y |
22816
8a5369f5f2b4
patch 8.2.1956: Vim9: cannot specify argument types for lambda
Bram Moolenaar <Bram@vim.org>
parents:
22760
diff
changeset
|
1103 echo Ref(1, 'x') |
8a5369f5f2b4
patch 8.2.1956: Vim9: cannot specify argument types for lambda
Bram Moolenaar <Bram@vim.org>
parents:
22760
diff
changeset
|
1104 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1105 v9.CheckDefFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got string') |
23481
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1106 |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1107 lines =<< trim END |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1108 var Ref: func(job, string, number) |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1109 Ref = (x, y) => 0 |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1110 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1111 v9.CheckDefAndScriptFailure(lines, 'E1012:') |
23481
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1112 |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1113 lines =<< trim END |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1114 var Ref: func(job, string) |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1115 Ref = (x, y, z) => 0 |
62fe9a7fd582
patch 8.2.2283: Vim9: crash when lambda has fewer arguments than expected
Bram Moolenaar <Bram@vim.org>
parents:
23444
diff
changeset
|
1116 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1117 v9.CheckDefAndScriptFailure(lines, 'E1012:') |
24033
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1118 |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1119 lines =<< trim END |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1120 var one = 1 |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1121 var l = [1, 2, 3] |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1122 echo map(l, (one) => one) |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1123 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1124 v9.CheckDefFailure(lines, 'E1167:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1125 v9.CheckScriptFailure(['vim9script'] + lines, 'E1168:') |
24033
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1126 |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1127 lines =<< trim END |
25038
efdb9608cc11
patch 8.2.3056: Vim9: using default value in lambda gives confusing error
Bram Moolenaar <Bram@vim.org>
parents:
25030
diff
changeset
|
1128 var Ref: func(any, ?any): bool |
efdb9608cc11
patch 8.2.3056: Vim9: using default value in lambda gives confusing error
Bram Moolenaar <Bram@vim.org>
parents:
25030
diff
changeset
|
1129 Ref = (_, y = 1) => false |
efdb9608cc11
patch 8.2.3056: Vim9: using default value in lambda gives confusing error
Bram Moolenaar <Bram@vim.org>
parents:
25030
diff
changeset
|
1130 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1131 v9.CheckDefAndScriptFailure(lines, 'E1172:') |
25038
efdb9608cc11
patch 8.2.3056: Vim9: using default value in lambda gives confusing error
Bram Moolenaar <Bram@vim.org>
parents:
25030
diff
changeset
|
1132 |
efdb9608cc11
patch 8.2.3056: Vim9: using default value in lambda gives confusing error
Bram Moolenaar <Bram@vim.org>
parents:
25030
diff
changeset
|
1133 lines =<< trim END |
25042
3f39b6b73019
patch 8.2.3058: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25038
diff
changeset
|
1134 var a = 0 |
3f39b6b73019
patch 8.2.3058: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25038
diff
changeset
|
1135 var b = (a == 0 ? 1 : 2) |
3f39b6b73019
patch 8.2.3058: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25038
diff
changeset
|
1136 assert_equal(1, b) |
25046
2f702d19013a
patch 8.2.3060: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25042
diff
changeset
|
1137 var txt = 'a' |
2f702d19013a
patch 8.2.3060: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25042
diff
changeset
|
1138 b = (txt =~ 'x' ? 1 : 2) |
2f702d19013a
patch 8.2.3060: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25042
diff
changeset
|
1139 assert_equal(2, b) |
25042
3f39b6b73019
patch 8.2.3058: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25038
diff
changeset
|
1140 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1141 v9.CheckDefAndScriptSuccess(lines) |
25042
3f39b6b73019
patch 8.2.3058: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25038
diff
changeset
|
1142 |
3f39b6b73019
patch 8.2.3058: Vim9: cannot use ternary operator in parenthesis
Bram Moolenaar <Bram@vim.org>
parents:
25038
diff
changeset
|
1143 lines =<< trim END |
24033
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1144 def ShadowLocal() |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1145 var one = 1 |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1146 var l = [1, 2, 3] |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1147 echo map(l, (one) => one) |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1148 enddef |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1149 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1150 v9.CheckDefFailure(lines, 'E1167:') |
24033
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1151 |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1152 lines =<< trim END |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1153 def Shadowarg(one: number) |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1154 var l = [1, 2, 3] |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1155 echo map(l, (one) => one) |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1156 enddef |
308d29307910
patch 8.2.2558: no error if a lambda argument shadows a variable
Bram Moolenaar <Bram@vim.org>
parents:
23996
diff
changeset
|
1157 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1158 v9.CheckDefFailure(lines, 'E1167:') |
24398
bed5ec739304
patch 8.2.2739: Vim9: a lambda accepts too many arguments at the script level
Bram Moolenaar <Bram@vim.org>
parents:
24371
diff
changeset
|
1159 |
bed5ec739304
patch 8.2.2739: Vim9: a lambda accepts too many arguments at the script level
Bram Moolenaar <Bram@vim.org>
parents:
24371
diff
changeset
|
1160 lines =<< trim END |
bed5ec739304
patch 8.2.2739: Vim9: a lambda accepts too many arguments at the script level
Bram Moolenaar <Bram@vim.org>
parents:
24371
diff
changeset
|
1161 echo ((a) => a)('aa', 'bb') |
bed5ec739304
patch 8.2.2739: Vim9: a lambda accepts too many arguments at the script level
Bram Moolenaar <Bram@vim.org>
parents:
24371
diff
changeset
|
1162 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1163 v9.CheckDefAndScriptFailure(lines, 'E118:', 1) |
25316
0716cc2e4a8b
patch 8.2.3195: Vim9: unclear error when passing too many arguments to lambda
Bram Moolenaar <Bram@vim.org>
parents:
25276
diff
changeset
|
1164 |
0716cc2e4a8b
patch 8.2.3195: Vim9: unclear error when passing too many arguments to lambda
Bram Moolenaar <Bram@vim.org>
parents:
25276
diff
changeset
|
1165 lines =<< trim END |
0716cc2e4a8b
patch 8.2.3195: Vim9: unclear error when passing too many arguments to lambda
Bram Moolenaar <Bram@vim.org>
parents:
25276
diff
changeset
|
1166 echo 'aa'->((a) => a)('bb') |
0716cc2e4a8b
patch 8.2.3195: Vim9: unclear error when passing too many arguments to lambda
Bram Moolenaar <Bram@vim.org>
parents:
25276
diff
changeset
|
1167 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1168 v9.CheckDefFailure(lines, 'E118: Too many arguments for function: ->((a) => a)(''bb'')', 1) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1169 v9.CheckScriptFailure(['vim9script'] + lines, 'E118: Too many arguments for function: <lambda>', 2) |
22816
8a5369f5f2b4
patch 8.2.1956: Vim9: cannot specify argument types for lambda
Bram Moolenaar <Bram@vim.org>
parents:
22760
diff
changeset
|
1170 enddef |
8a5369f5f2b4
patch 8.2.1956: Vim9: cannot specify argument types for lambda
Bram Moolenaar <Bram@vim.org>
parents:
22760
diff
changeset
|
1171 |
26203
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1172 def Test_lambda_line_nr() |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1173 var lines =<< trim END |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1174 vim9script |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1175 # comment |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1176 # comment |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1177 var id = timer_start(1'000, (_) => 0) |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1178 var out = execute('verbose ' .. timer_info(id)[0].callback |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1179 ->string() |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1180 ->substitute("('\\|')", ' ', 'g')) |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1181 assert_match('Last set from .* line 4', out) |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1182 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1183 v9.CheckScriptSuccess(lines) |
26203
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1184 enddef |
a968027f8a2c
patch 8.2.3633: Vim9: line number of lambda is off by one
Bram Moolenaar <Bram@vim.org>
parents:
26053
diff
changeset
|
1185 |
24156
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1186 def FilterWithCond(x: string, Cond: func(string): bool): bool |
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1187 return Cond(x) |
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1188 enddef |
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1189 |
23808
baf9069f64ca
patch 8.2.2445: Vim9: no proper error for lambda missing return type
Bram Moolenaar <Bram@vim.org>
parents:
23727
diff
changeset
|
1190 def Test_lambda_return_type() |
baf9069f64ca
patch 8.2.2445: Vim9: no proper error for lambda missing return type
Bram Moolenaar <Bram@vim.org>
parents:
23727
diff
changeset
|
1191 var lines =<< trim END |
baf9069f64ca
patch 8.2.2445: Vim9: no proper error for lambda missing return type
Bram Moolenaar <Bram@vim.org>
parents:
23727
diff
changeset
|
1192 var Ref = (): => 123 |
baf9069f64ca
patch 8.2.2445: Vim9: no proper error for lambda missing return type
Bram Moolenaar <Bram@vim.org>
parents:
23727
diff
changeset
|
1193 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1194 v9.CheckDefAndScriptFailure(lines, 'E1157:', 1) |
24156
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1195 |
24685
04205b7d67d5
patch 8.2.2881: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24651
diff
changeset
|
1196 # no space before the return type |
04205b7d67d5
patch 8.2.2881: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24651
diff
changeset
|
1197 lines =<< trim END |
04205b7d67d5
patch 8.2.2881: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24651
diff
changeset
|
1198 var Ref = (x):number => x + 1 |
04205b7d67d5
patch 8.2.2881: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24651
diff
changeset
|
1199 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1200 v9.CheckDefAndScriptFailure(lines, 'E1069:', 1) |
24685
04205b7d67d5
patch 8.2.2881: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24651
diff
changeset
|
1201 |
24156
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1202 # this works |
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1203 for x in ['foo', 'boo'] |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1204 echo g:FilterWithCond(x, (v) => v =~ '^b') |
24156
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1205 endfor |
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1206 |
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1207 # this fails |
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1208 lines =<< trim END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1209 echo g:FilterWithCond('foo', (v) => v .. '^b') |
24156
a358fa462560
patch 8.2.2619: Vim9: no test for return type of lambda
Bram Moolenaar <Bram@vim.org>
parents:
24152
diff
changeset
|
1210 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1211 v9.CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected func(string): bool but got func(any): string', 1) |
24890
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1212 |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1213 lines =<< trim END |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1214 var Lambda1 = (x) => { |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1215 return x |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1216 } |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1217 assert_equal('asdf', Lambda1('asdf')) |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1218 var Lambda2 = (x): string => { |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1219 return x |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1220 } |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1221 assert_equal('foo', Lambda2('foo')) |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1222 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1223 v9.CheckDefAndScriptSuccess(lines) |
24890
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1224 |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1225 lines =<< trim END |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1226 var Lambda = (x): string => { |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1227 return x |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1228 } |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1229 echo Lambda(['foo']) |
0cba2be8cbd7
patch 8.2.2983: Vim9: an inline function requires specifying the return type
Bram Moolenaar <Bram@vim.org>
parents:
24874
diff
changeset
|
1230 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1231 v9.CheckDefExecAndScriptFailure(lines, 'E1012:') |
23808
baf9069f64ca
patch 8.2.2445: Vim9: no proper error for lambda missing return type
Bram Moolenaar <Bram@vim.org>
parents:
23727
diff
changeset
|
1232 enddef |
baf9069f64ca
patch 8.2.2445: Vim9: no proper error for lambda missing return type
Bram Moolenaar <Bram@vim.org>
parents:
23727
diff
changeset
|
1233 |
23171
bb7531f77529
patch 8.2.2131: Vim9: crash when lambda uses same var as assignment
Bram Moolenaar <Bram@vim.org>
parents:
23112
diff
changeset
|
1234 def Test_lambda_uses_assigned_var() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1235 v9.CheckDefSuccess([ |
23171
bb7531f77529
patch 8.2.2131: Vim9: crash when lambda uses same var as assignment
Bram Moolenaar <Bram@vim.org>
parents:
23112
diff
changeset
|
1236 'var x: any = "aaa"' |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
1237 'x = filter(["bbb"], (_, v) => v =~ x)']) |
23171
bb7531f77529
patch 8.2.2131: Vim9: crash when lambda uses same var as assignment
Bram Moolenaar <Bram@vim.org>
parents:
23112
diff
changeset
|
1238 enddef |
bb7531f77529
patch 8.2.2131: Vim9: crash when lambda uses same var as assignment
Bram Moolenaar <Bram@vim.org>
parents:
23112
diff
changeset
|
1239 |
24061
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1240 def Test_pass_legacy_lambda_to_def_func() |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1241 var lines =<< trim END |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1242 vim9script |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1243 func Foo() |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1244 eval s:Bar({x -> 0}) |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1245 endfunc |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1246 def Bar(y: any) |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1247 enddef |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1248 Foo() |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1249 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1250 v9.CheckScriptSuccess(lines) |
24996
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1251 |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1252 lines =<< trim END |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1253 vim9script |
25126
b825efff9790
patch 8.2.3100: Vim9: no error when using type with unknown number of args
Bram Moolenaar <Bram@vim.org>
parents:
25108
diff
changeset
|
1254 def g:TestFunc(f: func) |
24996
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1255 enddef |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1256 legacy call g:TestFunc({-> 0}) |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1257 delfunc g:TestFunc |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1258 |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1259 def g:TestFunc(f: func(number)) |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1260 enddef |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1261 legacy call g:TestFunc({nr -> 0}) |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1262 delfunc g:TestFunc |
0136c6ee1961
patch 8.2.3035: Vim9: crash when calling :def function with partial
Bram Moolenaar <Bram@vim.org>
parents:
24988
diff
changeset
|
1263 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1264 v9.CheckScriptSuccess(lines) |
24061
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1265 enddef |
d6489b4eb14e
patch 8.2.2572: Vim9: crash when getting the types for a legacy function
Bram Moolenaar <Bram@vim.org>
parents:
24033
diff
changeset
|
1266 |
26053
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1267 def Test_lambda_in_reduce_line_break() |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1268 # this was using freed memory |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1269 var lines =<< trim END |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1270 vim9script |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1271 const result: dict<number> = |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1272 ['Bob', 'Sam', 'Cat', 'Bob', 'Cat', 'Cat'] |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1273 ->reduce((acc, val) => { |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1274 if has_key(acc, val) |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1275 acc[val] += 1 |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1276 return acc |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1277 else |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1278 acc[val] = 1 |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1279 return acc |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1280 endif |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1281 }, {}) |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1282 assert_equal({Bob: 2, Sam: 1, Cat: 3}, result) |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1283 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1284 v9.CheckScriptSuccess(lines) |
26053
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1285 enddef |
e861c5aaedd8
patch 8.2.3560: using freed memory with lambda
Bram Moolenaar <Bram@vim.org>
parents:
25800
diff
changeset
|
1286 |
26470
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1287 def Test_set_opfunc_to_lambda() |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1288 var lines =<< trim END |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1289 vim9script |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1290 nnoremap <expr> <F4> <SID>CountSpaces() .. '_' |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1291 def CountSpaces(type = ''): string |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1292 if type == '' |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1293 &operatorfunc = (t) => CountSpaces(t) |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1294 return 'g@' |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1295 endif |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1296 normal! '[V']y |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1297 g:result = getreg('"')->count(' ') |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1298 return '' |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1299 enddef |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1300 new |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1301 'a b c d e'->setline(1) |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1302 feedkeys("\<F4>", 'x') |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1303 assert_equal(4, g:result) |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1304 bwipe! |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1305 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1306 v9.CheckScriptSuccess(lines) |
26470
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1307 enddef |
ff0310e6f889
patch 8.2.3765: Vim9: cannot use a lambda for 'opfunc' and others
Bram Moolenaar <Bram@vim.org>
parents:
26378
diff
changeset
|
1308 |
26528
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1309 def Test_set_opfunc_to_global_function() |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1310 var lines =<< trim END |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1311 vim9script |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1312 def g:CountSpaces(type = ''): string |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1313 normal! '[V']y |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1314 g:result = getreg('"')->count(' ') |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1315 return '' |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1316 enddef |
26594
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1317 # global function works at script level |
26528
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1318 &operatorfunc = g:CountSpaces |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1319 new |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1320 'a b c d e'->setline(1) |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1321 feedkeys("g@_", 'x') |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1322 assert_equal(4, g:result) |
26594
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1323 |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1324 &operatorfunc = '' |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1325 g:result = 0 |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1326 # global function works in :def function |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1327 def Func() |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1328 &operatorfunc = g:CountSpaces |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1329 enddef |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1330 Func() |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1331 feedkeys("g@_", 'x') |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1332 assert_equal(4, g:result) |
b12d8a5af20e
patch 8.2.3826: Vim9: using "g:Func" as funcref doesn't work in :def function
Bram Moolenaar <Bram@vim.org>
parents:
26564
diff
changeset
|
1333 |
26528
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1334 bwipe! |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1335 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1336 v9.CheckScriptSuccess(lines) |
26528
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1337 &operatorfunc = '' |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1338 enddef |
4d8226001391
patch 8.2.3793: using "g:Func" as a funcref does not work in script context
Bram Moolenaar <Bram@vim.org>
parents:
26506
diff
changeset
|
1339 |
26530
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1340 def Test_use_script_func_name_with_prefix() |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1341 var lines =<< trim END |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1342 vim9script |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1343 func s:Getit() |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1344 return 'it' |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1345 endfunc |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1346 var Fn = s:Getit |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1347 assert_equal('it', Fn()) |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1348 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1349 v9.CheckScriptSuccess(lines) |
26530
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1350 enddef |
2fbd05a873e3
patch 8.2.3794: Vim9: cannot find script-local func using "s:"
Bram Moolenaar <Bram@vim.org>
parents:
26528
diff
changeset
|
1351 |
26482
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1352 def Test_lambda_type_allocated() |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1353 # Check that unreferencing a partial using a lambda can use the variable type |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1354 # after the lambda has been freed and does not leak memory. |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1355 var lines =<< trim END |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1356 vim9script |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1357 |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1358 func MyomniFunc1(val, findstart, base) |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1359 return a:findstart ? 0 : [] |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1360 endfunc |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1361 |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1362 var Lambda = (a, b) => MyomniFunc1(19, a, b) |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1363 &omnifunc = Lambda |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1364 Lambda = (a, b) => MyomniFunc1(20, a, b) |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1365 &omnifunc = string(Lambda) |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1366 Lambda = (a, b) => strlen(a) |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1367 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1368 v9.CheckScriptSuccess(lines) |
26482
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1369 enddef |
b115b552071f
patch 8.2.3771: Vim9: accessing freed memory when checking type
Bram Moolenaar <Bram@vim.org>
parents:
26470
diff
changeset
|
1370 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1371 " Default arg and varargs |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1372 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
|
1373 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
|
1374 for s in rest |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1375 res ..= ',' .. s |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1376 endfor |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1377 return res |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1378 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1379 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1380 def Test_call_def_varargs() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1381 assert_fails('g:MyDefVarargs()', 'E119:', '', 1, 'Test_call_def_varargs') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1382 g:MyDefVarargs('one')->assert_equal('one,foo') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1383 g:MyDefVarargs('one', 'two')->assert_equal('one,two') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1384 g:MyDefVarargs('one', 'two', 'three')->assert_equal('one,two,three') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1385 v9.CheckDefFailure(['g:MyDefVarargs("one", 22)'], |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
1386 'E1013: Argument 2: type mismatch, expected string but got number') |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1387 v9.CheckDefFailure(['g:MyDefVarargs("one", "two", 123)'], |
22296
006b8ab9d554
patch 8.2.1697: inconsistent capitalization of error messages
Bram Moolenaar <Bram@vim.org>
parents:
22292
diff
changeset
|
1388 '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
|
1389 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1390 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
|
1391 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1392 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
|
1393 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1394 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1395 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
|
1396 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1397 v9.CheckScriptSuccess(lines) |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1398 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1399 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
|
1400 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1401 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
|
1402 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1403 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1404 Func() |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1405 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1406 v9.CheckScriptSuccess(lines) |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1407 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1408 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
|
1409 vim9script |
24400
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1410 def Func(...l: list<any>) |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1411 echo l |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1412 enddef |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1413 Func(0) |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1414 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1415 v9.CheckScriptSuccess(lines) |
24400
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1416 |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1417 lines =<< trim END |
62e978382fa0
patch 8.2.2740: Vim9: lambda with varargs doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
24398
diff
changeset
|
1418 vim9script |
22292
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
1419 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
|
1420 echo l |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
1421 enddef |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
1422 Func(0) |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
1423 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1424 v9.CheckScriptFailure(lines, 'E1180:', 2) |
22292
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
1425 |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
1426 lines =<< trim END |
3515f341e8ac
patch 8.2.1695: Vim9: crash when using varargs type "any"
Bram Moolenaar <Bram@vim.org>
parents:
22284
diff
changeset
|
1427 vim9script |
22349
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
1428 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
|
1429 echo _l |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
1430 enddef |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
1431 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
|
1432 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1433 v9.CheckScriptSuccess(lines) |
22349
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
1434 |
b66a2e046c2e
patch 8.2.1723: Vim9: Variable argument name cannot start with underscore
Bram Moolenaar <Bram@vim.org>
parents:
22339
diff
changeset
|
1435 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
|
1436 vim9script |
21481
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1437 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
|
1438 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1439 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1440 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
|
1441 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1442 v9.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
|
1443 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1444 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
|
1445 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1446 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
|
1447 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1448 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1449 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
|
1450 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1451 v9.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
|
1452 |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1453 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
|
1454 vim9script |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1455 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
|
1456 echo l |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1457 enddef |
279b3415947f
patch 8.2.1291: Vim9: type of varargs items is not checked
Bram Moolenaar <Bram@vim.org>
parents:
21475
diff
changeset
|
1458 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
|
1459 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1460 v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch') |
23879
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1461 |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1462 lines =<< trim END |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1463 vim9script |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1464 def Func( # some comment |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1465 ...l = [] |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1466 ) |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1467 echo l |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1468 enddef |
9ddf1a537fc2
patch 8.2.2481: Vim9: confusing error when variable arguments have default
Bram Moolenaar <Bram@vim.org>
parents:
23808
diff
changeset
|
1469 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1470 v9.CheckScriptFailure(lines, 'E1160:') |
25543
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1471 |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1472 lines =<< trim END |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1473 vim9script |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1474 def DoIt() |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1475 g:Later('') |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1476 enddef |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1477 defcompile |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1478 def g:Later(...l: list<number>) |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1479 enddef |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1480 DoIt() |
a84e75d73fde
patch 8.2.3308: Vim9: no runtime check for argument type with varargs only
Bram Moolenaar <Bram@vim.org>
parents:
25489
diff
changeset
|
1481 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1482 v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected number but got string') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1483 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1484 |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1485 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
|
1486 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1487 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
|
1488 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
|
1489 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1490 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1491 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
|
1492 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
|
1493 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1494 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1495 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
|
1496 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
|
1497 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1498 |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1499 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
|
1500 var RefDefArg: func(?string) |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
1501 RefDefArg = g:FuncOneDefArg |
19975
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1502 RefDefArg() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1503 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
|
1504 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
|
1505 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
|
1506 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1507 var RefDef2Arg: func(?number, ?string): string |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
1508 RefDef2Arg = g:FuncTwoDefArg |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1509 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
|
1510 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
|
1511 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
|
1512 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1513 v9.CheckDefFailure(['var RefWrong: func(string?)'], 'E1010:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1514 v9.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
|
1515 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1516 var RefVarargs: func(...list<string>): string |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
1517 RefVarargs = g:FuncVarargs |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1518 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
|
1519 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
|
1520 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
|
1521 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1522 v9.CheckDefFailure(['var RefWrong: func(...list<string>, string)'], 'E110:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1523 v9.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
|
1524 enddef |
4e8e0ce576af
patch 8.2.0543: Vim9: function with varargs does not work properly
Bram Moolenaar <Bram@vim.org>
parents:
19946
diff
changeset
|
1525 |
19944
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
1526 " Only varargs |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
1527 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
|
1528 return join(args, ',') |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
1529 enddef |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
1530 |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
1531 def Test_call_varargs_only() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1532 g:MyVarargsOnly()->assert_equal('') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1533 g:MyVarargsOnly('one')->assert_equal('one') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1534 g:MyVarargsOnly('one', 'two')->assert_equal('one,two') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1535 v9.CheckDefFailure(['g:MyVarargsOnly(1)'], 'E1013: Argument 1: type mismatch, expected string but got number') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1536 v9.CheckDefFailure(['g: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
|
1537 enddef |
3055cd26e139
patch 8.2.0528: Vim9: function arguments insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19942
diff
changeset
|
1538 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1539 def Test_using_var_as_arg() |
26845
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1540 var lines =<< trim END |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1541 def Func(x: number) |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1542 var x = 234 |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1543 enddef |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1544 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1545 v9.CheckDefFailure(lines, 'E1006:') |
26845
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1546 |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1547 lines =<< trim END |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1548 def Func(Ref: number) |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1549 def Ref() |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1550 enddef |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1551 enddef |
a6ccb6ec581c
patch 8.2.3951: Vim9: memory leak when text after a nested function
Bram Moolenaar <Bram@vim.org>
parents:
26792
diff
changeset
|
1552 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1553 v9.CheckDefFailure(lines, 'E1073:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1554 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1555 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1556 def s:DictArg(arg: 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
|
1557 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
|
1558 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
|
1559 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1560 def s:ListArg(arg: 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
|
1561 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
|
1562 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
|
1563 |
fc2d76e0994c
patch 8.2.0733: Vim9: assigning to dict or list argument does not work
Bram Moolenaar <Bram@vim.org>
parents:
20303
diff
changeset
|
1564 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
|
1565 # 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
|
1566 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
|
1567 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
|
1568 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
|
1569 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
|
1570 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
|
1571 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
|
1572 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1573 v9.CheckScriptFailure(['def Func(arg: number)', 'arg = 3', 'enddef', 'defcompile'], 'E1090:') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1574 delfunc! g:Func |
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
|
1575 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
|
1576 |
22339
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
1577 " These argument names are reserved in legacy functions. |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1578 def s:WithReservedNames(firstline: string, lastline: string): string |
22339
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
1579 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
|
1580 enddef |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
1581 |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
1582 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
|
1583 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
|
1584 enddef |
56f674e7518c
patch 8.2.1718: Vim9: :def function disallows "firstline" for no good reason
Bram Moolenaar <Bram@vim.org>
parents:
22318
diff
changeset
|
1585 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1586 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
|
1587 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
|
1588 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
|
1589 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1590 |
20140
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1591 func DefinedLater(arg) |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1592 return a:arg |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1593 endfunc |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1594 |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1595 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
|
1596 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
|
1597 assert_fails('NotAFunc()', 'E117:', '', 2, 'Test_call_funcref') # comment after call |
26506
4a1d2abc2016
patch 8.2.3783: confusing error for using a variable as a function
Bram Moolenaar <Bram@vim.org>
parents:
26482
diff
changeset
|
1598 assert_fails('g:NotAFunc()', 'E1085:', '', 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
|
1599 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1600 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
|
1601 vim9script |
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
1602 def RetNumber(): number |
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
1603 return 123 |
166c15374bda
patch 8.2.1270: Vim9: not skipping over function type declaration
Bram Moolenaar <Bram@vim.org>
parents:
21383
diff
changeset
|
1604 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1605 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
|
1606 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
|
1607 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1608 v9.CheckScriptSuccess(lines) |
21441
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1609 |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1610 lines =<< trim END |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1611 vim9script |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1612 def RetNumber(): number |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1613 return 123 |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1614 enddef |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1615 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
|
1616 return F() |
78d97ee2c707
patch 8.2.1271: Vim9: Error for Funcref function argument type
Bram Moolenaar <Bram@vim.org>
parents:
21439
diff
changeset
|
1617 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1618 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
|
1619 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
|
1620 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1621 v9.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
|
1622 |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
1623 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
|
1624 vim9script |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
1625 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
|
1626 echo nr |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
1627 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1628 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
|
1629 Funcref(123) |
49072a858baf
patch 8.2.1284: Vim9: skipping over type includes following white space
Bram Moolenaar <Bram@vim.org>
parents:
21463
diff
changeset
|
1630 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1631 v9.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
|
1632 |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
1633 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
|
1634 vim9script |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
1635 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
|
1636 echo nr |
4d156aead799
patch 8.2.1285: Vim9: argument types are not checked on assignment
Bram Moolenaar <Bram@vim.org>
parents:
21467
diff
changeset
|
1637 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1638 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
|
1639 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1640 v9.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
|
1641 |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
1642 lines =<< trim END |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
1643 vim9script |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
1644 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
|
1645 g:echo = nr |
574517d682cf
patch 8.2.1300: Vim9: optional argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21481
diff
changeset
|
1646 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1647 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
|
1648 Funcref() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1649 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
|
1650 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
|
1651 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
|
1652 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1653 v9.CheckScriptSuccess(lines) |
21502
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
1654 |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
1655 lines =<< trim END |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
1656 vim9script |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
1657 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
|
1658 g:echo = l |
179697662a5a
patch 8.2.1301: Vim9: varargs argument type not parsed properly
Bram Moolenaar <Bram@vim.org>
parents:
21500
diff
changeset
|
1659 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1660 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
|
1661 Funcref() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1662 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
|
1663 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
|
1664 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
|
1665 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1666 v9.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
|
1667 |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
1668 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
|
1669 vim9script |
e87a97868bbc
patch 8.2.1302: Vim9: varargs arg after optional arg does not work
Bram Moolenaar <Bram@vim.org>
parents:
21502
diff
changeset
|
1670 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
|
1671 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
|
1672 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
|
1673 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
|
1674 enddef |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1675 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
|
1676 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
|
1677 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
|
1678 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
|
1679 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1680 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
|
1681 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
|
1682 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
|
1683 |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1684 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
|
1685 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
|
1686 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
|
1687 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1688 v9.CheckScriptSuccess(lines) |
20140
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1689 enddef |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1690 |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1691 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
|
1692 let NotAFunc = 'text' |
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1693 |
19993
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
1694 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
|
1695 # 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
|
1696 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
|
1697 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
|
1698 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
|
1699 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
|
1700 |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
1701 # 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
|
1702 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
|
1703 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
|
1704 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
|
1705 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
|
1706 |
21353
fb8c8fcb7b60
patch 8.2.1227: Vim9: allowing both quoted and # comments is confusing
Bram Moolenaar <Bram@vim.org>
parents:
21347
diff
changeset
|
1707 # 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
|
1708 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
|
1709 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
|
1710 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
|
1711 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
|
1712 enddef |
efe864a7ce4f
patch 8.2.0552: Vim9: some errors not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
19985
diff
changeset
|
1713 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1714 def FuncWithForwardCall() |
20140
39a18a0df429
patch 8.2.0625: Vim9: confusing error when calling unknown function
Bram Moolenaar <Bram@vim.org>
parents:
20029
diff
changeset
|
1715 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
|
1716 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1717 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1718 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
|
1719 return arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1720 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1721 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1722 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
|
1723 # Error in called function requires unwinding the call stack. |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
1724 assert_fails('g: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
|
1725 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1726 |
26790
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1727 def Test_nested_function_with_nextcmd() |
26747
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1728 var lines =<< trim END |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1729 vim9script |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1730 # Define an outer function |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1731 def FirstFunction() |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1732 # Define an inner function |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1733 def SecondFunction() |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1734 # the function has a body, a double free is detected. |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1735 AAAAA |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1736 |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1737 # enddef followed by | or } followed by # one or more characters |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1738 enddef|BBBB |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1739 enddef |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1740 |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1741 # Compile all functions |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1742 defcompile |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1743 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1744 v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: BBBB') |
26747
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1745 enddef |
a8a4e1e7b111
patch 8.2.3902: Vim9: double free with nested :def function
Bram Moolenaar <Bram@vim.org>
parents:
26735
diff
changeset
|
1746 |
26790
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1747 def Test_nested_function_with_args_split() |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1748 var lines =<< trim END |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1749 vim9script |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1750 def FirstFunction() |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1751 def SecondFunction( |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1752 ) |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1753 # had a double free if the right parenthesis of the nested function is |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1754 # on the next line |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1755 |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1756 enddef|BBBB |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1757 enddef |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1758 # Compile all functions |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1759 defcompile |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1760 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1761 v9.CheckScriptFailure(lines, 'E1173: Text found after enddef: BBBB') |
26792
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1762 |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1763 lines =<< trim END |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1764 vim9script |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1765 def FirstFunction() |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1766 func SecondFunction() |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1767 endfunc|BBBB |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1768 enddef |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1769 defcompile |
30d8377ea1b1
patch 8.2.3924: Vim9: no error if something follows :enddef
Bram Moolenaar <Bram@vim.org>
parents:
26790
diff
changeset
|
1770 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1771 v9.CheckScriptFailure(lines, 'E1173: Text found after endfunction: BBBB') |
26790
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1772 enddef |
83b35c75c21a
patch 8.2.3923: Vim9: double free with split argument list in nested function
Bram Moolenaar <Bram@vim.org>
parents:
26747
diff
changeset
|
1773 |
27022
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1774 def Test_error_in_function_args() |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1775 var lines =<< trim END |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1776 def FirstFunction() |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1777 def SecondFunction(J = |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1778 # Nois |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1779 # one |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1780 |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1781 enddef|BBBB |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1782 enddef |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1783 # Compile all functions |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1784 defcompile |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1785 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1786 v9.CheckScriptFailure(lines, 'E488:') |
27022
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1787 enddef |
eebbcc83fb75
patch 8.2.4040: keeping track of allocated lines is too complicated
Bram Moolenaar <Bram@vim.org>
parents:
26974
diff
changeset
|
1788 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1789 def Test_return_type_wrong() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1790 v9.CheckScriptFailure([ |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1791 '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
|
1792 'return "a"', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1793 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1794 'defcompile'], 'expected number but got string') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1795 delfunc! g:Func |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1796 v9.CheckScriptFailure([ |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1797 '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
|
1798 'return 1', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1799 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1800 'defcompile'], 'expected string but got number') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1801 delfunc! g:Func |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1802 v9.CheckScriptFailure([ |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1803 '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
|
1804 'return "a"', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1805 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1806 'defcompile'], |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1807 'E1096: Returning a value in a function without a return type') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1808 delfunc! g:Func |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1809 v9.CheckScriptFailure([ |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1810 'def Func()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1811 'return "a"', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1812 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1813 'defcompile'], |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1814 'E1096: Returning a value in a function without a return type') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1815 delfunc! g:Func |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1816 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1817 v9.CheckScriptFailure([ |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1818 '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
|
1819 'return', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1820 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1821 'defcompile'], 'E1003:') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1822 delfunc! g:Func |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1823 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1824 v9.CheckScriptFailure([ |
25561
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1825 'def Func():number', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1826 'return 123', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1827 'enddef', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1828 'defcompile'], 'E1069:') |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1829 delfunc! g:Func |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1830 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1831 v9.CheckScriptFailure([ |
25561
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1832 'def Func() :number', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1833 'return 123', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1834 'enddef', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1835 'defcompile'], 'E1059:') |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1836 delfunc! g:Func |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1837 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1838 v9.CheckScriptFailure([ |
25561
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1839 'def Func() : number', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1840 'return 123', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1841 'enddef', |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1842 'defcompile'], 'E1059:') |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1843 delfunc! g:Func |
164cef0bc7ab
patch 8.2.3317: Vim9: No error for missing white space before return type
Bram Moolenaar <Bram@vim.org>
parents:
25543
diff
changeset
|
1844 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1845 v9.CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1846 delfunc! g:Func |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1847 v9.CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1848 delfunc! g:Func |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1849 v9.CheckScriptFailure(['def Func()', 'return 1'], 'E1057:') |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
1850 delfunc! g:Func |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1851 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1852 v9.CheckScriptFailure([ |
21693
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1853 'vim9script', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1854 'def FuncB()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1855 ' return 123', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1856 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1857 'def FuncA()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1858 ' FuncB()', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1859 'enddef', |
4e4fd845553d
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
Bram Moolenaar <Bram@vim.org>
parents:
21689
diff
changeset
|
1860 'defcompile'], 'E1096:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1861 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1862 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1863 def Test_arg_type_wrong() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1864 v9.CheckScriptFailure(['def Func3(items: list)', 'echo "a"', 'enddef'], 'E1008: Missing <type>') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1865 v9.CheckScriptFailure(['def Func4(...)', 'echo "a"', 'enddef'], 'E1055: Missing name after ...') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1866 v9.CheckScriptFailure(['def Func5(items:string)', 'echo "a"'], 'E1069:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1867 v9.CheckScriptFailure(['def Func5(items)', 'echo "a"'], 'E1077:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1868 v9.CheckScriptFailure(['def Func6(...x:list<number>)', 'echo "a"', 'enddef'], 'E1069:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1869 v9.CheckScriptFailure(['def Func7(...x: int)', 'echo "a"', 'enddef'], 'E1010:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1870 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1871 |
24371
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1872 def Test_white_space_before_comma() |
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1873 var lines =<< trim END |
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1874 vim9script |
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1875 def Func(a: number , b: number) |
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1876 enddef |
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1877 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1878 v9.CheckScriptFailure(lines, 'E1068:') |
24685
04205b7d67d5
patch 8.2.2881: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24651
diff
changeset
|
1879 call assert_fails('vim9cmd echo stridx("a" .. "b" , "a")', 'E1068:') |
24371
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1880 enddef |
2b4883926a24
patch 8.2.2726: confusing error message with white space before comma
Bram Moolenaar <Bram@vim.org>
parents:
24369
diff
changeset
|
1881 |
24069
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1882 def Test_white_space_after_comma() |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1883 var lines =<< trim END |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1884 vim9script |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1885 def Func(a: number,b: number) |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1886 enddef |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1887 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1888 v9.CheckScriptFailure(lines, 'E1069:') |
24069
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1889 |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1890 # OK in legacy function |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1891 lines =<< trim END |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1892 vim9script |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1893 func Func(a,b) |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1894 endfunc |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1895 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
1896 v9.CheckScriptSuccess(lines) |
24069
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1897 enddef |
324408c61b20
patch 8.2.2576: Vim9: defining a :func function checks for white space
Bram Moolenaar <Bram@vim.org>
parents:
24065
diff
changeset
|
1898 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1899 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
|
1900 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
|
1901 vim9script |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1902 var name = '' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1903 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
|
1904 name = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1905 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1906 MyFunc('foobar') |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1907 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
|
1908 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1909 var str = 'barfoo' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1910 str->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1911 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
|
1912 |
20945
0653b9b72091
patch 8.2.1024: Vim9: no error for using "let g:var = val"
Bram Moolenaar <Bram@vim.org>
parents:
20909
diff
changeset
|
1913 g:value = 'value' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1914 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
|
1915 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
|
1916 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1917 var listvar = [] |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1918 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
|
1919 listvar = arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1920 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1921 [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
|
1922 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
|
1923 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1924 var dictvar = {} |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1925 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
|
1926 dictvar = arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1927 enddef |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
1928 {a: 1, b: 2}->DictFunc() |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
1929 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
|
1930 def CompiledDict() |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
1931 {a: 3, b: 4}->DictFunc() |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1932 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1933 CompiledDict() |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
1934 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
|
1935 |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
1936 {a: 3, b: 4}->DictFunc() |
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
1937 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
|
1938 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1939 ('text')->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1940 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
|
1941 ("some")->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1942 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
|
1943 |
21475
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
1944 # 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
|
1945 # 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
|
1946 'asdfasdf'->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1947 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
|
1948 "xyz"->MyFunc() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1949 name->assert_equal('xyz') |
21335
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
1950 |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
1951 def UseString() |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
1952 'xyork'->MyFunc() |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
1953 enddef |
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
1954 UseString() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1955 name->assert_equal('xyork') |
21335
af3663df42bf
patch 8.2.1218: Vim9: cannot use 'text'->func()
Bram Moolenaar <Bram@vim.org>
parents:
21303
diff
changeset
|
1956 |
21544
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
1957 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
|
1958 "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
|
1959 enddef |
6c67c86a202a
patch 8.2.1322: Vim9: method on double quoted string doesn't work
Bram Moolenaar <Bram@vim.org>
parents:
21504
diff
changeset
|
1960 UseString2() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1961 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
|
1962 |
21475
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
1963 # 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
|
1964 new |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
1965 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
|
1966 normal! 3Gmt1G |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
1967 :'t |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
1968 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
|
1969 bwipe! |
eec2d2120cde
patch 8.2.1288: Vim9: cannot use mark in range
Bram Moolenaar <Bram@vim.org>
parents:
21469
diff
changeset
|
1970 |
21118
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1971 MyFunc( |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1972 'continued' |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1973 ) |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1974 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
|
1975 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
|
1976 ) |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1977 |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1978 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
|
1979 'more' |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1980 .. |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1981 'lines' |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1982 ) |
b0baa80cb53f
patch 8.2.1110: Vim9: line continuation does not work in function arguments
Bram Moolenaar <Bram@vim.org>
parents:
21089
diff
changeset
|
1983 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
|
1984 'morelines', |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1985 name) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1986 END |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1987 writefile(lines, 'Xcall.vim') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1988 source Xcall.vim |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1989 delete('Xcall.vim') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1990 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1991 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1992 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
|
1993 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
|
1994 vim9script |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
1995 var name = '' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1996 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
|
1997 var name = 123 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1998 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
|
1999 defcompile |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2000 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2001 v9.CheckScriptFailure(lines, 'E1054:') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2002 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2003 |
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
|
2004 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
|
2005 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
|
2006 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
|
2007 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
|
2008 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
|
2009 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
|
2010 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
|
2011 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2012 v9.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
|
2013 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
|
2014 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2015 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
|
2016 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
|
2017 vim9script |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2018 const var = '' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2019 def MyFunc(arg: string) |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2020 var = 'asdf' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2021 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
|
2022 defcompile |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2023 END |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2024 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
|
2025 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
|
2026 delete('Xcall_const.vim') |
23295
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2027 |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2028 lines =<< trim END |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2029 const g:Aconst = 77 |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2030 def Change() |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2031 # comment |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2032 g:Aconst = 99 |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2033 enddef |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2034 call Change() |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2035 unlet g:Aconst |
d9ae7dd3a0f2
patch 8.2.2193: Vim9: can change constant in :def function
Bram Moolenaar <Bram@vim.org>
parents:
23291
diff
changeset
|
2036 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2037 v9.CheckScriptFailure(lines, 'E741: Value is locked: Aconst', 2) |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2038 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2039 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2040 " 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
|
2041 " recognized. |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2042 func Test_function_python() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2043 CheckFeature python3 |
22437
7bd80999ea21
patch 8.2.1767: Vim9: test fails with python support
Bram Moolenaar <Bram@vim.org>
parents:
22435
diff
changeset
|
2044 let py = 'python3' |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2045 execute py "<< EOF" |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2046 def do_something(): |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2047 return 1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2048 EOF |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2049 endfunc |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2050 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2051 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
|
2052 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
|
2053 vim9script |
20189
63cc54100ae4
patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents:
20142
diff
changeset
|
2054 def g:GoneSoon() |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2055 echo 'hello' |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2056 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2057 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2058 def CallGoneSoon() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2059 g:GoneSoon() |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2060 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
|
2061 defcompile |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2062 |
20189
63cc54100ae4
patch 8.2.0650: Vim9: script function can be deleted
Bram Moolenaar <Bram@vim.org>
parents:
20142
diff
changeset
|
2063 delfunc g:GoneSoon |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2064 CallGoneSoon() |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2065 END |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2066 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
|
2067 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
|
2068 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
|
2069 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2070 delete('XToDelFunc') |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2071 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2072 |
26560
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2073 func Test_free_dict_while_in_funcstack() |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2074 " relies on the sleep command |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2075 CheckUnix |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2076 call Run_Test_free_dict_while_in_funcstack() |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2077 endfunc |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2078 |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2079 def Run_Test_free_dict_while_in_funcstack() |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2080 # this was freeing the TermRun() default argument dictionary while it was |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2081 # still referenced in a funcstack_T |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2082 var lines =<< trim END |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2083 vim9script |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2084 |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2085 &updatetime = 400 |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2086 def TermRun(_ = {}) |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2087 def Post() |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2088 enddef |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2089 def Exec() |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2090 term_start('sleep 1', { |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2091 term_finish: 'close', |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2092 exit_cb: (_, _) => Post(), |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2093 }) |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2094 enddef |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2095 Exec() |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2096 enddef |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2097 nnoremap <F4> <Cmd>call <SID>TermRun()<CR> |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2098 timer_start(100, (_) => feedkeys("\<F4>")) |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2099 timer_start(1000, (_) => feedkeys("\<F4>")) |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2100 sleep 1500m |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2101 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2102 v9.CheckScriptSuccess(lines) |
26560
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2103 nunmap <F4> |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2104 set updatetime& |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2105 enddef |
454a1c9ef797
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Bram Moolenaar <Bram@vim.org>
parents:
26538
diff
changeset
|
2106 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2107 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
|
2108 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
|
2109 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
|
2110 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
|
2111 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
|
2112 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
|
2113 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
|
2114 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
|
2115 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
|
2116 delete('Xdef') |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2117 |
24404
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
2118 assert_fails('g:Func0()', 'E1091:') |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2119 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
|
2120 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
|
2121 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2122 delfunc! Func0 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2123 delfunc! Func1 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2124 delfunc! Func2 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2125 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2126 |
20142
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2127 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
|
2128 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
|
2129 vim9script |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2130 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
|
2131 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
|
2132 endfunc |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2133 Func('text') |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2134 END |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2135 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
|
2136 so XVim9Func |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2137 |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2138 delete('XVim9Func') |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2139 enddef |
fe8d0a4344df
patch 8.2.0626: Vim9: wrong syntax of function in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
20140
diff
changeset
|
2140 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2141 let s:funcResult = 0 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2142 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2143 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
|
2144 s:funcResult = 11 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2145 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2146 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2147 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
|
2148 s:funcResult = 22 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2149 return 1234 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2150 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2151 |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2152 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
|
2153 s:funcResult = 45 |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2154 return 'text' |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2155 enddef |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2156 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2157 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
|
2158 s:funcResult = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2159 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2160 |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2161 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
|
2162 s:funcResult = arg |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2163 return arg |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2164 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2165 |
19985
f863aa96cae5
patch 8.2.0548: Vim9: not all possible func type errors tested
Bram Moolenaar <Bram@vim.org>
parents:
19975
diff
changeset
|
2166 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
|
2167 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
|
2168 enddef |
f863aa96cae5
patch 8.2.0548: Vim9: not all possible func type errors tested
Bram Moolenaar <Bram@vim.org>
parents:
19975
diff
changeset
|
2169 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2170 def s:FuncOneArgRetString(arg: string): string |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2171 return arg |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2172 enddef |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2173 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2174 def s:FuncOneArgRetAny(arg: any): any |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
2175 return arg |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
2176 enddef |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
2177 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2178 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
|
2179 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
|
2180 s:funcResult = 0 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2181 Ref1 = g:FuncNoArgNoRet |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2182 Ref1() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2183 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
|
2184 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2185 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
|
2186 s:funcResult = 0 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2187 Ref2 = g:FuncNoArgNoRet |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
2188 Ref2() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2189 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
|
2190 |
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
|
2191 s:funcResult = 0 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2192 Ref2 = g:FuncOneArgNoRet |
19922
1f42c49c3d29
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Bram Moolenaar <Bram@vim.org>
parents:
19912
diff
changeset
|
2193 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
|
2194 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
|
2195 |
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
|
2196 s:funcResult = 0 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2197 Ref2 = g:FuncNoArgRetNumber |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2198 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
|
2199 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
|
2200 |
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
|
2201 s:funcResult = 0 |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
2202 Ref2 = g:FuncOneArgRetNumber |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2203 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
|
2204 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
|
2205 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2206 |
21162
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
2207 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
|
2208 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
|
2209 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
|
2210 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
|
2211 endfor |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2212 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
|
2213 |
4a190861f0cc
patch 8.2.1133: Vim9: return type of add() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21162
diff
changeset
|
2214 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
|
2215 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
|
2216 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
|
2217 endfor |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2218 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
|
2219 enddef |
3158cc2384cc
patch 8.2.1132: Vim9: return type of repeat() is not specific enough
Bram Moolenaar <Bram@vim.org>
parents:
21160
diff
changeset
|
2220 |
21170
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
2221 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
|
2222 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
|
2223 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
|
2224 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
|
2225 res ..= name |
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
2226 endfor |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2227 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
|
2228 enddef |
8c494353c6bc
patch 8.2.1136: Vim9: return type of argv() is always any
Bram Moolenaar <Bram@vim.org>
parents:
21164
diff
changeset
|
2229 |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2230 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
|
2231 var RefVoid: func: void |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2232 RefVoid = g:FuncNoArgNoRet |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2233 RefVoid = g:FuncOneArgNoRet |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2234 v9.CheckDefFailure(['var RefVoid: func: void', 'RefVoid = g:FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func(...) but got func(): number') |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
2235 v9.CheckDefFailure(['var RefVoid: func: void', 'RefVoid = g: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
|
2236 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2237 var RefAny: func(): any |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2238 RefAny = g:FuncNoArgRetNumber |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
2239 RefAny = g:FuncNoArgRetString |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2240 v9.CheckDefFailure(['var RefAny: func(): any', 'RefAny = g:FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(): any but got func()') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2241 v9.CheckDefFailure(['var RefAny: func(): any', 'RefAny = g: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
|
2242 |
22498
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
2243 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
|
2244 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2245 var RefNr: func: number |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2246 RefNr = g:FuncNoArgRetNumber |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
2247 RefNr = g:FuncOneArgRetNumber |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2248 v9.CheckDefFailure(['var RefNr: func: number', 'RefNr = g:FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): number but got func()') |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
2249 v9.CheckDefFailure(['var RefNr: func: number', 'RefNr = g: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
|
2250 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2251 var RefStr: func: string |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
2252 RefStr = g:FuncNoArgRetString |
19942
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2253 RefStr = FuncOneArgRetString |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2254 v9.CheckDefFailure(['var RefStr: func: string', 'RefStr = g:FuncNoArgNoRet'], 'E1012: Type mismatch; expected func(...): string but got func()') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2255 v9.CheckDefFailure(['var RefStr: func: string', 'RefStr = g: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
|
2256 enddef |
b471038ec3ea
patch 8.2.0527: Vim9: function types insufficiently tested
Bram Moolenaar <Bram@vim.org>
parents:
19932
diff
changeset
|
2257 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2258 def Test_func_type_fails() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2259 v9.CheckDefFailure(['var ref1: func()'], 'E704:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2260 |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2261 v9.CheckDefFailure(['var Ref1: func()', 'Ref1 = g:FuncNoArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(): number') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2262 v9.CheckDefFailure(['var Ref1: func()', 'Ref1 = g:FuncOneArgNoRet'], 'E1012: Type mismatch; expected func() but got func(number)') |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
2263 v9.CheckDefFailure(['var Ref1: func()', 'Ref1 = g:FuncOneArgRetNumber'], 'E1012: Type mismatch; expected func() but got func(number): number') |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2264 v9.CheckDefFailure(['var Ref1: func(bool)', 'Ref1 = g:FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(bool) but got func(bool, number)') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2265 v9.CheckDefFailure(['var Ref1: func(?bool)', 'Ref1 = g:FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(?bool) but got func(bool, number)') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2266 v9.CheckDefFailure(['var Ref1: func(...bool)', 'Ref1 = g:FuncTwoArgNoRet'], 'E1012: Type mismatch; expected func(...bool) but got func(bool, number)') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2267 |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2268 v9.CheckDefFailure(['var RefWrong: func(string ,number)'], 'E1068:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2269 v9.CheckDefFailure(['var RefWrong: func(string,number)'], 'E1069:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2270 v9.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:') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2271 v9.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
|
2272 enddef |
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2273 |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
2274 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
|
2275 var nr: number |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2276 nr = g:FuncNoArgRetNumber() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2277 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
|
2278 |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
2279 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
|
2280 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
|
2281 |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2282 var str: string |
19926
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
2283 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
|
2284 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
|
2285 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2286 v9.CheckDefFailure(['var str: string', 'str = g: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
|
2287 enddef |
d286bfc44149
patch 8.2.0519: Vim9: return type not properly checked
Bram Moolenaar <Bram@vim.org>
parents:
19922
diff
changeset
|
2288 |
22498
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
2289 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
|
2290 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
|
2291 return n |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
2292 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
2293 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
|
2294 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
|
2295 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
2296 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
|
2297 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
|
2298 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
2299 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
|
2300 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
|
2301 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
|
2302 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
|
2303 enddef |
04a9b1399d8e
patch 8.2.1797: Vim9: some parts of the code not tested
Bram Moolenaar <Bram@vim.org>
parents:
22496
diff
changeset
|
2304 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2305 def s:MultiLine( |
20015
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2306 arg1: string, |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2307 arg2 = 1234, |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2308 ...rest: list<string> |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2309 ): string |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2310 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
|
2311 enddef |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2312 |
20023
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
2313 def MultiLineComment( |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
2314 arg1: string, # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
2315 arg2 = 1234, # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
2316 ...rest: list<string> # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
2317 ): string # comment |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
2318 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
|
2319 enddef |
c85d4e173cc9
patch 8.2.0567: Vim9: cannot put comments halfway expressions
Bram Moolenaar <Bram@vim.org>
parents:
20017
diff
changeset
|
2320 |
20015
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2321 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
|
2322 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
|
2323 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
|
2324 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
|
2325 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
|
2326 enddef |
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2327 |
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
|
2328 func Test_multiline_not_vim9() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2329 call s:MultiLine('text')->assert_equal('text1234') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2330 call s:MultiLine('text', 777)->assert_equal('text777') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2331 call s:MultiLine('text', 777, 'one')->assert_equal('text777one') |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2332 call s: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
|
2333 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
|
2334 |
20015
c001ee73519a
patch 8.2.0563: Vim9: cannot split a function line
Bram Moolenaar <Bram@vim.org>
parents:
19993
diff
changeset
|
2335 |
19932
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2336 " 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
|
2337 " of E1056. |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2338 func Test_E1056_1059() |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2339 let caught_1056 = 0 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2340 try |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2341 def F(): |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2342 return 1 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2343 enddef |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2344 catch /E1056:/ |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2345 let caught_1056 = 1 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2346 endtry |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2347 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
|
2348 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2349 let caught_1059 = 0 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2350 try |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2351 def F5(items : list) |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2352 echo 'a' |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2353 enddef |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2354 catch /E1059:/ |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2355 let caught_1059 = 1 |
2c4d9ca33769
patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents:
19926
diff
changeset
|
2356 endtry |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2357 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
|
2358 endfunc |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2359 |
20287
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2360 func DelMe() |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2361 echo 'DelMe' |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2362 endfunc |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2363 |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2364 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
|
2365 # 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
|
2366 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
|
2367 " comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2368 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
|
2369 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2370 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2371 invalid |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2372 enddef |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2373 defcompile |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2374 END |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
2375 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
|
2376 try |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2377 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
|
2378 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
|
2379 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
|
2380 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
|
2381 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
|
2382 endtry |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
2383 delfunc! g:Func |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2384 |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2385 # 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
|
2386 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
|
2387 " comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2388 def Func() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2389 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
|
2390 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2391 # comment |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2392 invalid |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2393 enddef |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2394 defcompile |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2395 END |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
2396 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
|
2397 try |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2398 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
|
2399 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
|
2400 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
|
2401 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
|
2402 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
|
2403 endtry |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
2404 delfunc! g:Func |
21685
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2405 |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
2406 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
|
2407 vim9script |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
2408 def Func() |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
2409 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
|
2410 # comment |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2411 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
|
2412 enddef |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
2413 defcompile |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
2414 Func() |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
2415 END |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
2416 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
|
2417 try |
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
2418 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
|
2419 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
|
2420 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
|
2421 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
|
2422 endtry |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
2423 delfunc! g:Func |
21793
0706bd071fa3
patch 8.2.1446: Vim9: line number in error message is not correct
Bram Moolenaar <Bram@vim.org>
parents:
21759
diff
changeset
|
2424 |
22264
e0a4d029cb87
patch 8.2.1681: Vim9: unnessary :call commands in tests
Bram Moolenaar <Bram@vim.org>
parents:
22236
diff
changeset
|
2425 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
|
2426 enddef |
26a4b53c4587
patch 8.2.1392: Vim9: line number incorrect after skipping over comment lines
Bram Moolenaar <Bram@vim.org>
parents:
21660
diff
changeset
|
2427 |
20287
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2428 def Test_deleted_function() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2429 v9.CheckDefExecFailure([ |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2430 '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
|
2431 'delfunc g:DelMe', |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2432 'echo RefMe()'], 'E117:') |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2433 enddef |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2434 |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2435 def Test_unknown_function() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2436 v9.CheckDefExecFailure([ |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2437 '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
|
2438 'delfunc g:NotExist'], 'E700:') |
20287
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2439 enddef |
ce1b73835822
patch 8.2.0699: Vim9: not all errors tested
Bram Moolenaar <Bram@vim.org>
parents:
20281
diff
changeset
|
2440 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2441 def s:RefFunc(Ref: func(any): any): string |
20244
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
2442 return Ref('more') |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
2443 enddef |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
2444 |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
2445 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
|
2446 var local = 'some ' |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2447 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
|
2448 enddef |
23d75968ca5e
patch 8.2.0677: Vim9: no support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20189
diff
changeset
|
2449 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2450 def s:MakeRef() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2451 var local = 'some ' |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2452 g:Ref = (s) => local .. s |
20247
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
2453 enddef |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
2454 |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
2455 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
|
2456 MakeRef() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2457 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
|
2458 unlet g:Ref |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
2459 enddef |
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
2460 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2461 def s:MakeTwoRefs() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2462 var local = ['some'] |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2463 g:Extend = (s) => local->add(s) |
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2464 g:Read = () => local |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2465 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2466 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2467 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
|
2468 MakeTwoRefs() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2469 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
|
2470 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
|
2471 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
|
2472 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
|
2473 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
|
2474 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2475 unlet g:Extend |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2476 unlet g:Read |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2477 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2478 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2479 def s:ReadRef(Ref: func(): list<string>): string |
20255
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2480 return join(Ref(), ' ') |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2481 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2482 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2483 def s: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
|
2484 Ref(add) |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2485 enddef |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2486 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2487 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
|
2488 MakeTwoRefs() |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2489 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
|
2490 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
|
2491 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
|
2492 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
|
2493 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
|
2494 |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2495 unlet g:Extend |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2496 unlet g:Read |
aac52c32a91f
patch 8.2.0683: Vim9: parsing type does not always work
Bram Moolenaar <Bram@vim.org>
parents:
20253
diff
changeset
|
2497 enddef |
20247
e46e72aaff74
patch 8.2.0679: Vim9: incomplete support for closures
Bram Moolenaar <Bram@vim.org>
parents:
20244
diff
changeset
|
2498 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2499 def s: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
|
2500 var local = 'loc_val' |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2501 g:UseArg = (s) => theArg .. '/' .. local .. '/' .. s |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2502 enddef |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2503 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2504 def s: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
|
2505 var local = 'the_loc' |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2506 g:UseVararg = (s) => theArg .. '/' .. local .. '/' .. s .. '/' .. join(rest) |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2507 enddef |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2508 |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2509 def Test_closure_using_argument() |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2510 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
|
2511 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
|
2512 |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2513 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
|
2514 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
|
2515 |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2516 unlet g:UseArg |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2517 unlet g:UseVararg |
23923
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2518 |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2519 var lines =<< trim END |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2520 vim9script |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2521 def Test(Fun: func(number): number): list<number> |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2522 return map([1, 2, 3], (_, i) => Fun(i)) |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2523 enddef |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2524 def Inc(nr: number): number |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2525 return nr + 2 |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2526 enddef |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2527 assert_equal([3, 4, 5], Test(Inc)) |
be36288235af
patch 8.2.2504: Vim9: crash when using an argument from a closure
Bram Moolenaar <Bram@vim.org>
parents:
23879
diff
changeset
|
2528 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2529 v9.CheckScriptSuccess(lines) |
20275
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2530 enddef |
350bb78345ba
patch 8.2.0693: closure using argument not tested
Bram Moolenaar <Bram@vim.org>
parents:
20257
diff
changeset
|
2531 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2532 def s:MakeGetAndAppendRefs() |
22541
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2533 var local = 'a' |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2534 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2535 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
|
2536 local ..= arg |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2537 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2538 g:Append = Append |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2539 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2540 def Get(): string |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2541 return local |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2542 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2543 g:Get = Get |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2544 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2545 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2546 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
|
2547 MakeGetAndAppendRefs() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2548 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
|
2549 g:Append('-b') |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2550 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
|
2551 g:Append('-c') |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2552 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
|
2553 |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2554 unlet g:Append |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2555 unlet g:Get |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2556 enddef |
20295
bc2c9ea94ec1
patch 8.2.0703: Vim9: closure cannot store value in outer context
Bram Moolenaar <Bram@vim.org>
parents:
20287
diff
changeset
|
2557 |
20279
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
2558 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
|
2559 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
|
2560 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
|
2561 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
|
2562 enddef |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
2563 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
|
2564 enddef |
49b50843e725
patch 8.2.0695: Vim9: cannot define a function inside a function
Bram Moolenaar <Bram@vim.org>
parents:
20275
diff
changeset
|
2565 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2566 func s:GetResult(Ref) |
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
|
2567 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
|
2568 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
|
2569 |
5950284a517f
patch 8.2.0771: Vim9: cannot call a compiled closure from not compiled code
Bram Moolenaar <Bram@vim.org>
parents:
20355
diff
changeset
|
2570 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
|
2571 var text = 'text' |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2572 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
|
2573 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
|
2574 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
|
2575 |
22314
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
2576 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
|
2577 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
|
2578 vim9script |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
2579 def Func() |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2580 var name = 0 |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2581 for i in range(2) |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2582 timer_start(0, () => name) |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2583 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
|
2584 enddef |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
2585 Func() |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
2586 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2587 v9.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
|
2588 enddef |
41e118669df3
patch 8.2.1706: Vim9: crash after running into the "Multiple closures" error
Bram Moolenaar <Bram@vim.org>
parents:
22303
diff
changeset
|
2589 |
22541
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2590 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
|
2591 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
|
2592 vim9script |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2593 def Func() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2594 var x = 'hello' |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2595 var Closure = () => x |
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2596 g:Myclosure = () => Closure() |
22541
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2597 enddef |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2598 Func() |
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2599 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
|
2600 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2601 v9.CheckScriptSuccess(lines) |
22541
7d6ba4204f66
patch 8.2.1819: Vim9: Memory leak when using a closure
Bram Moolenaar <Bram@vim.org>
parents:
22537
diff
changeset
|
2602 enddef |
22527
c3e3c5707fe9
patch 8.2.1812: Vim9: nested closure throws an internal error
Bram Moolenaar <Bram@vim.org>
parents:
22498
diff
changeset
|
2603 |
22401
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2604 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
|
2605 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
|
2606 vim9script |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2607 def FuncA() |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2608 FuncB(0) |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2609 enddef |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2610 def FuncB(n: number): list<string> |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2611 return map([0], (_, v) => n) |
22401
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2612 enddef |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2613 FuncA() |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2614 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2615 v9.CheckScriptFailure(lines, 'E1012:') |
22401
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2616 enddef |
df1d7a560b35
patch 8.2.1749: Vim9: crash when closure fails in nested function
Bram Moolenaar <Bram@vim.org>
parents:
22371
diff
changeset
|
2617 |
23249
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2618 def Test_global_closure() |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2619 var lines =<< trim END |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2620 vim9script |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2621 def ReverseEveryNLines(n: number, line1: number, line2: number) |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2622 var mods = 'sil keepj keepp lockm ' |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2623 var range = ':' .. line1 .. ',' .. line2 |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2624 def g:Offset(): number |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2625 var offset = (line('.') - line1 + 1) % n |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2626 return offset != 0 ? offset : n |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2627 enddef |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2628 exe mods .. range .. 'g/^/exe "m .-" .. g:Offset()' |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2629 enddef |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2630 |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2631 new |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2632 repeat(['aaa', 'bbb', 'ccc'], 3)->setline(1) |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2633 ReverseEveryNLines(3, 1, 9) |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2634 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2635 v9.CheckScriptSuccess(lines) |
23249
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2636 var expected = repeat(['ccc', 'bbb', 'aaa'], 3) |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2637 assert_equal(expected, getline(1, 9)) |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2638 bwipe! |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2639 enddef |
43532077b5ff
patch 8.2.2170: Vim9: a global function defined in a :def function fails
Bram Moolenaar <Bram@vim.org>
parents:
23177
diff
changeset
|
2640 |
23285
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2641 def Test_global_closure_called_directly() |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2642 var lines =<< trim END |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2643 vim9script |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2644 def Outer() |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2645 var x = 1 |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2646 def g:Inner() |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2647 var y = x |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2648 x += 1 |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2649 assert_equal(1, y) |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2650 enddef |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2651 g:Inner() |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2652 assert_equal(2, x) |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2653 enddef |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2654 Outer() |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2655 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2656 v9.CheckScriptSuccess(lines) |
23285
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2657 delfunc g:Inner |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2658 enddef |
112fa621b127
patch 8.2.2188: Vim9: crash when calling global function from :def function
Bram Moolenaar <Bram@vim.org>
parents:
23281
diff
changeset
|
2659 |
26378
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2660 def Test_closure_called_from_legacy() |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2661 var lines =<< trim END |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2662 vim9script |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2663 def Func() |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2664 var outer = 'foo' |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2665 var F = () => { |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2666 outer = 'bar' |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2667 } |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2668 execute printf('call %s()', string(F)) |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2669 enddef |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2670 Func() |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2671 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2672 v9.CheckScriptFailure(lines, 'E1248') |
26378
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2673 enddef |
a926ccd92ae1
patch 8.2.3720: Vim9: Internal error when invoking closure in legacy context
Bram Moolenaar <Bram@vim.org>
parents:
26323
diff
changeset
|
2674 |
23009
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2675 def Test_failure_in_called_function() |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2676 # this was using the frame index as the return value |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2677 var lines =<< trim END |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2678 vim9script |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2679 au TerminalWinOpen * eval [][0] |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2680 def PopupTerm(a: any) |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2681 # make sure typvals on stack are string |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2682 ['a', 'b', 'c', 'd', 'e', 'f', 'g']->join() |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2683 FireEvent() |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2684 enddef |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2685 def FireEvent() |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2686 do TerminalWinOpen |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2687 enddef |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2688 # use try/catch to make eval fail |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2689 try |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2690 call PopupTerm(0) |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2691 catch |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2692 endtry |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2693 au! TerminalWinOpen |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2694 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2695 v9.CheckScriptSuccess(lines) |
23009
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2696 enddef |
1fa84623fc68
patch 8.2.2051: Vim9: crash when aborting a user function call
Bram Moolenaar <Bram@vim.org>
parents:
22973
diff
changeset
|
2697 |
22460
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
2698 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
|
2699 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
|
2700 vim9script |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
2701 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
|
2702 var x = 4 |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2703 var Lambda1 = () => 7 |
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2704 var Lambda2 = () => [Lambda1(), x] |
22460
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
2705 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
|
2706 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
|
2707 enddef |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
2708 Func() |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
2709 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2710 v9.CheckScriptSuccess(lines) |
22460
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
2711 enddef |
4097509ecc1e
patch 8.2.1778: Vim9: returning from a partial call clears outer context
Bram Moolenaar <Bram@vim.org>
parents:
22437
diff
changeset
|
2712 |
24858
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2713 def Test_double_nested_lambda() |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2714 var lines =<< trim END |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2715 vim9script |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2716 def F(head: string): func(string): func(string): string |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2717 return (sep: string): func(string): string => ((tail: string): string => { |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2718 return head .. sep .. tail |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2719 }) |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2720 enddef |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2721 assert_equal('hello-there', F('hello')('-')('there')) |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2722 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2723 v9.CheckScriptSuccess(lines) |
24858
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2724 enddef |
193cc8bd8a2f
patch 8.2.2967: Vim9: crash when using two levels of partials
Bram Moolenaar <Bram@vim.org>
parents:
24854
diff
changeset
|
2725 |
24651
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2726 def Test_nested_inline_lambda() |
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2727 var lines =<< trim END |
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2728 vim9script |
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2729 def F(text: string): func(string): func(string): string |
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2730 return (arg: string): func(string): string => ((sep: string): string => { |
25489
911fdca7f736
patch 8.2.3281: Vim9: TODO items in tests can be taken care of
Bram Moolenaar <Bram@vim.org>
parents:
25465
diff
changeset
|
2731 return sep .. arg .. text |
24651
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2732 }) |
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2733 enddef |
25489
911fdca7f736
patch 8.2.3281: Vim9: TODO items in tests can be taken care of
Bram Moolenaar <Bram@vim.org>
parents:
25465
diff
changeset
|
2734 assert_equal('--there++', F('++')('there')('--')) |
24651
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2735 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2736 v9.CheckScriptSuccess(lines) |
25265
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2737 |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2738 lines =<< trim END |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2739 vim9script |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2740 echo range(4)->mapnew((_, v) => { |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2741 return range(v) ->mapnew((_, s) => { |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2742 return string(s) |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2743 }) |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2744 }) |
1d6ff96306fc
patch 8.2.3169: Vim9: cannot handle nested inline function
Bram Moolenaar <Bram@vim.org>
parents:
25202
diff
changeset
|
2745 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2746 v9.CheckScriptSuccess(lines) |
25276
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2747 |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2748 lines =<< trim END |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2749 vim9script |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2750 |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2751 def s:func() |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2752 range(10) |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2753 ->mapnew((_, _) => ({ |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2754 key: range(10)->mapnew((_, _) => { |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2755 return ' ' |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2756 }), |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2757 })) |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2758 enddef |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2759 |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2760 defcomp |
d26dc79c533f
patch 8.2.3175: Vim9: using illegal pointer with nested lambdas.
Bram Moolenaar <Bram@vim.org>
parents:
25265
diff
changeset
|
2761 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2762 v9.CheckScriptSuccess(lines) |
24651
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2763 enddef |
5dea95170907
patch 8.2.2864: Vim9: crash when using inline function
Bram Moolenaar <Bram@vim.org>
parents:
24555
diff
changeset
|
2764 |
22910
f78057703df9
patch 8.2.2002: Vim9: lambda argument shadowed by function name
Bram Moolenaar <Bram@vim.org>
parents:
22908
diff
changeset
|
2765 def Shadowed(): list<number> |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2766 var FuncList: list<func: number> = [() => 42] |
23565
34aa2907082a
patch 8.2.2325: Vim9: crash if map() changes the item type
Bram Moolenaar <Bram@vim.org>
parents:
23559
diff
changeset
|
2767 return FuncList->mapnew((_, Shadowed) => Shadowed()) |
22910
f78057703df9
patch 8.2.2002: Vim9: lambda argument shadowed by function name
Bram Moolenaar <Bram@vim.org>
parents:
22908
diff
changeset
|
2768 enddef |
f78057703df9
patch 8.2.2002: Vim9: lambda argument shadowed by function name
Bram Moolenaar <Bram@vim.org>
parents:
22908
diff
changeset
|
2769 |
f78057703df9
patch 8.2.2002: Vim9: lambda argument shadowed by function name
Bram Moolenaar <Bram@vim.org>
parents:
22908
diff
changeset
|
2770 def Test_lambda_arg_shadows_func() |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2771 assert_equal([42], g:Shadowed()) |
22910
f78057703df9
patch 8.2.2002: Vim9: lambda argument shadowed by function name
Bram Moolenaar <Bram@vim.org>
parents:
22908
diff
changeset
|
2772 enddef |
f78057703df9
patch 8.2.2002: Vim9: lambda argument shadowed by function name
Bram Moolenaar <Bram@vim.org>
parents:
22908
diff
changeset
|
2773 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2774 def s: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
|
2775 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
|
2776 \ ? 'empty' |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2777 \ : 'full' |
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
2778 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
|
2779 enddef |
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
2780 |
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
2781 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
|
2782 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
|
2783 enddef |
d561e3c6cd65
patch 8.2.1037: Vim9: crash when using line continuation inside :def
Bram Moolenaar <Bram@vim.org>
parents:
20945
diff
changeset
|
2784 |
22942
4759d13193fb
patch 8.2.2018: Vim9: script variable not found from lambda
Bram Moolenaar <Bram@vim.org>
parents:
22936
diff
changeset
|
2785 def Test_script_var_in_lambda() |
4759d13193fb
patch 8.2.2018: Vim9: script variable not found from lambda
Bram Moolenaar <Bram@vim.org>
parents:
22936
diff
changeset
|
2786 var lines =<< trim END |
4759d13193fb
patch 8.2.2018: Vim9: script variable not found from lambda
Bram Moolenaar <Bram@vim.org>
parents:
22936
diff
changeset
|
2787 vim9script |
4759d13193fb
patch 8.2.2018: Vim9: script variable not found from lambda
Bram Moolenaar <Bram@vim.org>
parents:
22936
diff
changeset
|
2788 var script = 'test' |
24414
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
2789 assert_equal(['test'], map(['one'], (_, _) => script)) |
22942
4759d13193fb
patch 8.2.2018: Vim9: script variable not found from lambda
Bram Moolenaar <Bram@vim.org>
parents:
22936
diff
changeset
|
2790 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2791 v9.CheckScriptSuccess(lines) |
22942
4759d13193fb
patch 8.2.2018: Vim9: script variable not found from lambda
Bram Moolenaar <Bram@vim.org>
parents:
22936
diff
changeset
|
2792 enddef |
4759d13193fb
patch 8.2.2018: Vim9: script variable not found from lambda
Bram Moolenaar <Bram@vim.org>
parents:
22936
diff
changeset
|
2793 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2794 def s: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
|
2795 var x = range(97, 100) |
23565
34aa2907082a
patch 8.2.2325: Vim9: crash if map() changes the item type
Bram Moolenaar <Bram@vim.org>
parents:
23559
diff
changeset
|
2796 ->mapnew((_, v) => nr2char(v) |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
2797 ->toupper()) |
21208
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
2798 ->reverse() |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
2799 return x |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
2800 enddef |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
2801 |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
2802 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
|
2803 Line_continuation_in_lambda()->assert_equal(['D', 'C', 'B', 'A']) |
23644
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2804 |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2805 var lines =<< trim END |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2806 vim9script |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2807 var res = [{n: 1, m: 2, s: 'xxx'}] |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2808 ->mapnew((_, v: dict<any>): string => printf('%d:%d:%s', |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2809 v.n, |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2810 v.m, |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2811 substitute(v.s, '.*', 'yyy', '') |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2812 )) |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2813 assert_equal(['1:2:yyy'], res) |
03acf9c49f07
patch 8.2.2364: Vim9: line break in lambda accesses freed memory
Bram Moolenaar <Bram@vim.org>
parents:
23630
diff
changeset
|
2814 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2815 v9.CheckScriptSuccess(lines) |
21208
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
2816 enddef |
09377fd59b2e
patch 8.2.1155: Vim9: cannot handle line break inside lambda
Bram Moolenaar <Bram@vim.org>
parents:
21186
diff
changeset
|
2817 |
23547
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2818 def Test_list_lambda() |
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2819 timer_start(1000, (_) => 0) |
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2820 var body = execute(timer_info()[0].callback |
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2821 ->string() |
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2822 ->substitute("('", ' ', '') |
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2823 ->substitute("')", '', '') |
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2824 ->substitute('function\zs', ' ', '')) |
24398
bed5ec739304
patch 8.2.2739: Vim9: a lambda accepts too many arguments at the script level
Bram Moolenaar <Bram@vim.org>
parents:
24371
diff
changeset
|
2825 assert_match('def <lambda>\d\+(_: any): number\n1 return 0\n enddef', body) |
23547
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2826 enddef |
7f09cfa9ac4a
patch 8.2.2316: Vim9: cannot list a lambda function
Bram Moolenaar <Bram@vim.org>
parents:
23545
diff
changeset
|
2827 |
25370
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2828 def Test_lambda_block_variable() |
25344
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2829 var lines =<< trim END |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2830 vim9script |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2831 var flist: list<func> |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2832 for i in range(10) |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2833 var inloop = i |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2834 flist[i] = () => inloop |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2835 endfor |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2836 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2837 v9.CheckScriptSuccess(lines) |
25344
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2838 |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2839 lines =<< trim END |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2840 vim9script |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2841 if true |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2842 var outloop = 5 |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2843 var flist: list<func> |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2844 for i in range(10) |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2845 flist[i] = () => outloop |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2846 endfor |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2847 endif |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2848 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2849 v9.CheckScriptSuccess(lines) |
25344
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2850 |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2851 lines =<< trim END |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2852 vim9script |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2853 if true |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2854 var outloop = 5 |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2855 endif |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2856 var flist: list<func> |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2857 for i in range(10) |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2858 flist[i] = () => outloop |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2859 endfor |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2860 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2861 v9.CheckScriptFailure(lines, 'E1001: Variable not found: outloop', 1) |
25370
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2862 |
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2863 lines =<< trim END |
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2864 vim9script |
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2865 for i in range(10) |
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2866 var Ref = () => 0 |
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2867 endfor |
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2868 assert_equal(0, ((i) => 0)(0)) |
d52504ef26ed
patch 8.2.3222: Vim9: cannot used loop variable later as lambda argument
Bram Moolenaar <Bram@vim.org>
parents:
25344
diff
changeset
|
2869 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2870 v9.CheckScriptSuccess(lines) |
25344
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2871 enddef |
d1fcd9c14a93
patch 8.2.3209: Vim9: lambda doesn't find block-local variable
Bram Moolenaar <Bram@vim.org>
parents:
25316
diff
changeset
|
2872 |
24531
3bfec39ce31c
patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
24525
diff
changeset
|
2873 def Test_legacy_lambda() |
3bfec39ce31c
patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
24525
diff
changeset
|
2874 legacy echo {x -> 'hello ' .. x}('foo') |
24539
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2875 |
24531
3bfec39ce31c
patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
24525
diff
changeset
|
2876 var lines =<< trim END |
3bfec39ce31c
patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
24525
diff
changeset
|
2877 echo {x -> 'hello ' .. x}('foo') |
3bfec39ce31c
patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
24525
diff
changeset
|
2878 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2879 v9.CheckDefAndScriptFailure(lines, 'E720:') |
24539
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2880 |
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2881 lines =<< trim END |
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2882 vim9script |
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2883 def Func() |
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2884 echo (() => 'no error')() |
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2885 enddef |
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2886 legacy call s:Func() |
3a290891a015
patch 8.2.2809: Vim9: :def function compilation fails when using :legacy
Bram Moolenaar <Bram@vim.org>
parents:
24531
diff
changeset
|
2887 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2888 v9.CheckScriptSuccess(lines) |
24531
3bfec39ce31c
patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
24525
diff
changeset
|
2889 enddef |
3bfec39ce31c
patch 8.2.2805: Vim9: cannot use legacy syntax in Vim9 script
Bram Moolenaar <Bram@vim.org>
parents:
24525
diff
changeset
|
2890 |
25030
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2891 def Test_legacy() |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2892 var lines =<< trim END |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2893 vim9script |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2894 func g:LegacyFunction() |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2895 let g:legacyvar = 1 |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2896 endfunc |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2897 def Testit() |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2898 legacy call g:LegacyFunction() |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2899 enddef |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2900 Testit() |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2901 assert_equal(1, g:legacyvar) |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2902 unlet g:legacyvar |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2903 delfunc g:LegacyFunction |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2904 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2905 v9.CheckScriptSuccess(lines) |
25030
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2906 enddef |
214fddf4c765
patch 8.2.3052: Vim9: "legacy call" does not work
Bram Moolenaar <Bram@vim.org>
parents:
24996
diff
changeset
|
2907 |
24776
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2908 def Test_legacy_errors() |
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2909 for cmd in ['if', 'elseif', 'else', 'endif', |
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2910 'for', 'endfor', 'continue', 'break', |
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2911 'while', 'endwhile', |
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2912 'try', 'catch', 'finally', 'endtry'] |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2913 v9.CheckDefFailure(['legacy ' .. cmd .. ' expr'], 'E1189:') |
24776
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2914 endfor |
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2915 enddef |
7464d4c927f5
patch 8.2.2926: Vim9: no good error for using :legacy in a :def function
Bram Moolenaar <Bram@vim.org>
parents:
24695
diff
changeset
|
2916 |
25800
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2917 def Test_call_legacy_with_dict() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2918 var lines =<< trim END |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2919 vim9script |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2920 func Legacy() dict |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2921 let g:result = self.value |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2922 endfunc |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2923 def TestDirect() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2924 var d = {value: 'yes', func: Legacy} |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2925 d.func() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2926 enddef |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2927 TestDirect() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2928 assert_equal('yes', g:result) |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2929 unlet g:result |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2930 |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2931 def TestIndirect() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2932 var d = {value: 'foo', func: Legacy} |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2933 var Fi = d.func |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2934 Fi() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2935 enddef |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2936 TestIndirect() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2937 assert_equal('foo', g:result) |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2938 unlet g:result |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2939 |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2940 var d = {value: 'bar', func: Legacy} |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2941 d.func() |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2942 assert_equal('bar', g:result) |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2943 unlet g:result |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2944 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2945 v9.CheckScriptSuccess(lines) |
25800
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2946 enddef |
fe8d153cb268
patch 8.2.3435: Vim9: dict is not passed to dict function
Bram Moolenaar <Bram@vim.org>
parents:
25774
diff
changeset
|
2947 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2948 def s:DoFilterThis(a: string): list<string> |
23557
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2949 # closure nested inside another closure using argument |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2950 var Filter = (l) => filter(l, (_, v) => stridx(v, a) == 0) |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2951 return ['x', 'y', 'a', 'x2', 'c']->Filter() |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2952 enddef |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2953 |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2954 def Test_nested_closure_using_argument() |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2955 assert_equal(['x', 'x2'], DoFilterThis('x')) |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2956 enddef |
f50ee1ae4d9b
patch 8.2.2321: Vim9: cannot nest closures
Bram Moolenaar <Bram@vim.org>
parents:
23547
diff
changeset
|
2957 |
23559
64dfb69e7d46
patch 8.2.2322: Vim9: closure nested limiting to one level
Bram Moolenaar <Bram@vim.org>
parents:
23557
diff
changeset
|
2958 def Test_triple_nested_closure() |
64dfb69e7d46
patch 8.2.2322: Vim9: closure nested limiting to one level
Bram Moolenaar <Bram@vim.org>
parents:
23557
diff
changeset
|
2959 var what = 'x' |
64dfb69e7d46
patch 8.2.2322: Vim9: closure nested limiting to one level
Bram Moolenaar <Bram@vim.org>
parents:
23557
diff
changeset
|
2960 var Match = (val: string, cmp: string): bool => stridx(val, cmp) == 0 |
64dfb69e7d46
patch 8.2.2322: Vim9: closure nested limiting to one level
Bram Moolenaar <Bram@vim.org>
parents:
23557
diff
changeset
|
2961 var Filter = (l) => filter(l, (_, v) => Match(v, what)) |
64dfb69e7d46
patch 8.2.2322: Vim9: closure nested limiting to one level
Bram Moolenaar <Bram@vim.org>
parents:
23557
diff
changeset
|
2962 assert_equal(['x', 'x2'], ['x', 'y', 'a', 'x2', 'c']->Filter()) |
64dfb69e7d46
patch 8.2.2322: Vim9: closure nested limiting to one level
Bram Moolenaar <Bram@vim.org>
parents:
23557
diff
changeset
|
2963 enddef |
64dfb69e7d46
patch 8.2.2322: Vim9: closure nested limiting to one level
Bram Moolenaar <Bram@vim.org>
parents:
23557
diff
changeset
|
2964 |
21176
54c665ad2db3
patch 8.2.1139: Vim9: test for silent echo fails in some environments
Bram Moolenaar <Bram@vim.org>
parents:
21174
diff
changeset
|
2965 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
|
2966 CheckScreendump |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2967 call Run_Test_silent_echo() |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2968 endfunc |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2969 |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2970 def Run_Test_silent_echo() |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2971 var lines =<< trim END |
21172
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
2972 vim9script |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
2973 def EchoNothing() |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
2974 silent echo '' |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
2975 enddef |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
2976 defcompile |
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
2977 END |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2978 writefile(lines, 'XTest_silent_echo') |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2979 |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2980 # Check that the balloon shows up after a mouse move |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2981 var buf = g:RunVimInTerminal('-S XTest_silent_echo', {'rows': 6}) |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2982 term_sendkeys(buf, ":abc") |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2983 g:VerifyScreenDump(buf, 'Test_vim9_silent_echo', {}) |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2984 |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2985 # clean up |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2986 g:StopVimInTerminal(buf) |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2987 delete('XTest_silent_echo') |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
2988 enddef |
21172
96ae8622cfb6
patch 8.2.1137: Vim9: modifiers not cleared after compiling function
Bram Moolenaar <Bram@vim.org>
parents:
21170
diff
changeset
|
2989 |
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
|
2990 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
|
2991 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
|
2992 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
|
2993 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
|
2994 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
2995 func s:UserError() |
22742
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
2996 silent! invalid |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
2997 endfunc |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
2998 |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
2999 def SilentlyUserError() |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
3000 UserError() |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
3001 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
|
3002 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
|
3003 |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
3004 " 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
|
3005 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
|
3006 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
|
3007 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
|
3008 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
|
3009 |
22742
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
3010 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
|
3011 call SilentlyUserError() |
f7f2d73ff85e
patch 8.2.1919: assert_fails() setting emsg_silent changes normal execution
Bram Moolenaar <Bram@vim.org>
parents:
22736
diff
changeset
|
3012 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
|
3013 |
56907027dba7
patch 8.2.1916: Vim9: function call is aborted even when "silent!" is used
Bram Moolenaar <Bram@vim.org>
parents:
22734
diff
changeset
|
3014 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
|
3015 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
|
3016 |
22760
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
3017 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
|
3018 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
|
3019 vim9script |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
3020 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
|
3021 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
|
3022 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
|
3023 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
|
3024 endif |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
3025 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
|
3026 enddef |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
3027 |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
3028 popup_create('popup', {filter: Filter}) |
22760
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
3029 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
|
3030 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3031 v9.CheckScriptSuccess(lines) |
22760
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
3032 enddef |
d235c5fa0bbe
patch 8.2.1928: Vim9: "silent!" not effective when list index is wrong
Bram Moolenaar <Bram@vim.org>
parents:
22742
diff
changeset
|
3033 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3034 def s:Fibonacci(n: number): number |
22135
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
3035 if n < 2 |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
3036 return n |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
3037 else |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
3038 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
|
3039 endif |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
3040 enddef |
f45127fbe9ba
patch 8.2.1617: Vim9: cannot pass "true" to win_splitmove()
Bram Moolenaar <Bram@vim.org>
parents:
22133
diff
changeset
|
3041 |
21281
13b1567ae0c6
patch 8.2.1191: Vim9: crash when function calls itself
Bram Moolenaar <Bram@vim.org>
parents:
21265
diff
changeset
|
3042 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
|
3043 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
|
3044 enddef |
13b1567ae0c6
patch 8.2.1191: Vim9: crash when function calls itself
Bram Moolenaar <Bram@vim.org>
parents:
21265
diff
changeset
|
3045 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3046 def s:TreeWalk(dir: string): list<any> |
23565
34aa2907082a
patch 8.2.2325: Vim9: crash if map() changes the item type
Bram Moolenaar <Bram@vim.org>
parents:
23559
diff
changeset
|
3047 return readdir(dir)->mapnew((_, 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
|
3048 fnamemodify(dir .. '/' .. val, ':p')->isdirectory() |
22936
00b0275ffe7f
patch 8.2.2015: Vim9: literal dict #{} is not like any other language
Bram Moolenaar <Bram@vim.org>
parents:
22910
diff
changeset
|
3049 ? {[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
|
3050 : val |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
3051 ) |
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
|
3052 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
|
3053 |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
3054 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
|
3055 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
|
3056 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
|
3057 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
|
3058 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
|
3059 |
23072
4b398a229b0b
patch 8.2.2082: Vim9: can still use the depricated #{} dict syntax
Bram Moolenaar <Bram@vim.org>
parents:
23009
diff
changeset
|
3060 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
|
3061 |
7c50dfe302f8
patch 8.2.1202: Vim9: crash when calling a closure from a builtin function
Bram Moolenaar <Bram@vim.org>
parents:
21301
diff
changeset
|
3062 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
|
3063 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
|
3064 |
22496
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3065 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
|
3066 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
|
3067 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3068 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
|
3069 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3070 v9.CheckScriptFailure(lines, 'E129:') |
22496
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3071 |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3072 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
|
3073 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3074 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
|
3075 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3076 v9.CheckScriptFailure(lines, 'E129:') |
22496
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3077 |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3078 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
|
3079 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3080 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
|
3081 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3082 v9.CheckScriptFailure(lines, 'E884:') |
22496
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3083 |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3084 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
|
3085 vim9script |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3086 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
|
3087 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3088 v9.CheckScriptFailure(lines, 'E488:') |
22496
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3089 enddef |
454b78ca8247
patch 8.2.1796: Vim9: invalid memory access with weird function name
Bram Moolenaar <Bram@vim.org>
parents:
22468
diff
changeset
|
3090 |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
3091 def Test_partial_call() |
25465
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3092 var lines =<< trim END |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3093 var Xsetlist: func |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3094 Xsetlist = function('setloclist', [0]) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3095 Xsetlist([], ' ', {title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3096 getloclist(0, {title: 1})->assert_equal({title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3097 |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3098 Xsetlist = function('setloclist', [0, [], ' ']) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3099 Xsetlist({title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3100 getloclist(0, {title: 1})->assert_equal({title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3101 |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3102 Xsetlist = function('setqflist') |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3103 Xsetlist([], ' ', {title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3104 getqflist({title: 1})->assert_equal({title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3105 |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3106 Xsetlist = function('setqflist', [[], ' ']) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3107 Xsetlist({title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3108 getqflist({title: 1})->assert_equal({title: 'test'}) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3109 |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3110 var Len: func: number = function('len', ['word']) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3111 assert_equal(4, Len()) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3112 |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3113 var RepeatFunc = function('repeat', ['o']) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3114 assert_equal('ooooo', RepeatFunc(5)) |
b8a6a0007dc3
patch 8.2.3269: Vim9: wrong argument check for partial
Bram Moolenaar <Bram@vim.org>
parents:
25370
diff
changeset
|
3115 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3116 v9.CheckDefAndScriptSuccess(lines) |
25646
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3117 |
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3118 lines =<< trim END |
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3119 vim9script |
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3120 def Foo(Parser: any) |
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3121 enddef |
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3122 var Expr: func(dict<any>): dict<any> |
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3123 const Call = Foo(Expr) |
99fbffe75217
patch 8.2.3359: Vim9: error for type when variable is not set
Bram Moolenaar <Bram@vim.org>
parents:
25632
diff
changeset
|
3124 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3125 v9.CheckScriptFailure(lines, 'E1235:') |
21347
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
3126 enddef |
d636c7bbe9ab
patch 8.2.1224: Vim9: arguments from partial are not used
Bram Moolenaar <Bram@vim.org>
parents:
21345
diff
changeset
|
3127 |
21689
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3128 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
|
3129 tab echo '0' |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3130 v9.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
|
3131 enddef |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3132 |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3133 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
|
3134 # 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
|
3135 # up. |
22435
166a0f17b05e
patch 8.2.1766: Vim9: Some tests are still using :let
Bram Moolenaar <Bram@vim.org>
parents:
22401
diff
changeset
|
3136 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
|
3137 vim9script |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3138 set eventignore= |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3139 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
|
3140 def AutocmdsDisabled() |
25202
e5d85e83a887
patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents:
25126
diff
changeset
|
3141 eval 1 + 2 |
21689
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3142 enddef |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3143 func Func() |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3144 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
|
3145 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
|
3146 endfunc |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3147 Func() |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3148 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3149 v9.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
|
3150 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
|
3151 enddef |
10866fd07595
patch 8.2.1394: Vim9: compiling a function interferes with command modifiers
Bram Moolenaar <Bram@vim.org>
parents:
21685
diff
changeset
|
3152 |
22214
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3153 def StackTop() |
25202
e5d85e83a887
patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents:
25126
diff
changeset
|
3154 eval 1 + 2 |
e5d85e83a887
patch 8.2.3137: Vim9: no error when a line only has a variable name
Bram Moolenaar <Bram@vim.org>
parents:
25126
diff
changeset
|
3155 eval 2 + 3 |
22214
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3156 # call not on fourth line |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3157 g:StackBot() |
22214
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3158 enddef |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3159 |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3160 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
|
3161 # 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
|
3162 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
|
3163 enddef |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3164 |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3165 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
|
3166 try |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3167 g:StackTop() |
22214
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3168 catch |
22222
7b9e8fd7ea5b
patch 8.2.1660: assert functions require passing expected as first argument
Bram Moolenaar <Bram@vim.org>
parents:
22216
diff
changeset
|
3169 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
|
3170 endtry |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3171 enddef |
efa1511a5bf3
patch 8.2.1656: Vim9: callstack wrong if :def function calls :def function
Bram Moolenaar <Bram@vim.org>
parents:
22165
diff
changeset
|
3172 |
22537
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3173 " 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
|
3174 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
|
3175 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
|
3176 vim9script |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3177 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
|
3178 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
|
3179 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
|
3180 var y = 'x' |
24414
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3181 map(x, (_, _) => y) |
22537
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3182 endif |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3183 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
|
3184 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
|
3185 enddef |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3186 Func() |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3187 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3188 v9.CheckScriptSuccess(lines) |
22537
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3189 enddef |
9870e8b6ed78
patch 8.2.1817: Vim9: wrong instruction when reusing a local variable spot
Bram Moolenaar <Bram@vim.org>
parents:
22535
diff
changeset
|
3190 |
22948
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3191 def Test_reset_did_emsg() |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3192 var lines =<< trim END |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3193 @s = 'blah' |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3194 au BufWinLeave * # |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3195 def Func() |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3196 var winid = popup_create('popup', {}) |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3197 exe '*s' |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3198 popup_close(winid) |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3199 enddef |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3200 Func() |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3201 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3202 v9.CheckScriptFailure(lines, 'E492:', 8) |
23092
c713358da074
patch 8.2.2092: Vim9: unpredictable errors for script tests
Bram Moolenaar <Bram@vim.org>
parents:
23074
diff
changeset
|
3203 delfunc! g:Func |
22948
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3204 enddef |
707b90980de5
patch 8.2.2021: Vim9: get E1099 when autocommand resets did_emsg
Bram Moolenaar <Bram@vim.org>
parents:
22942
diff
changeset
|
3205 |
23177
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3206 def Test_did_emsg_reset() |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3207 # executing an autocommand resets did_emsg, this should not result in a |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3208 # builtin function considered failing |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3209 var lines =<< trim END |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3210 vim9script |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3211 au BufWinLeave * # |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3212 def Func() |
24398
bed5ec739304
patch 8.2.2739: Vim9: a lambda accepts too many arguments at the script level
Bram Moolenaar <Bram@vim.org>
parents:
24371
diff
changeset
|
3213 popup_menu('', {callback: (a, b) => popup_create('', {})->popup_close()}) |
23177
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3214 eval [][0] |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3215 enddef |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3216 nno <F3> <cmd>call <sid>Func()<cr> |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3217 feedkeys("\<F3>\e", 'xt') |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3218 END |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3219 writefile(lines, 'XemsgReset') |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3220 assert_fails('so XemsgReset', ['E684:', 'E684:'], lines, 2) |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3221 delete('XemsgReset') |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3222 nunmap <F3> |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3223 au! BufWinLeave |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3224 enddef |
cc24ac009f29
patch 8.2.2134: Vim9: get E1099 when autocmd triggered in builtin function
Bram Moolenaar <Bram@vim.org>
parents:
23171
diff
changeset
|
3225 |
23102
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3226 def Test_abort_with_silent_call() |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3227 var lines =<< trim END |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3228 vim9script |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3229 g:result = 'none' |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3230 def Func() |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3231 g:result += 3 |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3232 g:result = 'yes' |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3233 enddef |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3234 # error is silenced, but function aborts on error |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3235 silent! Func() |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3236 assert_equal('none', g:result) |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3237 unlet g:result |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3238 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3239 v9.CheckScriptSuccess(lines) |
23102
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3240 enddef |
3239b0f3c592
patch 8.2.2097: Vim9: using :silent! when calling a function prevents abort
Bram Moolenaar <Bram@vim.org>
parents:
23100
diff
changeset
|
3241 |
23100
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3242 def Test_continues_with_silent_error() |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3243 var lines =<< trim END |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3244 vim9script |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3245 g:result = 'none' |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3246 def Func() |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3247 silent! g:result += 3 |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3248 g:result = 'yes' |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3249 enddef |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3250 # error is silenced, function does not abort |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3251 Func() |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3252 assert_equal('yes', g:result) |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3253 unlet g:result |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3254 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3255 v9.CheckScriptSuccess(lines) |
23100
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3256 enddef |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3257 |
23074
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3258 def Test_abort_even_with_silent() |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3259 var lines =<< trim END |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3260 vim9script |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3261 g:result = 'none' |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3262 def Func() |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3263 eval {-> ''}() .. '' .. {}['X'] |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3264 g:result = 'yes' |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3265 enddef |
23100
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3266 silent! Func() |
23074
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3267 assert_equal('none', g:result) |
23098
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3268 unlet g:result |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3269 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3270 v9.CheckScriptSuccess(lines) |
23098
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3271 enddef |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3272 |
23100
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3273 def Test_cmdmod_silent_restored() |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3274 var lines =<< trim END |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3275 vim9script |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3276 def Func() |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3277 g:result = 'none' |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3278 silent! g:result += 3 |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3279 g:result = 'none' |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3280 g:result += 3 |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3281 enddef |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3282 Func() |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3283 END |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3284 # can't use CheckScriptFailure, it ignores the :silent! |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3285 var fname = 'Xdefsilent' |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3286 writefile(lines, fname) |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3287 var caught = 'no' |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3288 try |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3289 exe 'source ' .. fname |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3290 catch /E1030:/ |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3291 caught = 'yes' |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3292 assert_match('Func, line 4', v:throwpoint) |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3293 endtry |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3294 assert_equal('yes', caught) |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3295 delete(fname) |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3296 enddef |
9c3a6c33c0e5
patch 8.2.2096: Vim9: command modifiers not restored after assignment
Bram Moolenaar <Bram@vim.org>
parents:
23098
diff
changeset
|
3297 |
24218
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3298 def Test_cmdmod_silent_nested() |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3299 var lines =<< trim END |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3300 vim9script |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3301 var result = '' |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3302 |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3303 def Error() |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3304 result ..= 'Eb' |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3305 eval [][0] |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3306 result ..= 'Ea' |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3307 enddef |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3308 |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3309 def Crash() |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3310 result ..= 'Cb' |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3311 sil! Error() |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3312 result ..= 'Ca' |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3313 enddef |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3314 |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3315 Crash() |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3316 assert_equal('CbEbEaCa', result) |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3317 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3318 v9.CheckScriptSuccess(lines) |
24218
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3319 enddef |
40e27d96e395
patch 8.2.2650: Vim9: command modifiers not handled in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24208
diff
changeset
|
3320 |
23098
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3321 def Test_dict_member_with_silent() |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3322 var lines =<< trim END |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3323 vim9script |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3324 g:result = 'none' |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3325 var d: dict<any> |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3326 def Func() |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3327 try |
23428
5807e3958e38
patch 8.2.2257: Vim9: using -> for lambda is ambiguous
Bram Moolenaar <Bram@vim.org>
parents:
23426
diff
changeset
|
3328 g:result = map([], (_, v) => ({}[v]))->join() .. d[''] |
23098
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3329 catch |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3330 endtry |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3331 enddef |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3332 silent! Func() |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3333 assert_equal('0', g:result) |
bdafc132a4a1
patch 8.2.2095: Vim9: crash when failed dict member is followed by concat
Bram Moolenaar <Bram@vim.org>
parents:
23092
diff
changeset
|
3334 unlet g:result |
23074
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3335 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3336 v9.CheckScriptSuccess(lines) |
23074
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3337 enddef |
cd885eb0e50c
patch 8.2.2083: Vim9: crash when using ":silent!" and getting member fails
Bram Moolenaar <Bram@vim.org>
parents:
23072
diff
changeset
|
3338 |
23689
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3339 def Test_skip_cmds_with_silent() |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3340 var lines =<< trim END |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3341 vim9script |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3342 |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3343 def Func(b: bool) |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3344 Crash() |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3345 enddef |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3346 |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3347 def Crash() |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3348 sil! :/not found/d _ |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3349 sil! :/not found/put _ |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3350 enddef |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3351 |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3352 Func(true) |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3353 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3354 v9.CheckScriptSuccess(lines) |
23689
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3355 enddef |
e7f5931b46ca
patch 8.2.2386: Vim9: crash when using ":silent! put"
Bram Moolenaar <Bram@vim.org>
parents:
23644
diff
changeset
|
3356 |
23281
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3357 def Test_opfunc() |
27464
a14c4d3e3260
patch 8.2.4260: Vim9: can still use a global function without g:
Bram Moolenaar <Bram@vim.org>
parents:
27457
diff
changeset
|
3358 nnoremap <F3> <cmd>set opfunc=g:Opfunc<cr>g@ |
23281
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3359 def g:Opfunc(_: any): string |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3360 setline(1, 'ASDF') |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3361 return '' |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3362 enddef |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3363 new |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3364 setline(1, 'asdf') |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3365 feedkeys("\<F3>$", 'x') |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3366 assert_equal('ASDF', getline(1)) |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3367 |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3368 bwipe! |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3369 nunmap <F3> |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3370 enddef |
5b4db8035d1d
patch 8.2.2186: Vim9: error when using 'opfunc'
Bram Moolenaar <Bram@vim.org>
parents:
23252
diff
changeset
|
3371 |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3372 func Test_opfunc_error() |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3373 CheckScreendump |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3374 call Run_Test_opfunc_error() |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3375 endfunc |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3376 |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3377 def Run_Test_opfunc_error() |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3378 # test that the error from Opfunc() is displayed right away |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3379 var lines =<< trim END |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3380 vim9script |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3381 |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3382 def Opfunc(type: string) |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3383 try |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3384 eval [][0] |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3385 catch /nothing/ # error not caught |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3386 endtry |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3387 enddef |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3388 &operatorfunc = Opfunc |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3389 nnoremap <expr> l <SID>L() |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3390 def L(): string |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3391 return 'l' |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3392 enddef |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3393 'x'->repeat(10)->setline(1) |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3394 feedkeys('g@l', 'n') |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3395 feedkeys('llll') |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3396 END |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3397 call writefile(lines, 'XTest_opfunc_error') |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3398 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3399 var buf = g:RunVimInTerminal('-S XTest_opfunc_error', {rows: 6, wait_for_ruler: 0}) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3400 g:WaitForAssert(() => assert_match('Press ENTER', term_getline(buf, 6))) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3401 g:WaitForAssert(() => assert_match('E684: list index out of range: 0', term_getline(buf, 5))) |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3402 |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3403 # clean up |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3404 g:StopVimInTerminal(buf) |
26538
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3405 delete('XTest_opfunc_error') |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3406 enddef |
dfa658800f21
patch 8.2.3798: a :def callback function postpones an error message
Bram Moolenaar <Bram@vim.org>
parents:
26530
diff
changeset
|
3407 |
23289
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3408 " this was crashing on exit |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3409 def Test_nested_lambda_in_closure() |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3410 var lines =<< trim END |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3411 vim9script |
24555
83877a1b66fd
patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents:
24539
diff
changeset
|
3412 command WriteDone writefile(['Done'], 'XnestedDone') |
23289
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3413 def Outer() |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3414 def g:Inner() |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3415 echo map([1, 2, 3], {_, v -> v + 1}) |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3416 enddef |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3417 g:Inner() |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3418 enddef |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3419 defcompile |
24555
83877a1b66fd
patch 8.2.2817: Vim9: script sourcing continues after an error
Bram Moolenaar <Bram@vim.org>
parents:
24539
diff
changeset
|
3420 # not reached |
23289
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3421 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3422 if !g:RunVim([], lines, '--clean -c WriteDone -c quit') |
23289
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3423 return |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3424 endif |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3425 assert_equal(['Done'], readfile('XnestedDone')) |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3426 delete('XnestedDone') |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3427 enddef |
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3428 |
24065
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3429 def Test_check_func_arg_types() |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3430 var lines =<< trim END |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3431 vim9script |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3432 def F1(x: string): string |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3433 return x |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3434 enddef |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3435 |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3436 def F2(x: number): number |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3437 return x + 1 |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3438 enddef |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3439 |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3440 def G(g: func): dict<func> |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3441 return {f: g} |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3442 enddef |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3443 |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3444 def H(d: dict<func>): string |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3445 return d.f('a') |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3446 enddef |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3447 END |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3448 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3449 v9.CheckScriptSuccess(lines + ['echo H(G(F1))']) |
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3450 v9.CheckScriptFailure(lines + ['echo H(G(F2))'], 'E1013:') |
24065
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3451 enddef |
a6aec9a89184
patch 8.2.2574: Vim9: crash when calling partial with wrong function
Bram Moolenaar <Bram@vim.org>
parents:
24061
diff
changeset
|
3452 |
25579
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3453 def Test_list_any_type_checked() |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3454 var lines =<< trim END |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3455 vim9script |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3456 def Foo() |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3457 --decl-- |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3458 Bar(l) |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3459 enddef |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3460 def Bar(ll: list<dict<any>>) |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3461 enddef |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3462 Foo() |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3463 END |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3464 lines[2] = 'var l: list<any>' |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3465 v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<any>', 2) |
25579
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3466 |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3467 lines[2] = 'var l: list<any> = []' |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3468 v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<any>', 2) |
25579
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3469 |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3470 lines[2] = 'var l: list<any> = [11]' |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3471 v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected list<dict<any>> but got list<number>', 2) |
25579
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3472 enddef |
d8fb5bb88362
patch 8.2.3326: Vim9: no error passing an empty list of the wrong type
Bram Moolenaar <Bram@vim.org>
parents:
25561
diff
changeset
|
3473 |
24404
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3474 def Test_compile_error() |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3475 var lines =<< trim END |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3476 def g:Broken() |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3477 echo 'a' + {} |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3478 enddef |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3479 call g:Broken() |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3480 END |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3481 # First call: compilation error |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3482 v9.CheckScriptFailure(lines, 'E1051: Wrong argument type for +') |
24404
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3483 |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3484 # Second call won't try compiling again |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3485 assert_fails('call g:Broken()', 'E1091: Function is not compiled: Broken') |
24406
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3486 delfunc g:Broken |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3487 |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3488 # No error when compiling with :silent! |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3489 lines =<< trim END |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3490 def g:Broken() |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3491 echo 'a' + [] |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3492 enddef |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3493 silent! defcompile |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3494 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3495 v9.CheckScriptSuccess(lines) |
24406
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3496 |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3497 # Calling the function won't try compiling again |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3498 assert_fails('call g:Broken()', 'E1091: Function is not compiled: Broken') |
a26f0fa12845
patch 8.2.2743: Vim9: function state stuck when compiling with ":silent!"
Bram Moolenaar <Bram@vim.org>
parents:
24404
diff
changeset
|
3499 delfunc g:Broken |
24404
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3500 enddef |
a2a7d2d6e724
patch 8.2.2742: Vim9: when compiling a function fails it is cleared
Bram Moolenaar <Bram@vim.org>
parents:
24402
diff
changeset
|
3501 |
24408
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3502 def Test_ignored_argument() |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3503 var lines =<< trim END |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3504 vim9script |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3505 def Ignore(_, _): string |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3506 return 'yes' |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3507 enddef |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3508 assert_equal('yes', Ignore(1, 2)) |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3509 |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3510 func Ok(_) |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3511 return a:_ |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3512 endfunc |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3513 assert_equal('ok', Ok('ok')) |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3514 |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3515 func Oktoo() |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3516 let _ = 'too' |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3517 return _ |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3518 endfunc |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3519 assert_equal('too', Oktoo()) |
24420
e0fa539a9b34
patch 8.2.2750: Vim9: error for using underscore in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24414
diff
changeset
|
3520 |
e0fa539a9b34
patch 8.2.2750: Vim9: error for using underscore in nested function
Bram Moolenaar <Bram@vim.org>
parents:
24414
diff
changeset
|
3521 assert_equal([[1], [2], [3]], range(3)->mapnew((_, v) => [v]->map((_, w) => w + 1))) |
24408
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3522 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3523 v9.CheckScriptSuccess(lines) |
24408
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3524 |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3525 lines =<< trim END |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3526 def Ignore(_: string): string |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3527 return _ |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3528 enddef |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3529 defcompile |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3530 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3531 v9.CheckScriptFailure(lines, 'E1181:', 1) |
24408
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3532 |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3533 lines =<< trim END |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3534 var _ = 1 |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3535 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3536 v9.CheckDefAndScriptFailure(lines, 'E1181:', 1) |
24695
13efbfc53054
patch 8.2.2886: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24685
diff
changeset
|
3537 |
13efbfc53054
patch 8.2.2886: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24685
diff
changeset
|
3538 lines =<< trim END |
13efbfc53054
patch 8.2.2886: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24685
diff
changeset
|
3539 var x = _ |
13efbfc53054
patch 8.2.2886: various pieces of code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents:
24685
diff
changeset
|
3540 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3541 v9.CheckDefAndScriptFailure(lines, 'E1181:', 1) |
24408
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3542 enddef |
96e0b898d5b4
patch 8.2.2744: Vim9: no way to explicitly ignore an argument
Bram Moolenaar <Bram@vim.org>
parents:
24406
diff
changeset
|
3543 |
24414
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3544 def Test_too_many_arguments() |
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3545 var lines =<< trim END |
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3546 echo [0, 1, 2]->map(() => 123) |
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3547 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3548 v9.CheckDefExecAndScriptFailure(lines, 'E1106: 2 arguments too many', 1) |
24414
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3549 |
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3550 lines =<< trim END |
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3551 echo [0, 1, 2]->map((_) => 123) |
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3552 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3553 v9.CheckDefExecAndScriptFailure(lines, 'E1106: One argument too many', 1) |
24414
f539864ba851
patch 8.2.2747: Vim9: not always an error for too many function arguments
Bram Moolenaar <Bram@vim.org>
parents:
24408
diff
changeset
|
3554 enddef |
23289
ac701146c708
patch 8.2.2190: Vim9: crash when compiled with EXITFREE
Bram Moolenaar <Bram@vim.org>
parents:
23285
diff
changeset
|
3555 |
24525
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3556 def Test_closing_brace_at_start_of_line() |
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3557 var lines =<< trim END |
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3558 def Func() |
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3559 enddef |
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3560 Func( |
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3561 ) |
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3562 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3563 v9.CheckDefAndScriptSuccess(lines) |
24525
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3564 enddef |
887121a6d7cf
patch 8.2.2802: Vim9: illegal memory access
Bram Moolenaar <Bram@vim.org>
parents:
24436
diff
changeset
|
3565 |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3566 func s:CreateMydict() |
25630
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3567 let g:mydict = {} |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3568 func g:mydict.afunc() |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3569 let g:result = self.key |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3570 endfunc |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3571 endfunc |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3572 |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3573 def Test_numbered_function_reference() |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3574 CreateMydict() |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3575 var output = execute('legacy func g:mydict.afunc') |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3576 var funcName = 'g:' .. substitute(output, '.*function \(\d\+\).*', '\1', '') |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3577 execute 'function(' .. funcName .. ', [], {key: 42})()' |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3578 # check that the function still exists |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3579 assert_equal(output, execute('legacy func g:mydict.afunc')) |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3580 unlet g:mydict |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3581 enddef |
c26eb08a0df2
patch 8.2.3351: Vim9: using a function by name may delete it
Bram Moolenaar <Bram@vim.org>
parents:
25609
diff
changeset
|
3582 |
26960
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3583 def Test_go_beyond_end_of_cmd() |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3584 # this was reading the byte after the end of the line |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3585 var lines =<< trim END |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3586 def F() |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3587 cal |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3588 enddef |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3589 defcompile |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3590 END |
27457
4c16acb2525f
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
27219
diff
changeset
|
3591 v9.CheckScriptFailure(lines, 'E476:') |
26960
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3592 enddef |
043a15b37bf1
patch 8.2.4009: reading one byte beyond the end of the line
Bram Moolenaar <Bram@vim.org>
parents:
26925
diff
changeset
|
3593 |
24826
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3594 if has('python3') |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3595 def Test_python3_heredoc() |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3596 py3 << trim EOF |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3597 import vim |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3598 vim.vars['didit'] = 'yes' |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3599 EOF |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3600 assert_equal('yes', g:didit) |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3601 |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3602 python3 << trim EOF |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3603 import vim |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3604 vim.vars['didit'] = 'again' |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3605 EOF |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3606 assert_equal('again', g:didit) |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3607 enddef |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3608 endif |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3609 |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3610 " This messes up syntax highlight, keep near the end. |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3611 if has('lua') |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3612 def Test_lua_heredoc() |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3613 g:d = {} |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3614 lua << trim EOF |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3615 x = vim.eval('g:d') |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3616 x['key'] = 'val' |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3617 EOF |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3618 assert_equal('val', g:d.key) |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3619 enddef |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3620 endif |
a8d64f1a223b
patch 8.2.2951: Vim9: cannot use heredoc for :python, :lua, etc.
Bram Moolenaar <Bram@vim.org>
parents:
24776
diff
changeset
|
3621 |
20257
683c2da4982b
patch 8.2.0684: Vim9: memory leak when using lambda
Bram Moolenaar <Bram@vim.org>
parents:
20255
diff
changeset
|
3622 |
19912
d4fa9db88d16
patch 8.2.0512: Vim9: no optional arguments in func type
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3623 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |