@@ -3168,6 +3168,7 @@ set_var_const(
31683168 hashtab_T * ht ;
31693169 int is_script_local ;
31703170 int vim9script = in_vim9script ();
3171+ int var_in_vim9script ;
31713172
31723173 ht = find_var_ht (name , & varname );
31733174 if (ht == NULL || * varname == NUL )
@@ -3186,6 +3187,7 @@ set_var_const(
31863187 vim9_declare_error (name );
31873188 goto failed ;
31883189 }
3190+ var_in_vim9script = is_script_local && current_script_is_vim9 ();
31893191
31903192 di = find_var_in_ht (ht , 0 , varname , TRUE);
31913193
@@ -3217,7 +3219,7 @@ set_var_const(
32173219 goto failed ;
32183220 }
32193221
3220- if (is_script_local && vim9script )
3222+ if (var_in_vim9script )
32213223 {
32223224 where_T where ;
32233225
@@ -3244,7 +3246,7 @@ set_var_const(
32443246
32453247 // A Vim9 script-local variable is also present in sn_all_vars and
32463248 // sn_var_vals. It may set "type" from "tv".
3247- if (is_script_local && vim9script )
3249+ if (var_in_vim9script )
32483250 update_vim9_script_var (FALSE, di , flags , tv , & type );
32493251 }
32503252
@@ -3308,7 +3310,7 @@ set_var_const(
33083310 }
33093311
33103312 // add a new variable
3311- if (vim9script && is_script_local && (flags & ASSIGN_NO_DECL ))
3313+ if (var_in_vim9script && (flags & ASSIGN_NO_DECL ))
33123314 {
33133315 semsg (_ (e_unknown_variable_str ), name );
33143316 goto failed ;
@@ -3342,7 +3344,7 @@ set_var_const(
33423344
33433345 // A Vim9 script-local variable is also added to sn_all_vars and
33443346 // sn_var_vals. It may set "type" from "tv".
3345- if (is_script_local && vim9script )
3347+ if (var_in_vim9script )
33463348 update_vim9_script_var (TRUE, di , flags , tv , & type );
33473349 }
33483350
0 commit comments