From 3f821d6de2586d921fb23e2facb4764ef9eb3294 Mon Sep 17 00:00:00 2001 From: Ernie Rael Date: Wed, 24 Apr 2024 20:07:50 +0200 Subject: patch 9.1.0369: Vim9: problem when importing autoloaded scripts 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 Signed-off-by: Christian Brabandt Signed-off-by: Yegappan Lakshmanan --- src/vim9instr.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/vim9instr.c') diff --git a/src/vim9instr.c b/src/vim9instr.c index 4df63fd09a..ad8beb1a30 100644 --- a/src/vim9instr.c +++ b/src/vim9instr.c @@ -2394,6 +2394,7 @@ generate_store_var( case dest_vimvar: return generate_STORE(cctx, ISN_STOREV, vimvaridx, NULL); case dest_script: + case dest_script_v9: { int scriptvar_idx = lhs->lhs_scriptvar_idx; int scriptvar_sid = lhs->lhs_scriptvar_sid; @@ -2401,10 +2402,14 @@ generate_store_var( { isntype_T isn_type = ISN_STORES; + // If "sn_import_autoload", generate ISN_STOREEXPORT (not + // ISN_STORES) if destination is in a vim9script or if + // there is no "sn_autoload_prefix". if (SCRIPT_ID_VALID(scriptvar_sid) && SCRIPT_ITEM(scriptvar_sid)->sn_import_autoload - && SCRIPT_ITEM(scriptvar_sid)->sn_autoload_prefix - == NULL) + && ((SCRIPT_ITEM(scriptvar_sid) + ->sn_autoload_prefix == NULL) + || lhs->lhs_dest == dest_script_v9)) { // "import autoload './dir/script.vim'" - load script // first -- cgit v1.2.3