Skip to content

Commit

Permalink
patch 8.2.3144: Vim9: no error when using an invalid value for a line…
Browse files Browse the repository at this point in the history
… number

Problem:    Vim9: no error when using an invalid value for a line number.
Solution:   Give an error if the string value is not recognized.
            (closes #8536)
  • Loading branch information
brammool committed Jul 11, 2021
1 parent d916255 commit 0f1227f
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/errors.h
Expand Up @@ -498,3 +498,5 @@ EXTERN char e_expression_without_effect_str[]
INIT(= N_("E1207: Expression without an effect: %s"));
EXTERN char e_complete_used_without_nargs[]
INIT(= N_("E1208: -complete used without -nargs"));
EXTERN char e_invalid_value_for_line_number_str[]
INIT(= N_("E1209: Invalid value for a line number: \"%s\""));
2 changes: 2 additions & 0 deletions src/eval.c
Expand Up @@ -5376,6 +5376,8 @@ var2fpos(
}
return &pos;
}
if (in_vim9script())
semsg(_(e_invalid_value_for_line_number_str), name);
return NULL;
}

Expand Down
23 changes: 21 additions & 2 deletions src/testdir/test_vim9_builtin.vim
Expand Up @@ -474,7 +474,7 @@ def Test_cursor()
var lines =<< trim END
cursor('2', 1)
END
CheckDefExecAndScriptFailure(lines, 'E475:')
CheckDefExecAndScriptFailure(lines, 'E1209:')
enddef

def Test_debugbreak()
Expand Down Expand Up @@ -1036,6 +1036,25 @@ def Test_getjumplist()
CheckDefFailure(['getjumplist(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string')
enddef

def Test_getline()
var lines =<< trim END
new
setline(1, ['hello', 'there', 'again'])
assert_equal('hello', getline(1))
assert_equal('hello', getline('.'))

normal 2Gvjv
assert_equal('there', getline("'<"))
assert_equal('again', getline("'>"))
END
CheckDefAndScriptSuccess(lines)

lines =<< trim END
echo getline('1')
END
CheckDefExecAndScriptFailure(lines, 'E1209:')
enddef

def Test_getmarklist()
CheckDefFailure(['getmarklist([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>')
assert_equal([], getmarklist(10000))
Expand All @@ -1049,7 +1068,7 @@ enddef
def Test_getpos()
CheckDefFailure(['getpos(10)'], 'E1013: Argument 1: type mismatch, expected string but got number')
assert_equal([0, 1, 1, 0], getpos('.'))
assert_equal([0, 0, 0, 0], getpos('a'))
CheckDefExecFailure(['getpos("a")'], 'E1209:')
enddef

def Test_getqflist()
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -755,6 +755,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3144,
/**/
3143,
/**/
Expand Down

0 comments on commit 0f1227f

Please sign in to comment.