]> granicus.if.org Git - vim/commitdiff
patch 8.2.3144: Vim9: no error when using an invalid value for a line number v8.2.3144
authorBram Moolenaar <Bram@vim.org>
Sun, 11 Jul 2021 14:01:58 +0000 (16:01 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 11 Jul 2021 14:01:58 +0000 (16:01 +0200)
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)

src/errors.h
src/eval.c
src/testdir/test_vim9_builtin.vim
src/version.c

index 7e823bfbf2971dd788dc623830758504878ae9c8..bfbe0296ed389208effa373d418d99429c7951e1 100644 (file)
@@ -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\""));
index 4d94d67ee61c52de5789f0c7fce9f2ebc57885cb..6537ffea41e877cf0b652fcefaf5b9573dd1fd41 100644 (file)
@@ -5376,6 +5376,8 @@ var2fpos(
        }
        return &pos;
     }
+    if (in_vim9script())
+       semsg(_(e_invalid_value_for_line_number_str), name);
     return NULL;
 }
 
index 5bc51b11ca9f03ae55ee67ff3385075c2dbf76b0..e26c2c0dd14b106f443ece940d2ad1d6b8353593 100644 (file)
@@ -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()
@@ -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))
@@ -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()
index 76dbacda3ae86e05f58f1ff909a75e0843e7986d..91a3677d56b4f537112b5b1ae0e4223f0e0a3afb 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3144,
 /**/
     3143,
 /**/