diff options
author | Ernie Rael <errael@raelity.com> | 2024-04-24 20:07:50 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2024-04-24 20:07:50 +0200 |
commit | 3f821d6de2586d921fb23e2facb4764ef9eb3294 (patch) | |
tree | c576910f877e4e43093a534172c1a4e7bdf329c4 /src/testdir/test_vim9_import.vim | |
parent | 04e8943556fbe2e53ce611f753141442bc8c655a (diff) |
patch 9.1.0369: Vim9: problem when importing autoloaded scriptsv9.1.0369
Problem: Vim9: problem when importing autoloaded scripts
Solution: In `:def` handle storing to vim9 autoload export
(Ernie Rael)
Problem occurs when `import autoload ./.../autoload/...`. The autoload
in the specified path causes the use of an autoload_prefix which combines
with the `import autoload` to create trouble.
In `generate_store_var()` `case dest_script` use ISN_STOREEXPORT,
when needed, instead of ISN_STORES. When executing ISN_STOREEXPORT,
check for autoload_prefix.
fixes: #14606
closes: #14615
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'src/testdir/test_vim9_import.vim')
-rw-r--r-- | src/testdir/test_vim9_import.vim | 50 |
1 files changed, 50 insertions, 0 deletions
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() |