vim-patch:8.2.3852: Vim9: not enough tests

Problem:    Vim9: not enough tests.
Solution:   Also run existing tests for Vim9 script.  Make errors more
            consistent.

f47c5a8e2d

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq 2023-06-12 18:10:35 +08:00
parent b867f6c7c5
commit d83a196716
2 changed files with 20 additions and 8 deletions

View File

@ -89,20 +89,25 @@
static const char *e_missbrac = N_("E111: Missing ']'"); static const char *e_missbrac = N_("E111: Missing ']'");
static const char *e_list_end = N_("E697: Missing end of List ']': %s"); static const char *e_list_end = N_("E697: Missing end of List ']': %s");
static const char *e_cannot_slice_dictionary static const char e_cannot_slice_dictionary[]
= N_("E719: Cannot slice a Dictionary"); = N_("E719: Cannot slice a Dictionary");
static const char e_cannot_index_special_variable[] static const char e_cannot_index_special_variable[]
= N_("E909: Cannot index a special variable"); = N_("E909: Cannot index a special variable");
static const char *e_nowhitespace static const char *e_nowhitespace
= N_("E274: No white space allowed before parenthesis"); = N_("E274: No white space allowed before parenthesis");
static const char *e_write2 = N_("E80: Error while writing: %s"); static const char *e_write2 = N_("E80: Error while writing: %s");
static const char e_cannot_index_a_funcref[]
= N_("E695: Cannot index a Funcref");
static const char e_variable_nested_too_deep_for_making_copy[] static const char e_variable_nested_too_deep_for_making_copy[]
= N_("E698: Variable nested too deep for making a copy"); = N_("E698: Variable nested too deep for making a copy");
static const char *e_string_list_or_blob_required = N_("E1098: String, List or Blob required"); static const char e_string_list_or_blob_required[]
static const char e_expression_too_recursive_str[] = N_("E1169: Expression too recursive: %s"); = N_("E1098: String, List or Blob required");
static const char e_expression_too_recursive_str[]
= N_("E1169: Expression too recursive: %s");
static const char e_dot_can_only_be_used_on_dictionary_str[] static const char e_dot_can_only_be_used_on_dictionary_str[]
= N_("E1203: Dot can only be used on a dictionary: %s"); = N_("E1203: Dot can only be used on a dictionary: %s");
static const char e_empty_function_name[] = N_("E1192: Empty function name"); static const char e_empty_function_name[]
= N_("E1192: Empty function name");
static char * const namespace_char = "abglstvw"; static char * const namespace_char = "abglstvw";
@ -3567,7 +3572,7 @@ static int check_can_index(typval_T *rettv, bool evaluate, bool verbose)
case VAR_FUNC: case VAR_FUNC:
case VAR_PARTIAL: case VAR_PARTIAL:
if (verbose) { if (verbose) {
emsg(_("E695: Cannot index a Funcref")); emsg(_(e_cannot_index_a_funcref));
} }
return FAIL; return FAIL;
case VAR_FLOAT: case VAR_FLOAT:

View File

@ -1178,12 +1178,19 @@ endfunc
" List and dict indexing tests " List and dict indexing tests
func Test_listdict_index() func Test_listdict_index()
call assert_fails('echo function("min")[0]', 'E695:') call CheckLegacyAndVim9Failure(['echo function("min")[0]'], 'E695:')
call assert_fails('echo v:true[0]', 'E909:') call CheckLegacyAndVim9Failure(['echo v:true[0]'], 'E909:')
call CheckLegacyAndVim9Failure(['echo v:null[0]'], 'E909:')
let d = {'k' : 10} let d = {'k' : 10}
call assert_fails('echo d.', 'E15:') call assert_fails('echo d.', 'E15:')
call assert_fails('echo d[1:2]', 'E719:') call CheckDefAndScriptFailure2(['var d = {k: 10}', 'echo d.'], 'E1127', 'E15:')
call CheckLegacyAndVim9Failure(['VAR d = {"k": 10}', 'echo d[1 : 2]'], 'E719:')
call assert_fails("let v = [4, 6][{-> 1}]", 'E729:') call assert_fails("let v = [4, 6][{-> 1}]", 'E729:')
call CheckDefAndScriptFailure2(['var v = [4, 6][() => 1]'], 'E1012', 'E703:')
call assert_fails("let v = range(5)[2:[]]", 'E730:') call assert_fails("let v = range(5)[2:[]]", 'E730:')
call assert_fails("let v = range(5)[2:{-> 2}(]", ['E15:', 'E116:']) call assert_fails("let v = range(5)[2:{-> 2}(]", ['E15:', 'E116:'])
call assert_fails("let v = range(5)[2:3", 'E111:') call assert_fails("let v = range(5)[2:3", 'E111:')