diff options
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_vim9_disassemble.vim | 28 | ||||
-rw-r--r-- | src/testdir/test_vim9_func.vim | 31 | ||||
-rw-r--r-- | src/testdir/test_vim9_import.vim | 50 |
3 files changed, 109 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim index 92a4ff2a6e..c74cce4482 100644 --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -381,6 +381,34 @@ def Test_disassemble_import_autoload() v9.CheckScriptSuccess(lines) enddef +def Test_disassemble_import_autoload_autoload() + mkdir('Xauto_auto/autoload', 'pR') + var lines =<< trim END + vim9script + export const val = 11 + END + writefile(lines, 'Xauto_auto/autoload/Xauto_vars_f1.vim') + + lines =<< trim END + vim9script + + import autoload './Xauto_auto/autoload/Xauto_vars_f1.vim' as f1 + def F() + f1.val = 13 + enddef + var res = execute('disass F') + + assert_match('<SNR>\d*_F.*' .. + 'f1.val = 13\_s*' .. + '\d PUSHNR 13\_s*' .. + '\d SOURCE .*/Xauto_auto/autoload/Xauto_vars_f1.vim\_s*' .. + '\d STOREEXPORT val in .*/Xauto_auto/autoload/Xauto_vars_f1.vim\_s*' .. + '\d RETURN void', + res) + END + v9.CheckScriptSuccess(lines) +enddef + def s:ScriptFuncStore() var localnr = 1 localnr = 2 diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 27585a9049..b008929611 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -166,6 +166,37 @@ def Test_wrong_function_name() delfunc g:Define enddef +" Check that in a legacy script a :def accesses the correct script variables. +" Github issue: #14615. +def Test_access_var_from_legacy_def() + # Access a script variable by name WITH "s:" prefix. + var lines =<< trim END + let s:foo = 'init' + let s:xxfoo = 'init' + def! AccessVarFromLegacyDef() + s:xxfoo = 'CHANGED' + enddef + call AccessVarFromLegacyDef() + call assert_equal('init', s:foo) + call assert_equal('CHANGED', s:xxfoo) + END + v9.CheckScriptSuccess(lines) + + # Access a script variable by name WITHOUT "s:" prefix; + # previously this accessed "foo" and not "xxfoo" + lines =<< trim END + let s:foo = 'init' + let s:xxfoo = 'init' + def! AccessVarFromLegacyDef() + xxfoo = 'CHANGED' + enddef + call AccessVarFromLegacyDef() + call assert_equal('init', s:foo) + call assert_equal('CHANGED', s:xxfoo) + END + v9.CheckScriptSuccess(lines) +enddef + def Test_listing_function_error() var lines =<< trim END var filler = 123 diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim index cfab50d584..581925d24c 100644 --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -1206,6 +1206,7 @@ def Test_autoload_export_variables() mkdir('Xautoload_vars/autoload', 'pR') var lines =<< trim END vim9script + g:Xautoload_vars_autoload = true export var val = 11 val = 42 END @@ -1215,13 +1216,24 @@ def Test_autoload_export_variables() writefile(lines, 'Xautoload_vars/autoload/Xauto_vars_f2.vim', 'D') lines =<< trim END vim9script + g:Xautoload_vars_autoload = false import autoload './Xautoload_vars/autoload/Xauto_vars_f2.vim' as f2 + # Verify that the import statement does not load the file. + assert_equal(false, g:Xautoload_vars_autoload) def F(): number return f2.val enddef + # Verify compile does not load the file. + defcompile F + assert_equal(false, g:Xautoload_vars_autoload) + + # load the file by accessing the exported variable assert_equal(42, F()) + assert_equal(true, g:Xautoload_vars_autoload) + unlet g:Xautoload_vars_autoload + assert_equal(42, f2.val) f2.val = 17 assert_equal(17, f2.val) @@ -1264,6 +1276,44 @@ def Test_autoload_export_variables() f4.val = 13 END v9.CheckScriptFailure(lines, 'E46:') + + # Test const var is not modifiable from importing script from :def. + # Github issue: #14606 + lines =<< trim END + vim9script + export const val = 11 + END + writefile(lines, 'Xautoload_vars/autoload/Xauto_vars_f5.vim', 'D') + lines =<< trim END + vim9script + + import autoload './Xautoload_vars/autoload/Xauto_vars_f5.vim' as f5 + + def F() + f5.val = 13 + enddef + F() + END + v9.CheckScriptFailure(lines, 'E741:') + + # Still part of Github issue: #14606 + lines =<< trim END + vim9script + export var val = 11 + END + writefile(lines, 'Xautoload_vars/autoload/Xauto_vars_f6.vim', 'D') + lines =<< trim END + vim9script + + import autoload './Xautoload_vars/autoload/Xauto_vars_f6.vim' as f6 + + def F() + f6.val = 13 + enddef + F() + assert_equal(13, f6.val) + END + v9.CheckScriptSuccess(lines) enddef def Test_autoload_import_relative_autoload_dir() |