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')
scriptitem_T *script = SCRIPT_ITEM(sid);
// isolate one name
- while (eval_isnamec1(*arg))
+ while (eval_isnamec(*arg))
++arg;
*name_len = (int)(arg - name);
{
if (*arg == '*')
arg = skipwhite(arg + 1);
- else
+ else if (eval_isnamec1(*arg))
{
- while (eval_isnamec1(*arg))
+ while (eval_isnamec(*arg))
++arg;
arg = skipwhite(arg);
}
// 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);
}
}
if (STRNCMP("from", arg, 4) != 0 || !VIM_ISWHITE(arg[4]))
{
- emsg(_("E1045: Missing \"from\""));
+ emsg(_("E1070: Missing \"from\""));
return NULL;
}
from_ptr = arg;
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;
}
if (arg != from_ptr)
{
+ // cannot happen, just in case the above has a flaw
emsg(_("E1047: syntax error in import"));
return NULL;
}