mirror of
https://github.com/vim/vim.git
synced 2025-10-03 05:14:07 -04:00
patch 8.2.4019: Vim9: import mechanism is too complicated
Problem: Vim9: import mechanism is too complicated. Solution: Do not use the Javascript mechanism but a much simpler one.
This commit is contained in:
@@ -1172,47 +1172,43 @@ def Undo_export_script_lines()
|
||||
enddef
|
||||
|
||||
def Test_vim9_import_export()
|
||||
writefile(s:export_script_lines, 'Xexport.vim')
|
||||
var import_script_lines =<< trim END
|
||||
vim9script
|
||||
import {exported, Exported, ExportedValue} from './Xexport.vim'
|
||||
g:exported1 = exported
|
||||
exported += 3
|
||||
g:exported2 = exported
|
||||
g:exported3 = ExportedValue()
|
||||
var dir = './'
|
||||
var ext = ".vim"
|
||||
import dir .. 'Xexport' .. ext as expo
|
||||
|
||||
import ExportedInc from './Xexport.vim'
|
||||
ExportedInc()
|
||||
g:exported_i1 = exported
|
||||
g:exported_i2 = ExportedValue()
|
||||
g:exported1 = expo.exported
|
||||
expo.exported += 3
|
||||
g:exported2 = expo.exported
|
||||
g:exported3 = expo.ExportedValue()
|
||||
|
||||
exported = 11
|
||||
g:exported_s1 = exported
|
||||
g:exported_s2 = ExportedValue()
|
||||
expo.ExportedInc()
|
||||
g:exported_i1 = expo.exported
|
||||
g:exported_i2 = expo.ExportedValue()
|
||||
|
||||
g:imported_func = Exported()
|
||||
expo.exported = 11
|
||||
g:exported_s1 = expo.exported
|
||||
g:exported_s2 = expo.ExportedValue()
|
||||
|
||||
g:imported_func = expo.Exported()
|
||||
|
||||
def GetExported(): string
|
||||
var local_dict = {ref: Exported}
|
||||
var local_dict = {ref: expo.Exported}
|
||||
return local_dict.ref()
|
||||
enddef
|
||||
g:funcref_result = GetExported()
|
||||
|
||||
var dir = './'
|
||||
var ext = ".vim"
|
||||
import {exp_name} from dir .. 'Xexport' .. ext
|
||||
g:imported_name = exp_name
|
||||
exp_name ..= ' Doe'
|
||||
g:imported_name_appended = exp_name
|
||||
g:exported_later = exported
|
||||
g:imported_name = expo.exp_name
|
||||
expo.exp_name ..= ' Doe'
|
||||
g:imported_name_appended = expo.exp_name
|
||||
g:exported_later = expo.exported
|
||||
|
||||
import theList from './Xexport.vim'
|
||||
theList->add(2)
|
||||
assert_equal([1, 2], theList)
|
||||
expo.theList->add(2)
|
||||
assert_equal([1, 2], expo.theList)
|
||||
END
|
||||
|
||||
writefile(import_script_lines, 'Ximport.vim')
|
||||
writefile(s:export_script_lines, 'Xexport.vim')
|
||||
|
||||
source Ximport.vim
|
||||
|
||||
assert_equal('bobbie', g:result)
|
||||
@@ -1248,16 +1244,12 @@ def Test_vim9_import_export()
|
||||
# similar, with line breaks
|
||||
var import_line_break_script_lines =<< trim END
|
||||
vim9script
|
||||
import {
|
||||
exported,
|
||||
Exported,
|
||||
}
|
||||
from
|
||||
'./Xexport.vim'
|
||||
g:exported = exported
|
||||
exported += 7
|
||||
g:exported_added = exported
|
||||
g:imported_func = Exported()
|
||||
import './Xexport.vim'
|
||||
as expo
|
||||
g:exported = expo.exported
|
||||
expo.exported += 7
|
||||
g:exported_added = expo.exported
|
||||
g:imported_func = expo.Exported()
|
||||
END
|
||||
writefile(import_line_break_script_lines, 'Ximport_lbr.vim')
|
||||
source Ximport_lbr.vim
|
||||
@@ -1275,7 +1267,7 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_lines =<< trim END
|
||||
vim9script
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
def UseExport()
|
||||
g:exported_def = Export.exported
|
||||
enddef
|
||||
@@ -1294,7 +1286,7 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_lines_no_dot =<< trim END
|
||||
vim9script
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
def Func()
|
||||
var dummy = 1
|
||||
var imported = Export + dummy
|
||||
@@ -1306,7 +1298,7 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_lines_dot_space =<< trim END
|
||||
vim9script
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
def Func()
|
||||
var imported = Export . exported
|
||||
enddef
|
||||
@@ -1317,8 +1309,8 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_func_duplicated =<< trim END
|
||||
vim9script
|
||||
import ExportedInc from './Xexport.vim'
|
||||
import ExportedInc from './Xexport.vim'
|
||||
import './Xexport.vim' as expo
|
||||
import './Xexport.vim' as expo
|
||||
|
||||
ExportedInc()
|
||||
END
|
||||
@@ -1327,9 +1319,9 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_duplicated =<< trim END
|
||||
vim9script
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
var some = 'other'
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
defcompile
|
||||
END
|
||||
writefile(import_star_as_duplicated, 'Ximport.vim')
|
||||
@@ -1337,7 +1329,7 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_lines_script_no_dot =<< trim END
|
||||
vim9script
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
g:imported_script = Export exported
|
||||
END
|
||||
writefile(import_star_as_lines_script_no_dot, 'Ximport.vim')
|
||||
@@ -1345,7 +1337,7 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_lines_script_space_after_dot =<< trim END
|
||||
vim9script
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
g:imported_script = Export. exported
|
||||
END
|
||||
writefile(import_star_as_lines_script_space_after_dot, 'Ximport.vim')
|
||||
@@ -1353,7 +1345,7 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_lines_missing_name =<< trim END
|
||||
vim9script
|
||||
import * as Export from './Xexport.vim'
|
||||
import './Xexport.vim' as Export
|
||||
def Func()
|
||||
var imported = Export.
|
||||
enddef
|
||||
@@ -1364,10 +1356,8 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_star_as_lbr_lines =<< trim END
|
||||
vim9script
|
||||
import *
|
||||
import './Xexport.vim'
|
||||
as Export
|
||||
from
|
||||
'./Xexport.vim'
|
||||
def UseExport()
|
||||
g:exported = Export.exported
|
||||
enddef
|
||||
@@ -1378,44 +1368,20 @@ def Test_vim9_import_export()
|
||||
assert_equal(18, g:exported)
|
||||
unlet g:exported
|
||||
|
||||
var import_star_lines =<< trim END
|
||||
vim9script
|
||||
import * from './Xexport.vim'
|
||||
END
|
||||
writefile(import_star_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1045:', '', 2, 'Ximport.vim')
|
||||
|
||||
# try to import something that exists but is not exported
|
||||
# try to use something that exists but is not exported
|
||||
var import_not_exported_lines =<< trim END
|
||||
vim9script
|
||||
import name from './Xexport.vim'
|
||||
import './Xexport.vim' as expo
|
||||
echo expo.name
|
||||
END
|
||||
writefile(import_not_exported_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1049:', '', 2, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1049:', '', 3, 'Ximport.vim')
|
||||
|
||||
# try to import something that is already defined
|
||||
var import_already_defined =<< trim END
|
||||
vim9script
|
||||
var exported = 'something'
|
||||
import exported from './Xexport.vim'
|
||||
END
|
||||
writefile(import_already_defined, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1054:', '', 3, 'Ximport.vim')
|
||||
|
||||
# try to import something that is already defined
|
||||
import_already_defined =<< trim END
|
||||
vim9script
|
||||
var exported = 'something'
|
||||
import * as exported from './Xexport.vim'
|
||||
END
|
||||
writefile(import_already_defined, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1054:', '', 3, 'Ximport.vim')
|
||||
|
||||
# try to import something that is already defined
|
||||
import_already_defined =<< trim END
|
||||
vim9script
|
||||
var exported = 'something'
|
||||
import {exported} from './Xexport.vim'
|
||||
import './Xexport.vim' as exported
|
||||
END
|
||||
writefile(import_already_defined, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1054:', '', 3, 'Ximport.vim')
|
||||
@@ -1423,9 +1389,9 @@ def Test_vim9_import_export()
|
||||
# try changing an imported const
|
||||
var import_assign_to_const =<< trim END
|
||||
vim9script
|
||||
import CONST from './Xexport.vim'
|
||||
import './Xexport.vim' as expo
|
||||
def Assign()
|
||||
CONST = 987
|
||||
expo.CONST = 987
|
||||
enddef
|
||||
defcompile
|
||||
END
|
||||
@@ -1435,54 +1401,39 @@ def Test_vim9_import_export()
|
||||
# try changing an imported final
|
||||
var import_assign_to_final =<< trim END
|
||||
vim9script
|
||||
import theList from './Xexport.vim'
|
||||
import './Xexport.vim' as expo
|
||||
def Assign()
|
||||
theList = [2]
|
||||
expo.theList = [2]
|
||||
enddef
|
||||
defcompile
|
||||
END
|
||||
writefile(import_assign_to_final, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E46:', '', 1, '_Assign')
|
||||
|
||||
# import a very long name, requires making a copy
|
||||
var import_long_name_lines =<< trim END
|
||||
var import_no_as_lines =<< trim END
|
||||
vim9script
|
||||
import name012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 from './Xexport.vim'
|
||||
import './Xexport.vim' name
|
||||
END
|
||||
writefile(import_long_name_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1048:', '', 2, 'Ximport.vim')
|
||||
|
||||
var import_no_from_lines =<< trim END
|
||||
vim9script
|
||||
import name './Xexport.vim'
|
||||
END
|
||||
writefile(import_no_from_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1070:', '', 2, 'Ximport.vim')
|
||||
writefile(import_no_as_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E488:', '', 2, 'Ximport.vim')
|
||||
|
||||
var import_invalid_string_lines =<< trim END
|
||||
vim9script
|
||||
import name from Xexport.vim
|
||||
import Xexport.vim
|
||||
END
|
||||
writefile(import_invalid_string_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E121:', '', 2, 'Ximport.vim')
|
||||
|
||||
var import_wrong_name_lines =<< trim END
|
||||
vim9script
|
||||
import name from './XnoExport.vim'
|
||||
import './XnoExport.vim'
|
||||
END
|
||||
writefile(import_wrong_name_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1053:', '', 2, 'Ximport.vim')
|
||||
|
||||
var import_missing_comma_lines =<< trim END
|
||||
vim9script
|
||||
import {exported name} from './Xexport.vim'
|
||||
END
|
||||
writefile(import_missing_comma_lines, 'Ximport3.vim')
|
||||
assert_fails('source Ximport3.vim', 'E1046:', '', 2, 'Ximport3.vim')
|
||||
|
||||
var import_redefining_lines =<< trim END
|
||||
vim9script
|
||||
import exported from './Xexport.vim'
|
||||
import './Xexport.vim' as exported
|
||||
var exported = 5
|
||||
END
|
||||
writefile(import_redefining_lines, 'Ximport.vim')
|
||||
@@ -1490,19 +1441,19 @@ def Test_vim9_import_export()
|
||||
|
||||
var import_assign_wrong_type_lines =<< trim END
|
||||
vim9script
|
||||
import exported from './Xexport.vim'
|
||||
exported = 'xxx'
|
||||
import './Xexport.vim' as expo
|
||||
expo.exported = 'xxx'
|
||||
END
|
||||
writefile(import_assign_wrong_type_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E1012: Type mismatch; expected number but got string', '', 3)
|
||||
|
||||
var import_assign_const_lines =<< trim END
|
||||
vim9script
|
||||
import CONST from './Xexport.vim'
|
||||
CONST = 4321
|
||||
import './Xexport.vim' as expo
|
||||
expo.CONST = 4321
|
||||
END
|
||||
writefile(import_assign_const_lines, 'Ximport.vim')
|
||||
assert_fails('source Ximport.vim', 'E741: Value is locked: CONST', '', 3)
|
||||
assert_fails('source Ximport.vim', 'E46: Cannot change read-only variable "CONST"', '', 3)
|
||||
|
||||
delete('Ximport.vim')
|
||||
delete('Ximport3.vim')
|
||||
@@ -1541,12 +1492,12 @@ def Test_import_funcref()
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
import {G} from './Xlib.vim'
|
||||
const Foo = G()
|
||||
import './Xlib.vim' as lib
|
||||
const Foo = lib.G()
|
||||
assert_equal(42, Foo)
|
||||
|
||||
def DoTest()
|
||||
const Goo = G()
|
||||
const Goo = lib.G()
|
||||
assert_equal(42, Goo)
|
||||
enddef
|
||||
DoTest()
|
||||
@@ -1559,30 +1510,30 @@ enddef
|
||||
def Test_import_star_fails()
|
||||
writefile([], 'Xfoo.vim')
|
||||
var lines =<< trim END
|
||||
import * as foo from './Xfoo.vim'
|
||||
import './Xfoo.vim' as foo
|
||||
foo = 'bar'
|
||||
END
|
||||
CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use foo itself'])
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
import * as foo from './Xfoo.vim'
|
||||
import './Xfoo.vim' as foo
|
||||
var that = foo
|
||||
END
|
||||
CheckScriptFailure(lines, 'E1029: Expected ''.''')
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
import * as 9foo from './Xfoo.vim'
|
||||
import './Xfoo.vim' as 9foo
|
||||
END
|
||||
CheckScriptFailure(lines, 'E1047:')
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
import * as the#foo from './Xfoo.vim'
|
||||
import './Xfoo.vim' as the#foo
|
||||
END
|
||||
CheckScriptFailure(lines, 'E1047:')
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
import * as g:foo from './Xfoo.vim'
|
||||
import './Xfoo.vim' as g:foo
|
||||
END
|
||||
CheckScriptFailure(lines, 'E1047:')
|
||||
|
||||
@@ -1597,53 +1548,13 @@ def Test_import_star_fails()
|
||||
END
|
||||
writefile([], 'Xthat.vim')
|
||||
lines =<< trim END
|
||||
import * as That from './Xthat.vim'
|
||||
import './Xthat.vim' as That
|
||||
That()
|
||||
END
|
||||
CheckDefAndScriptFailure(lines, ['E1094:', 'E1236: Cannot use That itself'])
|
||||
delete('Xthat.vim')
|
||||
enddef
|
||||
|
||||
def Test_import_as()
|
||||
var export_lines =<< trim END
|
||||
vim9script
|
||||
export var one = 1
|
||||
export var yes = 'yes'
|
||||
export var slist: list<string>
|
||||
END
|
||||
writefile(export_lines, 'XexportAs')
|
||||
|
||||
var import_lines =<< trim END
|
||||
vim9script
|
||||
var one = 'notused'
|
||||
var yes = 777
|
||||
import one as thatOne from './XexportAs'
|
||||
assert_equal(1, thatOne)
|
||||
import yes as yesYes from './XexportAs'
|
||||
assert_equal('yes', yesYes)
|
||||
END
|
||||
CheckScriptSuccess(import_lines)
|
||||
|
||||
import_lines =<< trim END
|
||||
vim9script
|
||||
import {one as thatOne, yes as yesYes} from './XexportAs'
|
||||
assert_equal(1, thatOne)
|
||||
assert_equal('yes', yesYes)
|
||||
assert_fails('echo one', 'E121:')
|
||||
assert_fails('echo yes', 'E121:')
|
||||
END
|
||||
CheckScriptSuccess(import_lines)
|
||||
|
||||
import_lines =<< trim END
|
||||
vim9script
|
||||
import {slist as impSlist} from './XexportAs'
|
||||
impSlist->add(123)
|
||||
END
|
||||
CheckScriptFailure(import_lines, 'E1012: Type mismatch; expected string but got number')
|
||||
|
||||
delete('XexportAs')
|
||||
enddef
|
||||
|
||||
func g:Trigger()
|
||||
source Ximport.vim
|
||||
return "echo 'yes'\<CR>"
|
||||
@@ -1661,8 +1572,8 @@ def Test_import_export_expr_map()
|
||||
|
||||
var import_lines =<< trim END
|
||||
vim9script
|
||||
import That from './Xexport_that.vim'
|
||||
assert_equal('yes', That())
|
||||
import './Xexport_that.vim' as that
|
||||
assert_equal('yes', that.That())
|
||||
END
|
||||
writefile(import_lines, 'Ximport.vim')
|
||||
|
||||
@@ -1685,8 +1596,8 @@ def Test_import_in_filetype()
|
||||
|
||||
var import_lines =<< trim END
|
||||
vim9script
|
||||
import That from './Xexport_ft.vim'
|
||||
assert_equal('yes', That)
|
||||
import './Xexport_ft.vim' as ft
|
||||
assert_equal('yes', ft.That)
|
||||
g:did_load_mytpe = 1
|
||||
END
|
||||
writefile(import_lines, 'ftplugin/qf.vim')
|
||||
@@ -1704,30 +1615,32 @@ def Test_import_in_filetype()
|
||||
&rtp = save_rtp
|
||||
enddef
|
||||
|
||||
def Test_use_import_in_mapping()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
export def Funcx()
|
||||
g:result = 42
|
||||
enddef
|
||||
END
|
||||
writefile(lines, 'XsomeExport.vim')
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
import Funcx from './XsomeExport.vim'
|
||||
nnoremap <F3> :call <sid>Funcx()<cr>
|
||||
END
|
||||
writefile(lines, 'Xmapscript.vim')
|
||||
|
||||
source Xmapscript.vim
|
||||
feedkeys("\<F3>", "xt")
|
||||
assert_equal(42, g:result)
|
||||
|
||||
unlet g:result
|
||||
delete('XsomeExport.vim')
|
||||
delete('Xmapscript.vim')
|
||||
nunmap <F3>
|
||||
enddef
|
||||
" FIXME
|
||||
"def Test_use_import_in_mapping()
|
||||
" var lines =<< trim END
|
||||
" vim9script
|
||||
" export def Funcx()
|
||||
" g:result = 42
|
||||
" enddef
|
||||
" END
|
||||
" writefile(lines, 'XsomeExport.vim')
|
||||
" lines =<< trim END
|
||||
" vim9script
|
||||
" import './XsomeExport.vim' as some
|
||||
" var Funcy = some.Funcx
|
||||
" nnoremap <F3> :call <sid>Funcy()<cr>
|
||||
" END
|
||||
" writefile(lines, 'Xmapscript.vim')
|
||||
"
|
||||
" source Xmapscript.vim
|
||||
" feedkeys("\<F3>", "xt")
|
||||
" assert_equal(42, g:result)
|
||||
"
|
||||
" unlet g:result
|
||||
" delete('XsomeExport.vim')
|
||||
" delete('Xmapscript.vim')
|
||||
" nunmap <F3>
|
||||
"enddef
|
||||
|
||||
def Test_vim9script_mix()
|
||||
var lines =<< trim END
|
||||
@@ -1754,7 +1667,6 @@ def Test_vim9script_fails()
|
||||
CheckScriptFailure(['scriptversion 2', 'vim9script'], 'E1039:')
|
||||
CheckScriptFailure(['vim9script', 'scriptversion 2'], 'E1040:')
|
||||
CheckScriptFailure(['export var some = 123'], 'E1042:')
|
||||
CheckScriptFailure(['import some from "./Xexport.vim"'], 'E1048:')
|
||||
CheckScriptFailure(['vim9script', 'export var g:some'], 'E1022:')
|
||||
CheckScriptFailure(['vim9script', 'export echo 134'], 'E1043:')
|
||||
|
||||
@@ -1802,14 +1714,13 @@ def Test_vim9script_reload_noclear()
|
||||
vim9script noclear
|
||||
g:loadCount += 1
|
||||
var s:reloaded = 'init'
|
||||
import exported from './XExportReload'
|
||||
import './XExportReload' as exp
|
||||
|
||||
def Again(): string
|
||||
return 'again'
|
||||
enddef
|
||||
|
||||
import TheFunc from './XExportReload'
|
||||
TheFunc()
|
||||
exp.TheFunc()
|
||||
|
||||
if exists('s:loaded') | finish | endif
|
||||
var s:loaded = true
|
||||
@@ -1817,7 +1728,7 @@ def Test_vim9script_reload_noclear()
|
||||
var s:notReloaded = 'yes'
|
||||
s:reloaded = 'first'
|
||||
def g:Values(): list<string>
|
||||
return [s:reloaded, s:notReloaded, Again(), Once(), exported]
|
||||
return [s:reloaded, s:notReloaded, Again(), Once(), exp.exported]
|
||||
enddef
|
||||
|
||||
def Once(): string
|
||||
@@ -2022,14 +1933,14 @@ def Test_vim9script_funcref()
|
||||
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
import FastSort from './Xsort.vim'
|
||||
import './Xsort.vim'
|
||||
def Test()
|
||||
g:result = FastSort()
|
||||
g:result = Xsort.FastSort()
|
||||
enddef
|
||||
Test()
|
||||
|
||||
# using a function imported with "as"
|
||||
import * as anAlias from './Xsort.vim'
|
||||
import './Xsort.vim' as anAlias
|
||||
assert_equal('yes', anAlias.GetString('yes'))
|
||||
|
||||
# using the function from a compiled function
|
||||
@@ -2075,13 +1986,13 @@ def Test_vim9script_funcref_other_script()
|
||||
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
import {FilterFunc, FastFilter, FastFilterDirect} from './Xfilter.vim'
|
||||
import './Xfilter.vim' as filter
|
||||
def Test()
|
||||
var x: list<number> = FastFilter()
|
||||
var x: list<number> = filter.FastFilter()
|
||||
enddef
|
||||
Test()
|
||||
def TestDirect()
|
||||
var x: list<number> = FastFilterDirect()
|
||||
var x: list<number> = filter.FastFilterDirect()
|
||||
enddef
|
||||
TestDirect()
|
||||
END
|
||||
@@ -2155,11 +2066,11 @@ enddef
|
||||
def Test_import_absolute()
|
||||
var import_lines = [
|
||||
'vim9script',
|
||||
'import exported from "' .. escape(getcwd(), '\') .. '/Xexport_abs.vim"',
|
||||
'import "' .. escape(getcwd(), '\') .. '/Xexport_abs.vim" as abs',
|
||||
'def UseExported()',
|
||||
' g:imported_abs = exported',
|
||||
' exported = 8888',
|
||||
' g:imported_after = exported',
|
||||
' g:imported_abs = abs.exported',
|
||||
' abs.exported = 8888',
|
||||
' g:imported_after = abs.exported',
|
||||
'enddef',
|
||||
'UseExported()',
|
||||
'g:import_disassembled = execute("disass UseExported")',
|
||||
@@ -2172,13 +2083,13 @@ def Test_import_absolute()
|
||||
assert_equal(9876, g:imported_abs)
|
||||
assert_equal(8888, g:imported_after)
|
||||
assert_match('<SNR>\d\+_UseExported\_s*' ..
|
||||
'g:imported_abs = exported\_s*' ..
|
||||
'g:imported_abs = abs.exported\_s*' ..
|
||||
'0 LOADSCRIPT exported-2 from .*Xexport_abs.vim\_s*' ..
|
||||
'1 STOREG g:imported_abs\_s*' ..
|
||||
'exported = 8888\_s*' ..
|
||||
'abs.exported = 8888\_s*' ..
|
||||
'2 PUSHNR 8888\_s*' ..
|
||||
'3 STORESCRIPT exported-2 in .*Xexport_abs.vim\_s*' ..
|
||||
'g:imported_after = exported\_s*' ..
|
||||
'g:imported_after = abs.exported\_s*' ..
|
||||
'4 LOADSCRIPT exported-2 from .*Xexport_abs.vim\_s*' ..
|
||||
'5 STOREG g:imported_after',
|
||||
g:import_disassembled)
|
||||
@@ -2194,8 +2105,8 @@ enddef
|
||||
def Test_import_rtp()
|
||||
var import_lines = [
|
||||
'vim9script',
|
||||
'import exported from "Xexport_rtp.vim"',
|
||||
'g:imported_rtp = exported',
|
||||
'import "Xexport_rtp.vim" as rtp',
|
||||
'g:imported_rtp = rtp.exported',
|
||||
]
|
||||
writefile(import_lines, 'Ximport_rtp.vim')
|
||||
mkdir('import', 'p')
|
||||
@@ -2225,9 +2136,9 @@ def Test_import_compile_error()
|
||||
|
||||
var import_lines = [
|
||||
'vim9script',
|
||||
'import ExpFunc from "./Xexported.vim"',
|
||||
'import "./Xexported.vim" as expo',
|
||||
'def ImpFunc()',
|
||||
' echo ExpFunc()',
|
||||
' echo expo.ExpFunc()',
|
||||
'enddef',
|
||||
'defcompile',
|
||||
]
|
||||
@@ -2279,16 +2190,16 @@ def Test_func_overrules_import_fails()
|
||||
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
import Func from './XexportedFunc.vim'
|
||||
import './XexportedFunc.vim' as Func
|
||||
def Func()
|
||||
echo 'local to function'
|
||||
enddef
|
||||
END
|
||||
CheckScriptFailure(lines, 'E1041:')
|
||||
CheckScriptFailure(lines, 'E1236:')
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
import Func from './XexportedFunc.vim'
|
||||
import './XexportedFunc.vim' as Func
|
||||
def Outer()
|
||||
def Func()
|
||||
echo 'local to function'
|
||||
@@ -2296,7 +2207,7 @@ def Test_func_overrules_import_fails()
|
||||
enddef
|
||||
defcompile
|
||||
END
|
||||
CheckScriptFailure(lines, 'E1073:')
|
||||
CheckScriptFailure(lines, 'E1236:')
|
||||
|
||||
delete('XexportedFunc.vim')
|
||||
enddef
|
||||
@@ -3941,15 +3852,15 @@ def Test_source_vim9_from_legacy()
|
||||
call assert_equal('global', global)
|
||||
call assert_equal('global', g:global)
|
||||
|
||||
" imported variable becomes script-local
|
||||
import exported from './Xvim9_script.vim'
|
||||
call assert_equal('exported', s:exported)
|
||||
call assert_false(exists('exported'))
|
||||
"" imported variable becomes script-local
|
||||
"import exported from './Xvim9_script.vim'
|
||||
"call assert_equal('exported', s:exported)
|
||||
"call assert_false(exists('exported'))
|
||||
|
||||
" imported function becomes script-local
|
||||
import GetText from './Xvim9_script.vim'
|
||||
call assert_equal('text', s:GetText())
|
||||
call assert_false(exists('*GetText'))
|
||||
"" imported function becomes script-local
|
||||
"import GetText from './Xvim9_script.vim'
|
||||
"call assert_equal('text', s:GetText())
|
||||
"call assert_false(exists('*GetText'))
|
||||
END
|
||||
writefile(legacy_lines, 'Xlegacy_script.vim')
|
||||
|
||||
@@ -4248,7 +4159,8 @@ def Test_cmdline_win()
|
||||
writefile(export_lines, 'rtp/syntax/Xexport.vim')
|
||||
var import_lines =<< trim END
|
||||
vim9script
|
||||
import That from './Xexport.vim'
|
||||
import './Xexport.vim' as exp
|
||||
echo exp.That
|
||||
END
|
||||
writefile(import_lines, 'rtp/syntax/vim.vim')
|
||||
var save_rtp = &rtp
|
||||
@@ -4594,36 +4506,36 @@ def Test_script_var_gone_when_sourced_twice()
|
||||
unlet g:guard
|
||||
enddef
|
||||
|
||||
def Test_import_gone_when_sourced_twice()
|
||||
var exportlines =<< trim END
|
||||
vim9script
|
||||
if exists('g:guard')
|
||||
finish
|
||||
endif
|
||||
g:guard = 1
|
||||
export var name = 'someName'
|
||||
END
|
||||
writefile(exportlines, 'XexportScript.vim')
|
||||
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
import name from './XexportScript.vim'
|
||||
def g:GetName(): string
|
||||
return name
|
||||
enddef
|
||||
END
|
||||
writefile(lines, 'XscriptImport.vim')
|
||||
so XscriptImport.vim
|
||||
assert_equal('someName', g:GetName())
|
||||
|
||||
so XexportScript.vim
|
||||
assert_fails('call g:GetName()', 'E1149:')
|
||||
|
||||
delfunc g:GetName
|
||||
delete('XexportScript.vim')
|
||||
delete('XscriptImport.vim')
|
||||
unlet g:guard
|
||||
enddef
|
||||
"def Test_import_gone_when_sourced_twice()
|
||||
" var exportlines =<< trim END
|
||||
" vim9script
|
||||
" if exists('g:guard')
|
||||
" finish
|
||||
" endif
|
||||
" g:guard = 1
|
||||
" export var name = 'someName'
|
||||
" END
|
||||
" writefile(exportlines, 'XexportScript.vim')
|
||||
"
|
||||
" var lines =<< trim END
|
||||
" vim9script
|
||||
" import name from './XexportScript.vim'
|
||||
" def g:GetName(): string
|
||||
" return name
|
||||
" enddef
|
||||
" END
|
||||
" writefile(lines, 'XscriptImport.vim')
|
||||
" so XscriptImport.vim
|
||||
" assert_equal('someName', g:GetName())
|
||||
"
|
||||
" so XexportScript.vim
|
||||
" assert_fails('call g:GetName()', 'E1149:')
|
||||
"
|
||||
" delfunc g:GetName
|
||||
" delete('XexportScript.vim')
|
||||
" delete('XscriptImport.vim')
|
||||
" unlet g:guard
|
||||
"enddef
|
||||
|
||||
def Test_unsupported_commands()
|
||||
var lines =<< trim END
|
||||
|
Reference in New Issue
Block a user