1
0
forked from aniani/vim

patch 8.2.0368: Vim9: import that redefines local variable does not fail

Problem:    Vim9: import that redefines local variable does not fail.
Solution:   Check for already defined symbols.
This commit is contained in:
Bram Moolenaar
2020-03-09 19:25:27 +01:00
parent 3a2505cc18
commit 5269bd2a72
6 changed files with 63 additions and 7 deletions

View File

@@ -362,7 +362,7 @@ let s:export_script_lines =<< trim END
enddef
END
def Test_vim9script()
def Test_vim9_import_export()
let import_script_lines =<< trim END
vim9script
import {exported, Exported} from './Xexport.vim'
@@ -449,6 +449,33 @@ def Test_vim9script()
writefile(import_not_exported_lines, 'Ximport.vim')
assert_fails('source Ximport.vim', 'E1049:')
" try to import something that is already defined
let import_already_defined =<< trim END
vim9script
let exported = 'something'
import exported from './Xexport.vim'
END
writefile(import_already_defined, 'Ximport.vim')
assert_fails('source Ximport.vim', 'E1073:')
" try to import something that is already defined
import_already_defined =<< trim END
vim9script
let exported = 'something'
import * as exported from './Xexport.vim'
END
writefile(import_already_defined, 'Ximport.vim')
assert_fails('source Ximport.vim', 'E1073:')
" try to import something that is already defined
import_already_defined =<< trim END
vim9script
let exported = 'something'
import {exported} from './Xexport.vim'
END
writefile(import_already_defined, 'Ximport.vim')
assert_fails('source Ximport.vim', 'E1073:')
" import a very long name, requires making a copy
let import_long_name_lines =<< trim END
vim9script
@@ -482,10 +509,11 @@ def Test_vim9script()
vim9script
import {exported name} from './Xexport.vim'
END
writefile(import_missing_comma_lines, 'Ximport.vim')
assert_fails('source Ximport.vim', 'E1046:')
writefile(import_missing_comma_lines, 'Ximport3.vim')
assert_fails('source Ximport3.vim', 'E1046:')
delete('Ximport.vim')
delete('Ximport3.vim')
delete('Xexport.vim')
" Check that in a Vim9 script 'cpo' is set to the Vim default.