diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-02-23 22:35:05 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-02-23 22:35:05 +0100 |
commit | fa29c8abd62c2733d5505563600ea35dddf73dca (patch) | |
tree | ffc9362186e93eecfd00e057704be6d6d616d0a5 /src | |
parent | f2d5c240a56853c0bbbc7979e9bff095de6c73ec (diff) | |
download | vim-git-fa29c8abd62c2733d5505563600ea35dddf73dca.tar.gz |
patch 8.2.0313: Vim9: insufficient script testsv8.2.0313
Problem: Vim9: insufficient script tests.
Solution: Add tests. Make import of alphanumeric name work.
Diffstat (limited to 'src')
-rw-r--r-- | src/testdir/test_vim9_script.vim | 44 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9script.c | 16 |
3 files changed, 55 insertions, 7 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index ef06ecbbe..c68d29f88 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -352,6 +352,50 @@ def Test_vim9script() writefile(import_star_lines, 'Ximport.vim') assert_fails('source Ximport.vim', 'E1045:') + " try to import something that exists but is not exported + let import_not_exported_lines =<< trim END + vim9script + import name from './Xexport.vim' + END + writefile(import_not_exported_lines, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1049:') + + " import a very long name, requires making a copy + let import_long_name_lines =<< trim END + vim9script + import name012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 from './Xexport.vim' + END + writefile(import_long_name_lines, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1048:') + + let 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:') + + let import_invalid_string_lines =<< trim END + vim9script + import name from Xexport.vim + END + writefile(import_invalid_string_lines, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1071:') + + let import_wrong_name_lines =<< trim END + vim9script + import name from './XnoExport.vim' + END + writefile(import_wrong_name_lines, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1053:') + + let import_missing_comma_lines =<< trim END + vim9script + import {exported name} from './Xexport.vim' + END + writefile(import_missing_comma_lines, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1046:') + delete('Ximport.vim') delete('Xexport.vim') diff --git a/src/version.c b/src/version.c index 05c0edca9..2f3e7683e 100644 --- a/src/version.c +++ b/src/version.c @@ -739,6 +739,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 313, +/**/ 312, /**/ 311, diff --git a/src/vim9script.c b/src/vim9script.c index 97b714985..6cea96bd0 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -172,7 +172,7 @@ find_exported( scriptitem_T *script = SCRIPT_ITEM(sid); // isolate one name - while (eval_isnamec1(*arg)) + while (eval_isnamec(*arg)) ++arg; *name_len = (int)(arg - name); @@ -262,9 +262,9 @@ handle_import(char_u *arg_start, garray_T *gap, int import_sid) { if (*arg == '*') arg = skipwhite(arg + 1); - else + else if (eval_isnamec1(*arg)) { - while (eval_isnamec1(*arg)) + while (eval_isnamec(*arg)) ++arg; arg = skipwhite(arg); } @@ -273,8 +273,9 @@ handle_import(char_u *arg_start, garray_T *gap, int import_sid) // skip over "as Name " arg = skipwhite(arg + 2); as_ptr = arg; - while (eval_isnamec1(*arg)) - ++arg; + if (eval_isnamec1(*arg)) + while (eval_isnamec(*arg)) + ++arg; as_len = (int)(arg - as_ptr); arg = skipwhite(arg); } @@ -286,7 +287,7 @@ handle_import(char_u *arg_start, garray_T *gap, int import_sid) } if (STRNCMP("from", arg, 4) != 0 || !VIM_ISWHITE(arg[4])) { - emsg(_("E1045: Missing \"from\"")); + emsg(_("E1070: Missing \"from\"")); return NULL; } from_ptr = arg; @@ -299,7 +300,7 @@ handle_import(char_u *arg_start, garray_T *gap, int import_sid) ret = get_string_tv(&arg, &tv, TRUE); if (ret == FAIL || tv.vval.v_string == NULL || *tv.vval.v_string == NUL) { - emsg(_("E1045: Invalid string after \"from\"")); + emsg(_("E1071: Invalid string after \"from\"")); return NULL; } cmd_end = arg; @@ -423,6 +424,7 @@ handle_import(char_u *arg_start, garray_T *gap, int import_sid) } if (arg != from_ptr) { + // cannot happen, just in case the above has a flaw emsg(_("E1047: syntax error in import")); return NULL; } |