diff src/testdir/test_vim9_import.vim @ 27457:4c16acb2525f v8.2.4257

patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent Commit: https://github.com/vim/vim/commit/62aec93bfdb9e1b40d03a6d2e8e9511f8b1bdb2d Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 29 21:45:34 2022 +0000 patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent Problem: Vim9: finding global function without g: prefix but not finding global variable is inconsistent. Solution: Require using g: for a global function. Change the vim9.vim script into a Vim9 script with exports. Fix that import in legacy script does not work.
author Bram Moolenaar <Bram@vim.org>
date Sat, 29 Jan 2022 23:00:05 +0100
parents 1a6421c5be20
children a14c4d3e3260
line wrap: on
line diff
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -3,7 +3,7 @@
 
 source check.vim
 source term_util.vim
-source vim9.vim
+import './vim9.vim' as v9
 
 let s:export_script_lines =<< trim END
   vim9script
@@ -33,7 +33,7 @@ let s:export_script_lines =<< trim END
   export var AddRef = AddSome
 END
 
-def Undo_export_script_lines()
+def s:Undo_export_script_lines()
   unlet g:result
   unlet g:localname
 enddef
@@ -411,7 +411,7 @@ def Test_import_funcref()
       enddef
       DoTest()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delete('Xlib.vim')
 enddef
@@ -422,42 +422,42 @@ def Test_import_fails()
       import './Xfoo.vim' as foo
       foo = 'bar'
   END
-  CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use foo itself'])
+  v9.CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use foo itself'])
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as foo
       var that = foo
   END
-  CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
+  v9.CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as foo
       var that: any
       that += foo
   END
-  CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
+  v9.CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as foo
       foo += 9
   END
-  CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
+  v9.CheckScriptFailure(lines, 'E1060: Expected dot after name: foo')
 
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as 9foo
   END
-  CheckScriptFailure(lines, 'E1047:')
+  v9.CheckScriptFailure(lines, 'E1047:')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as the#foo
   END
-  CheckScriptFailure(lines, 'E1047:')
+  v9.CheckScriptFailure(lines, 'E1047:')
   lines =<< trim END
       vim9script
       import './Xfoo.vim' as g:foo
   END
-  CheckScriptFailure(lines, 'E1047:')
+  v9.CheckScriptFailure(lines, 'E1047:')
 
   delete('Xfoo.vim')
 
@@ -474,7 +474,7 @@ def Test_import_fails()
       import './Xthat.vim' as That
       That()
   END
-  CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use That itself'])
+  v9.CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use That itself'])
 
   lines =<< trim END
       vim9script
@@ -484,13 +484,13 @@ def Test_import_fails()
       enddef
       Func()
   END
-  CheckScriptFailure(lines, 'E1236: Cannot use That itself')
+  v9.CheckScriptFailure(lines, 'E1236: Cannot use That itself')
 
   lines =<< trim END
       import './Xthat.vim' as one
       import './Xthat.vim' as two
   END
-  CheckScriptFailure(lines, 'E1262:')
+  v9.CheckScriptFailure(lines, 'E1262:')
 
   delete('Xthat.vim')
  
@@ -501,24 +501,24 @@ def Test_import_fails()
       vim9script
       import './Ximport/.vim'
   END
-  CheckScriptFailure(lines, 'E1261: Cannot import .vim without using "as"')
+  v9.CheckScriptFailure(lines, 'E1261: Cannot import .vim without using "as"')
   lines =<< trim END
       vim9script
       import './Ximport/.vim' as vim
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   writefile(['vim9script'], 'Ximport/.vimrc')
   lines =<< trim END
       vim9script
       import './Ximport/.vimrc'
   END
-  CheckScriptFailure(lines, 'E1257: Imported script must use "as" or end in .vim')
+  v9.CheckScriptFailure(lines, 'E1257: Imported script must use "as" or end in .vim')
   lines =<< trim END
       vim9script
       import './Ximport/.vimrc' as vimrc
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delete('Ximport', 'rf')
 enddef
@@ -626,7 +626,7 @@ def Test_use_import_in_command_completio
       feedkeys(":Cmd ab\<Tab>\<C-B>#\<CR>", 'xnt')
       assert_equal('#Cmd abcd', @:)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delcommand Cmd
   delete('Xscript.vim')
@@ -665,7 +665,7 @@ def Test_use_autoload_import_in_insert_c
       assert_equal('experiment', getline(1))
       assert_equal('yes', g:completion_loaded)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set thesaurusfunc=
   bwipe!
@@ -698,7 +698,7 @@ def Test_use_autoload_import_partial_in_
       feedkeys("\<F3>l", 'xt')
       assert_equal('yes', g:opfunc_called)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set opfunc=
   bwipe!
@@ -732,7 +732,7 @@ def Test_set_opfunc_to_autoload_func_dir
       feedkeys("\<F3>l", 'xt')
       assert_equal('yes', g:opfunc_called)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set opfunc=
   bwipe!
@@ -769,7 +769,7 @@ def Test_use_autoload_import_in_fold_exp
   new
   setline(1, ['# one', 'text', '# two', 'text'])
   g:fold_loaded = 'no'
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_equal('no', g:fold_loaded)
   redraw
   assert_equal('yes', g:fold_loaded)
@@ -810,7 +810,7 @@ def Run_Test_import_in_diffexpr()
       set diffexpr=diff.DiffExpr()
       set diffopt=foldcolumn:0
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   enew!
   call setline(1, ['one', 'two', 'three'])
@@ -842,7 +842,7 @@ def Test_import_in_patchexpr()
       import './Xpatchexpr' as patch
       set patchexpr=patch.TPatch()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   call writefile(['input file'], 'Xinput')
   call writefile(['diff file'], 'Xdiff')
@@ -873,7 +873,7 @@ def Test_import_in_formatexpr()
       import './Xformatter' as format
       set formatexpr=format.MyFormatExpr()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   new
   setline(1, ['a', 'b', 'c'])
@@ -903,7 +903,7 @@ def Test_import_in_includeexpr()
     import './Xinclude.vim'
     set includeexpr=Xinclude.DoSub()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   setline(1, ['Xthatfile'])
   exe "normal \<C-W>f"
@@ -931,7 +931,7 @@ def Test_import_in_indentexpr()
       set indentexpr=indent.GetIndent()
       set debug=throw
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   new
   setline(1, 'hello')
@@ -964,7 +964,7 @@ def Run_Test_import_in_printexpr()
       import './Xprint.vim'
       set printexpr=Xprint.PrintFile()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   help
   hardcopy dummy args
@@ -991,7 +991,7 @@ def Test_import_in_charconvert()
       import './Xconvert.vim' as conv
       set charconvert=conv.MakeUpper()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   writefile(['one', 'two'], 'Xfile')
   new Xfile
@@ -1024,7 +1024,7 @@ def Run_Test_import_in_spellsuggest_expr
       import './Xsuggest.vim' as sugg
       set spell spellsuggest=expr:sugg.MySuggest()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   set verbose=1  # report errors
   call assert_equal(['Fox', 'Fop'], spellsuggest('Fo', 2))
@@ -1056,7 +1056,7 @@ def Test_export_shadows_global_function(
       import autoload 'shadow.vim'
       assert_equal('Shadow()', shadow.Shadow())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delfunc g:Shadow
   bwipe!
@@ -1065,9 +1065,9 @@ def Test_export_shadows_global_function(
 enddef
 
 def Test_export_fails()
-  CheckScriptFailure(['export var some = 123'], 'E1042:')
-  CheckScriptFailure(['vim9script', 'export var g:some'], 'E1022:')
-  CheckScriptFailure(['vim9script', 'export echo 134'], 'E1043:')
+  v9.CheckScriptFailure(['export var some = 123'], 'E1042:')
+  v9.CheckScriptFailure(['vim9script', 'export var g:some'], 'E1022:')
+  v9.CheckScriptFailure(['vim9script', 'export echo 134'], 'E1043:')
 
   assert_fails('export something', 'E1043:')
 enddef
@@ -1088,12 +1088,12 @@ def Run_Test_import_fails_on_command_lin
   END
   writefile(export, 'XexportCmd.vim')
 
-  var buf = RunVimInTerminal('-c "import Foo from ''./XexportCmd.vim''"', {
+  var buf = g:RunVimInTerminal('-c "import Foo from ''./XexportCmd.vim''"', {
                 rows: 6, wait_for_ruler: 0})
-  WaitForAssert(() => assert_match('^E1094:', term_getline(buf, 5)))
+  g:WaitForAssert(() => assert_match('^E1094:', term_getline(buf, 5)))
 
   delete('XexportCmd.vim')
-  StopVimInTerminal(buf)
+  g:StopVimInTerminal(buf)
 enddef
 
 def Test_vim9_reload_noclear()
@@ -1348,7 +1348,7 @@ def Test_vim9_funcref_other_script()
     enddef
     TestDirect()
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   delete('Xfilter.vim')
 enddef
 
@@ -1461,7 +1461,7 @@ def Test_func_overrules_import_fails()
       echo 'local to function'
     enddef
   END
-  CheckScriptFailure(lines, 'E1213: Redefining imported item "Func"')
+  v9.CheckScriptFailure(lines, 'E1213: Redefining imported item "Func"')
 
   lines =<< trim END
     vim9script
@@ -1473,7 +1473,7 @@ def Test_func_overrules_import_fails()
     enddef
     defcompile
   END
-  CheckScriptFailure(lines, 'E1236:')
+  v9.CheckScriptFailure(lines, 'E1236:')
 
   delete('XexportedFunc.vim')
 enddef
@@ -1696,10 +1696,10 @@ def Test_vim9script_autoload()
       assert_equal('final', prefixed.fname)
       assert_equal('const', prefixed.cname)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   # can source it again, autoload script not loaded again
   g:expected_loaded = 1
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   # can also get the items by autoload name
   lines =<< trim END
@@ -1709,7 +1709,7 @@ def Test_vim9script_autoload()
       call assert_equal('final', prefixed#fname)
       call assert_equal('const', prefixed#cname)
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   unlet g:prefixed_loaded
   unlet g:expected_loaded
@@ -1737,42 +1737,42 @@ def Test_import_autoload_not_exported()
       import autoload 'notExport1.vim'
       echo notExport1.notFound
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: notFound')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notFound')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo notExport1.notExported
   END
-  CheckScriptFailure(lines, 'E1049: Item not exported in script: notExported')
+  v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: notExported')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo notExport1.NotFunc()
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo notExport1.NotExport()
   END
-  CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
+  v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo 'text'->notExport1.NotFunc()
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: NotFunc')
 
   lines =<< trim END
       vim9script
       import autoload 'notExport1.vim'
       echo 'text'->notExport1.NotExport()
   END
-  CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
+  v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport')
 
   # using a :def function we use a different autoload script every time so that
   # the function is compiled without the script loaded
@@ -1785,7 +1785,7 @@ def Test_import_autoload_not_exported()
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: notExport2#notFound')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport2#notFound')
 
   writefile(exportLines, 'Xdir/autoload/notExport3.vim')
   lines =<< trim END
@@ -1797,7 +1797,7 @@ def Test_import_autoload_not_exported()
       Testit()
   END
   # don't get E1049 because it is too complicated to figure out
-  CheckScriptFailure(lines, 'E1048: Item not found in script: notExport3#notExported')
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport3#notExported')
 
   writefile(exportLines, 'Xdir/autoload/notExport4.vim')
   lines =<< trim END
@@ -1808,7 +1808,7 @@ def Test_import_autoload_not_exported()
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport4#NotFunc')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport4#NotFunc')
 
   writefile(exportLines, 'Xdir/autoload/notExport5.vim')
   lines =<< trim END
@@ -1819,7 +1819,7 @@ def Test_import_autoload_not_exported()
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport5#NotExport')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport5#NotExport')
 
   writefile(exportLines, 'Xdir/autoload/notExport6.vim')
   lines =<< trim END
@@ -1830,7 +1830,7 @@ def Test_import_autoload_not_exported()
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport6#NotFunc')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport6#NotFunc')
 
   writefile(exportLines, 'Xdir/autoload/notExport7.vim')
   lines =<< trim END
@@ -1841,7 +1841,7 @@ def Test_import_autoload_not_exported()
       enddef
       Testit()
   END
-  CheckScriptFailure(lines, 'E117: Unknown function: notExport7#NotExport')
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport7#NotExport')
 
   delete('Xdir', 'rf')
   &rtp = save_rtp
@@ -1880,7 +1880,7 @@ def Test_vim9script_autoload_call()
 
       assert_equal('arg', call('another.RetArg', ['arg']))
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   unlet g:result
   delete('Xdir', 'rf')
@@ -2025,7 +2025,7 @@ def Test_autoload_name_wring()
      enddef
   END
   writefile(lines, 'Xscriptname.vim')
-  CheckScriptFailure(lines, 'E1263:')
+  v9.CheckScriptFailure(lines, 'E1263:')
 
   delete('Xscriptname.vim')
 enddef
@@ -2056,9 +2056,9 @@ def Test_import_autoload_postponed()
       enddef
       defcompile
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_false(exists('g:loaded_postponed'))
-  CheckScriptSuccess(lines + ['Tryit()'])
+  v9.CheckScriptSuccess(lines + ['Tryit()'])
   assert_equal('true', g:loaded_postponed)
 
   unlet g:loaded_postponed
@@ -2094,7 +2094,7 @@ def Test_import_autoload_override()
       enddef
       defcompile
   END
-  CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1)
+  v9.CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1)
 
   test_override('autoload', 0)
   unlet g:loaded_override
@@ -2130,7 +2130,7 @@ def Test_autoload_mapping()
       nnoremap <silent> xx <ScriptCmd>toggle.Doit()<CR>
       nnoremap <silent> yy <Cmd>toggle.Doit()<CR>
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
   assert_false(exists("g:toggle_loaded"))
   assert_false(exists("g:toggle_called"))
   assert_match('\d A: \f*[/\\]toggle.vim', execute('scriptnames'))
@@ -2159,13 +2159,13 @@ def Test_vim9script_autoload_fails()
       vim9script autoload
       var n = 0
   END
-  CheckScriptFailure(lines, 'E475: Invalid argument: autoload')
+  v9.CheckScriptFailure(lines, 'E475: Invalid argument: autoload')
 
   lines =<< trim END
       vim9script noclear noclear
       var n = 0
   END
-  CheckScriptFailure(lines, 'E983: Duplicate argument: noclear')
+  v9.CheckScriptFailure(lines, 'E983: Duplicate argument: noclear')
 enddef
 
 def Test_import_autoload_fails()
@@ -2173,25 +2173,25 @@ def Test_import_autoload_fails()
       vim9script
       import autoload autoload 'prefixed.vim'
   END
-  CheckScriptFailure(lines, 'E121: Undefined variable: autoload')
+  v9.CheckScriptFailure(lines, 'E121: Undefined variable: autoload')
 
   lines =<< trim END
       vim9script
       import autoload './doesNotExist.vim'
   END
-  CheckScriptFailure(lines, 'E1264:')
+  v9.CheckScriptFailure(lines, 'E1264:')
 
   lines =<< trim END
       vim9script
       import autoload '/dir/doesNotExist.vim'
   END
-  CheckScriptFailure(lines, 'E1264:')
+  v9.CheckScriptFailure(lines, 'E1264:')
 
   lines =<< trim END
       vim9script
       import autoload 'doesNotExist.vim'
   END
-  CheckScriptFailure(lines, 'E1053: Could not import "doesNotExist.vim"')
+  v9.CheckScriptFailure(lines, 'E1053: Could not import "doesNotExist.vim"')
 enddef
 
 " test disassembling an auto-loaded function starting with "debug"
@@ -2223,7 +2223,7 @@ def Test_vim9_autoload_disass()
     assert_equal('profile', profileit#test())
     disass profileit#test
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   delete('Xdir', 'rf')
   &rtp = save_rtp
@@ -2274,7 +2274,7 @@ def Test_vim9_autoload_case_sensitive()
       import autoload 'CaseSensitive.vim'
       assert_equal('done', CaseSensitive.CaseSensitive())
   END
-  CheckScriptSuccess(lines)
+  v9.CheckScriptSuccess(lines)
 
   if !has('fname_case')
     lines =<< trim END
@@ -2282,7 +2282,7 @@ def Test_vim9_autoload_case_sensitive()
         import autoload 'CaseSensitive.vim'
         import autoload 'casesensitive.vim'
     END
-    CheckScriptFailure(lines, 'E1262:')
+    v9.CheckScriptFailure(lines, 'E1262:')
   endif
 
   delete('Xdir', 'rf')
@@ -2320,7 +2320,7 @@ def Test_vim9_autoload_error()
     qall!
   END
   writefile(lines, 'Xscript')
-  RunVim([], [], '-S Xscript')
+  g:RunVim([], [], '-S Xscript')
   assert_equal(['ok'], readfile('Xdidit'))
 
   delete('Xdidit')
@@ -2331,7 +2331,7 @@ def Test_vim9_autoload_error()
     vim9script
     var foo#bar = 'asdf'
   END
-  CheckScriptFailure(lines, 'E461: Illegal variable name: foo#bar', 2)
+  v9.CheckScriptFailure(lines, 'E461: Illegal variable name: foo#bar', 2)
 enddef