Patch 8.2.4371
Problem:    Vim9: can create a script variable from a legacy function.
Solution:   Disallow creating a script variable from a function.
Files:      src/evalvars.c, src/errors.h, src/testdir/test_vim9_script.vim


*** ../vim-8.2.4370/src/evalvars.c      2022-02-07 13:56:40.592793019 +0000
--- src/evalvars.c      2022-02-13 13:48:50.495193261 +0000
***************
*** 3504,3509 ****
--- 3504,3515 ----
            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)
*** ../vim-8.2.4370/src/errors.h        2022-02-12 19:52:22.024702251 +0000
--- src/errors.h        2022-02-13 13:49:14.635161369 +0000
***************
*** 3234,3237 ****
--- 3234,3239 ----
        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
*** ../vim-8.2.4370/src/testdir/test_vim9_script.vim    2022-02-12 
19:52:22.028702244 +0000
--- src/testdir/test_vim9_script.vim    2022-02-13 13:54:21.586563480 +0000
***************
*** 3071,3083 ****
    delete('Xforward')
  enddef
  
! def Test_declare_script_in_func()
    var lines =<< trim END
        vim9script
        func Declare()
          let s:local = 123
        endfunc
        Declare()
        assert_equal(123, local)
  
        var error: string
--- 3071,3091 ----
    delete('Xforward')
  enddef
  
! 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
*** ../vim-8.2.4370/src/version.c       2022-02-13 13:11:27.382107371 +0000
--- src/version.c       2022-02-13 13:46:08.751406838 +0000
***************
*** 752,753 ****
--- 752,755 ----
  {   /* Add new patch number below this line */
+ /**/
+     4371,
  /**/

-- 
On the other hand, you have different fingers.
                                      -- Steven Wright

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220213135846.BBAC91C0DFF%40moolenaar.net.

Raspunde prin e-mail lui