Problem: Vim9: can create a script variable from a legacy function.
Solution: Disallow creating a script variable from a function.
INIT(= N_("E1267: Function name must start with a capital: %s"));
EXTERN char e_cannot_use_s_colon_in_vim9_script_str[]
INIT(= N_("E1268: Cannot use s: in Vim9 script: %s"));
+EXTERN char e_cannot_create_vim9_script_variable_in_function_str[]
+ INIT(= N_("E1269: Cannot create a Vim9 script variable in a function: %s"));
#endif
semsg(_(e_cannot_use_str_itself_it_is_imported), name);
goto failed;
}
+ if (!in_vim9script())
+ {
+ semsg(_(e_cannot_create_vim9_script_variable_in_function_str),
+ name);
+ goto failed;
+ }
}
if (dest_tv == NULL)
delete('Xforward')
enddef
-def Test_declare_script_in_func()
+def Test_declare_script_var_in_func()
var lines =<< trim END
vim9script
func Declare()
let s:local = 123
endfunc
Declare()
+ END
+ v9.CheckScriptFailure(lines, 'E1269:')
+enddef
+
+def Test_lock_script_var()
+ var lines =<< trim END
+ vim9script
+ var local = 123
assert_equal(123, local)
var error: string
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4371,
/**/
4370,
/**/