Mercurial > vim
comparison src/testdir/test_vim9_script.vim @ 27669:5c4ab8d4472c v8.2.4360
patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Commit: https://github.com/vim/vim/commit/a749a42ed25534c88c636e5ab6603f1f97b857a4
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 12 19:52:25 2022 +0000
patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Problem: Vim9: allowing use of "s:" leads to inconsistencies.
Solution: Disallow using "s:" in Vim9 script at the script level.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 12 Feb 2022 21:00:03 +0100 |
parents | a6ffe874a24b |
children | fae9567b8024 |
comparison
equal
deleted
inserted
replaced
27668:407a08328369 | 27669:5c4ab8d4472c |
---|---|
67 v9.CheckScriptSuccess([ | 67 v9.CheckScriptSuccess([ |
68 'vim9script', | 68 'vim9script', |
69 'func CheckMe()', | 69 'func CheckMe()', |
70 ' return 123', | 70 ' return 123', |
71 'endfunc', | 71 'endfunc', |
72 'assert_equal(123, s:CheckMe())', | 72 'func DoTest()', |
73 ' call assert_equal(123, s:CheckMe())', | |
74 'endfunc', | |
75 'DoTest()', | |
73 ]) | 76 ]) |
74 | 77 |
75 # Check function in script namespace cannot be deleted | 78 # Check function in script namespace cannot be deleted |
76 v9.CheckScriptFailure([ | 79 v9.CheckScriptFailure([ |
77 'vim9script', | 80 'vim9script', |
176 | 179 |
177 v9.CheckDefFailure(['var Ref: number', 'Ref()'], 'E1085:') | 180 v9.CheckDefFailure(['var Ref: number', 'Ref()'], 'E1085:') |
178 v9.CheckDefFailure(['var Ref: string', 'var res = Ref()'], 'E1085:') | 181 v9.CheckDefFailure(['var Ref: string', 'var res = Ref()'], 'E1085:') |
179 enddef | 182 enddef |
180 | 183 |
184 def Test_script_namespace() | |
185 # defining a function or variable with s: is not allowed | |
186 var lines =<< trim END | |
187 vim9script | |
188 def s:Function() | |
189 enddef | |
190 END | |
191 v9.CheckScriptFailure(lines, 'E1268:') | |
192 | |
193 for decl in ['var', 'const', 'final'] | |
194 lines =<< trim END | |
195 vim9script | |
196 var s:var = 'var' | |
197 END | |
198 v9.CheckScriptFailure([ | |
199 'vim9script', | |
200 decl .. ' s:var = "var"', | |
201 ], 'E1268:') | |
202 endfor | |
203 | |
204 # Calling a function or using a variable with s: is not allowed at script | |
205 # level | |
206 lines =<< trim END | |
207 vim9script | |
208 def Function() | |
209 enddef | |
210 s:Function() | |
211 END | |
212 v9.CheckScriptFailure(lines, 'E1268:') | |
213 lines =<< trim END | |
214 vim9script | |
215 def Function() | |
216 enddef | |
217 call s:Function() | |
218 END | |
219 v9.CheckScriptFailure(lines, 'E1268:') | |
220 lines =<< trim END | |
221 vim9script | |
222 var var = 'var' | |
223 echo s:var | |
224 END | |
225 v9.CheckScriptFailure(lines, 'E1268:') | |
226 enddef | |
227 | |
181 def Test_script_wrong_type() | 228 def Test_script_wrong_type() |
182 var lines =<< trim END | 229 var lines =<< trim END |
183 vim9script | 230 vim9script |
184 var s:dict: dict<string> | 231 var dict: dict<string> |
185 s:dict['a'] = ['x'] | 232 dict['a'] = ['x'] |
186 END | 233 END |
187 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got list<string>', 3) | 234 v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got list<string>', 3) |
188 enddef | 235 enddef |
189 | 236 |
190 def Test_const() | 237 def Test_const() |