patch 8.2.2225: Vim9: error when using :import in legacy script twice
Problem: Vim9: error when using :import in legacy script twice.
Solution: Make it possible to redefine an import when reloading.
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index b577d71..76899a5 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -899,6 +899,16 @@
writefile(import_star_as_lines_dot_space, 'Ximport.vim')
assert_fails('source Ximport.vim', 'E1074:', '', 1, 'Func')
+ var import_star_as_duplicated =<< trim END
+ vim9script
+ import * as Export from './Xexport.vim'
+ var some = 'other'
+ import * as Export from './Xexport.vim'
+ defcompile
+ END
+ writefile(import_star_as_duplicated, 'Ximport.vim')
+ assert_fails('source Ximport.vim', 'E1073:', '', 4, 'Ximport.vim')
+
var import_star_as_lines_missing_name =<< trim END
vim9script
import * as Export from './Xexport.vim'
@@ -1160,9 +1170,15 @@
def Test_vim9script_reload_noclear()
var lines =<< trim END
+ vim9script
+ export var exported = 'thexport'
+ END
+ writefile(lines, 'XExportReload')
+ lines =<< trim END
vim9script noclear
g:loadCount += 1
var s:reloaded = 'init'
+ import exported from './XExportReload'
def Again(): string
return 'again'
@@ -1174,7 +1190,7 @@
var s:notReloaded = 'yes'
s:reloaded = 'first'
def g:Values(): list<string>
- return [s:reloaded, s:notReloaded, Again(), Once()]
+ return [s:reloaded, s:notReloaded, Again(), Once(), exported]
enddef
def Once(): string
@@ -1185,15 +1201,16 @@
g:loadCount = 0
source XReloaded
assert_equal(1, g:loadCount)
- assert_equal(['first', 'yes', 'again', 'once'], g:Values())
+ assert_equal(['first', 'yes', 'again', 'once', 'thexport'], g:Values())
source XReloaded
assert_equal(2, g:loadCount)
- assert_equal(['init', 'yes', 'again', 'once'], g:Values())
+ assert_equal(['init', 'yes', 'again', 'once', 'thexport'], g:Values())
source XReloaded
assert_equal(3, g:loadCount)
- assert_equal(['init', 'yes', 'again', 'once'], g:Values())
+ assert_equal(['init', 'yes', 'again', 'once', 'thexport'], g:Values())
delete('Xreloaded')
+ delete('XExportReload')
delfunc g:Values
unlet g:loadCount
enddef
@@ -2762,6 +2779,17 @@
enddef
def Test_source_vim9_from_legacy()
+ var vim9_lines =<< trim END
+ vim9script
+ var local = 'local'
+ g:global = 'global'
+ export var exported = 'exported'
+ export def GetText(): string
+ return 'text'
+ enddef
+ END
+ writefile(vim9_lines, 'Xvim9_script.vim')
+
var legacy_lines =<< trim END
source Xvim9_script.vim
@@ -2783,19 +2811,7 @@
END
writefile(legacy_lines, 'Xlegacy_script.vim')
- var vim9_lines =<< trim END
- vim9script
- var local = 'local'
- g:global = 'global'
- export var exported = 'exported'
- export def GetText(): string
- return 'text'
- enddef
- END
- writefile(vim9_lines, 'Xvim9_script.vim')
-
source Xlegacy_script.vim
-
assert_equal('global', g:global)
unlet g:global