forked from aniani/vim
patch 9.0.0229: Vim9: error message for missing type is not clear
Problem: Vim9: error message for missing type is not clear. Solution: Mention the context. (issue #10944)
This commit is contained in:
@@ -2634,10 +2634,10 @@ EXTERN char e_str_is_used_as_argument[]
|
|||||||
INIT(= N_("E1006: %s is used as an argument"));
|
INIT(= N_("E1006: %s is used as an argument"));
|
||||||
EXTERN char e_mandatory_argument_after_optional_argument[]
|
EXTERN char e_mandatory_argument_after_optional_argument[]
|
||||||
INIT(= N_("E1007: Mandatory argument after optional argument"));
|
INIT(= N_("E1007: Mandatory argument after optional argument"));
|
||||||
EXTERN char e_missing_type[]
|
EXTERN char e_missing_type_after_str[]
|
||||||
INIT(= N_("E1008: Missing <type>"));
|
INIT(= N_("E1008: Missing <type> after %s"));
|
||||||
EXTERN char e_missing_gt_after_type[]
|
EXTERN char e_missing_gt_after_type_str[]
|
||||||
INIT(= N_("E1009: Missing > after type"));
|
INIT(= N_("E1009: Missing > after type: %s"));
|
||||||
EXTERN char e_type_not_recognized_str[]
|
EXTERN char e_type_not_recognized_str[]
|
||||||
INIT(= N_("E1010: Type not recognized: %s"));
|
INIT(= N_("E1010: Type not recognized: %s"));
|
||||||
EXTERN char e_name_too_long_str[]
|
EXTERN char e_name_too_long_str[]
|
||||||
|
@@ -1591,7 +1591,7 @@ def Test_assignment_failure()
|
|||||||
v9.CheckDefFailure(['var name: number = feedkeys("0")'], 'expected number but got void')
|
v9.CheckDefFailure(['var name: number = feedkeys("0")'], 'expected number but got void')
|
||||||
|
|
||||||
v9.CheckDefFailure(['var name: dict <number>'], 'E1068:')
|
v9.CheckDefFailure(['var name: dict <number>'], 'E1068:')
|
||||||
v9.CheckDefFailure(['var name: dict<number'], 'E1009:')
|
v9.CheckDefFailure(['var name: dict<number'], 'E1009: Missing > after type: <number')
|
||||||
|
|
||||||
assert_fails('s/^/\=g:Mess()/n', 'E794:')
|
assert_fails('s/^/\=g:Mess()/n', 'E794:')
|
||||||
v9.CheckDefFailure(['var name: dict<number'], 'E1009:')
|
v9.CheckDefFailure(['var name: dict<number'], 'E1009:')
|
||||||
|
@@ -2164,9 +2164,9 @@ def Test_return_type_wrong()
|
|||||||
'defcompile'], 'E1059:')
|
'defcompile'], 'E1059:')
|
||||||
delfunc! g:Func
|
delfunc! g:Func
|
||||||
|
|
||||||
v9.CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:')
|
v9.CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008: Missing <type> after list')
|
||||||
delfunc! g:Func
|
delfunc! g:Func
|
||||||
v9.CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:')
|
v9.CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008: Missing <type> after dict')
|
||||||
delfunc! g:Func
|
delfunc! g:Func
|
||||||
v9.CheckScriptFailure(['def Func()', 'return 1'], 'E1057:')
|
v9.CheckScriptFailure(['def Func()', 'return 1'], 'E1057:')
|
||||||
delfunc! g:Func
|
delfunc! g:Func
|
||||||
@@ -2183,7 +2183,7 @@ def Test_return_type_wrong()
|
|||||||
enddef
|
enddef
|
||||||
|
|
||||||
def Test_arg_type_wrong()
|
def Test_arg_type_wrong()
|
||||||
v9.CheckScriptFailure(['def Func3(items: list)', 'echo "a"', 'enddef'], 'E1008: Missing <type>')
|
v9.CheckScriptFailure(['def Func3(items: list)', 'echo "a"', 'enddef'], 'E1008: Missing <type> after list')
|
||||||
v9.CheckScriptFailure(['def Func4(...)', 'echo "a"', 'enddef'], 'E1055: Missing name after ...')
|
v9.CheckScriptFailure(['def Func4(...)', 'echo "a"', 'enddef'], 'E1055: Missing name after ...')
|
||||||
v9.CheckScriptFailure(['def Func5(items:string)', 'echo "a"'], 'E1069:')
|
v9.CheckScriptFailure(['def Func5(items:string)', 'echo "a"'], 'E1069:')
|
||||||
v9.CheckScriptFailure(['def Func5(items)', 'echo "a"'], 'E1077:')
|
v9.CheckScriptFailure(['def Func5(items)', 'echo "a"'], 'E1077:')
|
||||||
|
@@ -731,6 +731,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
229,
|
||||||
/**/
|
/**/
|
||||||
228,
|
228,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -879,6 +879,7 @@ skip_type(char_u *start, int optional)
|
|||||||
/*
|
/*
|
||||||
* Parse the member type: "<type>" and return "type" with the member set.
|
* Parse the member type: "<type>" and return "type" with the member set.
|
||||||
* Use "type_gap" if a new type needs to be added.
|
* Use "type_gap" if a new type needs to be added.
|
||||||
|
* "info" is extra information for an error message.
|
||||||
* Returns NULL in case of failure.
|
* Returns NULL in case of failure.
|
||||||
*/
|
*/
|
||||||
static type_T *
|
static type_T *
|
||||||
@@ -886,8 +887,10 @@ parse_type_member(
|
|||||||
char_u **arg,
|
char_u **arg,
|
||||||
type_T *type,
|
type_T *type,
|
||||||
garray_T *type_gap,
|
garray_T *type_gap,
|
||||||
int give_error)
|
int give_error,
|
||||||
|
char *info)
|
||||||
{
|
{
|
||||||
|
char_u *arg_start = *arg;
|
||||||
type_T *member_type;
|
type_T *member_type;
|
||||||
int prev_called_emsg = called_emsg;
|
int prev_called_emsg = called_emsg;
|
||||||
|
|
||||||
@@ -898,7 +901,7 @@ parse_type_member(
|
|||||||
if (*skipwhite(*arg) == '<')
|
if (*skipwhite(*arg) == '<')
|
||||||
semsg(_(e_no_white_space_allowed_before_str_str), "<", *arg);
|
semsg(_(e_no_white_space_allowed_before_str_str), "<", *arg);
|
||||||
else
|
else
|
||||||
emsg(_(e_missing_type));
|
semsg(_(e_missing_type_after_str), info);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -912,7 +915,7 @@ parse_type_member(
|
|||||||
if (**arg != '>' && called_emsg == prev_called_emsg)
|
if (**arg != '>' && called_emsg == prev_called_emsg)
|
||||||
{
|
{
|
||||||
if (give_error)
|
if (give_error)
|
||||||
emsg(_(e_missing_gt_after_type));
|
semsg(_(e_missing_gt_after_type_str), arg_start);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
++*arg;
|
++*arg;
|
||||||
@@ -971,7 +974,7 @@ parse_type(char_u **arg, garray_T *type_gap, int give_error)
|
|||||||
{
|
{
|
||||||
*arg += len;
|
*arg += len;
|
||||||
return parse_type_member(arg, &t_dict_any,
|
return parse_type_member(arg, &t_dict_any,
|
||||||
type_gap, give_error);
|
type_gap, give_error, "dict");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
@@ -1115,7 +1118,7 @@ parse_type(char_u **arg, garray_T *type_gap, int give_error)
|
|||||||
{
|
{
|
||||||
*arg += len;
|
*arg += len;
|
||||||
return parse_type_member(arg, &t_list_any,
|
return parse_type_member(arg, &t_list_any,
|
||||||
type_gap, give_error);
|
type_gap, give_error, "list");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
|
Reference in New Issue
Block a user