diff src/vim9compile.c @ 19818:c1c88b333481 v8.2.0465

patch 8.2.0465: Vim9: dead code and wrong return type Commit: https://github.com/vim/vim/commit/599c89c82fe3c85378e8077b4e589f0ee4218da2 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 28 14:53:20 2020 +0100 patch 8.2.0465: Vim9: dead code and wrong return type Problem: Vim9: dead code and wrong return type. Solution: Remove dead code. Fix return type. Add more tests.
author Bram Moolenaar <Bram@vim.org>
date Sat, 28 Mar 2020 15:00:10 +0100
parents 99248f0ff29d
children fc3cdc819d80
line wrap: on
line diff
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -242,7 +242,7 @@ get_list_type(type_T *member_type, garra
 
     // Not a common type, create a new entry.
     if (ga_grow(type_list, 1) == FAIL)
-	return 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,7 +269,7 @@ get_dict_type(type_T *member_type, garra
 
     // Not a common type, create a new entry.
     if (ga_grow(type_list, 1) == FAIL)
-	return 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,6 +1368,7 @@ skip_type(char_u *start)
 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,11 +1381,9 @@ parse_type_member(char_u **arg, type_T *
     *arg = skipwhite(*arg + 1);
 
     member_type = parse_type(arg, type_list);
-    if (member_type == NULL)
-	return type;
 
     *arg = skipwhite(*arg);
-    if (**arg != '>')
+    if (**arg != '>' && called_emsg == prev_called_emsg)
     {
 	emsg(_("E1009: Missing > after type"));
 	return type;
@@ -1766,6 +1765,11 @@ compile_load_scriptvar(
 		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,6 +1810,7 @@ compile_load(char_u **arg, char_u *end_a
     char_u	*name;
     char_u	*end = end_arg;
     int		res = FAIL;
+    int		prev_called_emsg = called_emsg;
 
     if (*(*arg + 1) == ':')
     {
@@ -1892,7 +1897,7 @@ compile_load(char_u **arg, char_u *end_a
     *arg = end;
 
 theend:
-    if (res == FAIL && error)
+    if (res == FAIL && error && called_emsg == prev_called_emsg)
 	semsg(_(e_var_notfound), name);
     vim_free(name);
     return res;