diff src/evalbuffer.c @ 25302:4d3c68196d05 v8.2.3188

patch 8.2.3188: Vim9: argument types are not checked at compile time Commit: https://github.com/vim/vim/commit/83494b4ac61898f687d6ef9dce4bad5802fb8e51 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Tue Jul 20 17:51:51 2021 +0200 patch 8.2.3188: Vim9: argument types are not checked at compile time Problem: Vim9: argument types are not checked at compile time. Solution: Add several more type checks, also at runtime. (Yegappan Lakshmanan, closes #8587)
author Bram Moolenaar <Bram@vim.org>
date Tue, 20 Jul 2021 18:00:06 +0200
parents 883d7ceffd97
children 7e620652bd13
line wrap: on
line diff
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -387,6 +387,12 @@ f_bufnr(typval_T *argvars, typval_T *ret
     int		error = FALSE;
     char_u	*name;
 
+    if (in_vim9script()
+	    && (check_for_opt_string_or_number_arg(argvars, 0) == FAIL
+		|| (argvars[0].v_type != VAR_UNKNOWN
+		    && check_for_opt_bool_arg(argvars, 1) == FAIL)))
+	return;
+
     if (argvars[0].v_type == VAR_UNKNOWN)
 	buf = curbuf;
     else
@@ -459,6 +465,12 @@ f_deletebufline(typval_T *argvars, typva
     tabpage_T	*tp;
     win_T	*wp;
 
+    if (in_vim9script()
+	    && (check_for_buffer_arg(argvars, 0) == FAIL
+		|| check_for_lnum_arg(argvars, 1) == FAIL
+		|| check_for_opt_lnum_arg(argvars, 2) == FAIL))
+	return;
+
     buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
     {
@@ -727,6 +739,12 @@ f_getbufline(typval_T *argvars, typval_T
     linenr_T	end = 1;
     buf_T	*buf;
 
+    if (in_vim9script()
+	    && (check_for_buffer_arg(argvars, 0) == FAIL
+		|| check_for_lnum_arg(argvars, 1) == FAIL
+		|| check_for_opt_lnum_arg(argvars, 2) == FAIL))
+	return;
+
     buf = tv_get_buf_from_arg(&argvars[0]);
     if (buf != NULL)
     {