To: vim_dev@googlegroups.com Subject: Patch 8.2.0465 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0465 Problem: Vim9: dead code and wrong return type. Solution: Remove dead code. Fix return type. Add more tests. Files: src/vim9compile.c, src/testdir/test_vim9_script.vim *** ../vim-8.2.0464/src/vim9compile.c 2020-03-26 13:15:38.578501310 +0100 --- src/vim9compile.c 2020-03-28 14:50:41.608907329 +0100 *************** *** 242,248 **** // Not a common type, create a new entry. if (ga_grow(type_list, 1) == FAIL) ! return FAIL; type = ((type_T *)type_list->ga_data) + type_list->ga_len; ++type_list->ga_len; type->tt_type = VAR_LIST; --- 242,248 ---- // Not a common type, create a new entry. if (ga_grow(type_list, 1) == FAIL) ! return &t_any; type = ((type_T *)type_list->ga_data) + type_list->ga_len; ++type_list->ga_len; type->tt_type = VAR_LIST; *************** *** 269,275 **** // Not a common type, create a new entry. if (ga_grow(type_list, 1) == FAIL) ! return FAIL; type = ((type_T *)type_list->ga_data) + type_list->ga_len; ++type_list->ga_len; type->tt_type = VAR_DICT; --- 269,275 ---- // Not a common type, create a new entry. if (ga_grow(type_list, 1) == FAIL) ! return &t_any; type = ((type_T *)type_list->ga_data) + type_list->ga_len; ++type_list->ga_len; type->tt_type = VAR_DICT; *************** *** 1368,1373 **** --- 1368,1374 ---- parse_type_member(char_u **arg, type_T *type, garray_T *type_list) { type_T *member_type; + int prev_called_emsg = called_emsg; if (**arg != '<') { *************** *** 1380,1390 **** *arg = skipwhite(*arg + 1); member_type = parse_type(arg, type_list); - if (member_type == NULL) - return type; *arg = skipwhite(*arg); ! if (**arg != '>') { emsg(_("E1009: Missing > after type")); return type; --- 1381,1389 ---- *arg = skipwhite(*arg + 1); member_type = parse_type(arg, type_list); *arg = skipwhite(*arg); ! if (**arg != '>' && called_emsg == prev_called_emsg) { emsg(_("E1009: Missing > after type")); return type; *************** *** 1766,1771 **** --- 1765,1775 ---- return FAIL; } ++p; + if (VIM_ISWHITE(*p)) + { + emsg(_("E1074: no white space allowed after dot")); + return FAIL; + } idx = find_exported(import->imp_sid, &p, &name_len, &ufunc, &type); // TODO: what if it is a function? *************** *** 1806,1811 **** --- 1810,1816 ---- char_u *name; char_u *end = end_arg; int res = FAIL; + int prev_called_emsg = called_emsg; if (*(*arg + 1) == ':') { *************** *** 1892,1898 **** *arg = end; theend: ! if (res == FAIL && error) semsg(_(e_var_notfound), name); vim_free(name); return res; --- 1897,1903 ---- *arg = end; theend: ! if (res == FAIL && error && called_emsg == prev_called_emsg) semsg(_(e_var_notfound), name); vim_free(name); return res; *** ../vim-8.2.0464/src/testdir/test_vim9_script.vim 2020-03-26 14:11:52.903001238 +0100 --- src/testdir/test_vim9_script.vim 2020-03-28 14:52:01.192656713 +0100 *************** *** 112,117 **** --- 112,127 ---- call CheckDefFailure(['let var: dict '], 'E1007:') call CheckDefFailure(['let var: dict'], 'E1010:') + call CheckDefFailure(['let var: list>'], 'E1010:') + call CheckDefFailure(['let var: dict'], 'E1010:') + call CheckDefFailure(['let var: dict>'], 'E1010:') + + call CheckDefFailure(['let var: dict'], 'E1009:') call CheckDefFailure(['let var: ally'], 'E1010:') call CheckDefFailure(['let var: bram'], 'E1010:') *************** *** 436,441 **** --- 446,482 ---- source Ximport.vim assert_equal(9883, g:imported) + let import_star_as_lines_no_dot =<< trim END + vim9script + import * as Export from './Xexport.vim' + def Func() + let dummy = 1 + let imported = Export + dummy + enddef + END + writefile(import_star_as_lines_no_dot, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1060:') + + let import_star_as_lines_dot_space =<< trim END + vim9script + import * as Export from './Xexport.vim' + def Func() + let imported = Export . exported + enddef + END + writefile(import_star_as_lines_dot_space, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1074:') + + let import_star_as_lines_missing_name =<< trim END + vim9script + import * as Export from './Xexport.vim' + def Func() + let imported = Export. + enddef + END + writefile(import_star_as_lines_missing_name, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E1048:') + let import_star_lines =<< trim END vim9script import * from './Xexport.vim' *** ../vim-8.2.0464/src/version.c 2020-03-27 20:58:33.345005916 +0100 --- src/version.c 2020-03-28 14:52:43.596524301 +0100 *************** *** 740,741 **** --- 740,743 ---- { /* Add new patch number below this line */ + /**/ + 465, /**/ -- Advice to worms: Sleep late. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///