]> granicus.if.org Git - vim/commitdiff
patch 8.2.4174: Vim9: can use an autoload name in normal script v8.2.4174
authorBram Moolenaar <Bram@vim.org>
Fri, 21 Jan 2022 20:37:05 +0000 (20:37 +0000)
committerBram Moolenaar <Bram@vim.org>
Fri, 21 Jan 2022 20:37:05 +0000 (20:37 +0000)
Problem:    Vim9: can use an autoload name in normal script.
Solution:   Disallow using an autoload name.

src/errors.h
src/testdir/test_vim9_import.vim
src/userfunc.c
src/version.c

index 3fd265f43d850953a4ccda53e0bd8b5fdff77ca3..e632d5b240fc6a0041407f236a06c069e6525d21 100644 (file)
@@ -3209,7 +3209,8 @@ EXTERN char e_cannot_import_dot_vim_without_using_as[]
        INIT(= N_("E1261: Cannot import .vim without using \"as\""));
 EXTERN char e_cannot_import_same_script_twice_str[]
        INIT(= N_("E1262: Cannot import the same script twice: %s"));
-// E1263 unused
+EXTERN char e_using_autoload_name_in_non_autoload_script_str[]
+       INIT(= N_("E1263: Using autoload name in a non-autoload script: %s"));
 EXTERN char e_autoload_import_cannot_use_absolute_or_relative_path[]
        INIT(= N_("E1264: Autoload import cannot use absolute or relative path: %s"));
 EXTERN char e_cannot_use_partial_here[]
index 6ecea56a9364c28cdaa0d7244081def2d4d0396a..3734709f08133e4e91872bf640e5e17c87d6ab0d 100644 (file)
@@ -1622,6 +1622,18 @@ def Test_autoload_missing_function_name()
   delete('Xdir', 'rf')
 enddef
 
+def Test_autoload_name_wring()
+  var lines =<< trim END
+     vim9script
+     def Xscriptname#Func()
+     enddef
+  END
+  writefile(lines, 'Xscriptname.vim')
+  CheckScriptFailure(lines, 'E1263:')
+
+  delete('Xscriptname')
+enddef
+
 def Test_import_autoload_postponed()
   mkdir('Xdir/autoload', 'p')
   var save_rtp = &rtp
index 7341878758c77cca8217d8a816113cdc1deae103..650dfc9d129160de06876dbed1bbb4dfe71a4c45 100644 (file)
@@ -4495,6 +4495,12 @@ define_function(exarg_T *eap, char_u *name_arg, garray_T *lines_to_free)
                    }
                }
            }
+           else if (vim9script && vim_strchr(name, AUTOLOAD_CHAR) != NULL)
+           {
+               semsg(_(e_using_autoload_name_in_non_autoload_script_str),
+                                                                        name);
+               goto erret;
+           }
        }
        if (var_conflict)
        {
index a9a83237868d3b2dfecd2238be65048a3c2c0ca7..edf26ed805d7bb0f5a99247e86e81ab6be4b1915 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4174,
 /**/
     4173,
 /**/