comparison 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
comparison
equal deleted inserted replaced
25301:fe178301fc04 25302:4d3c68196d05
385 { 385 {
386 buf_T *buf; 386 buf_T *buf;
387 int error = FALSE; 387 int error = FALSE;
388 char_u *name; 388 char_u *name;
389 389
390 if (in_vim9script()
391 && (check_for_opt_string_or_number_arg(argvars, 0) == FAIL
392 || (argvars[0].v_type != VAR_UNKNOWN
393 && check_for_opt_bool_arg(argvars, 1) == FAIL)))
394 return;
395
390 if (argvars[0].v_type == VAR_UNKNOWN) 396 if (argvars[0].v_type == VAR_UNKNOWN)
391 buf = curbuf; 397 buf = curbuf;
392 else 398 else
393 buf = tv_get_buf_from_arg(&argvars[0]); 399 buf = tv_get_buf_from_arg(&argvars[0]);
394 400
456 int is_curbuf; 462 int is_curbuf;
457 buf_T *curbuf_save = NULL; 463 buf_T *curbuf_save = NULL;
458 win_T *curwin_save = NULL; 464 win_T *curwin_save = NULL;
459 tabpage_T *tp; 465 tabpage_T *tp;
460 win_T *wp; 466 win_T *wp;
467
468 if (in_vim9script()
469 && (check_for_buffer_arg(argvars, 0) == FAIL
470 || check_for_lnum_arg(argvars, 1) == FAIL
471 || check_for_opt_lnum_arg(argvars, 2) == FAIL))
472 return;
461 473
462 buf = tv_get_buf(&argvars[0], FALSE); 474 buf = tv_get_buf(&argvars[0], FALSE);
463 if (buf == NULL) 475 if (buf == NULL)
464 { 476 {
465 rettv->vval.v_number = 1; // FAIL 477 rettv->vval.v_number = 1; // FAIL
725 { 737 {
726 linenr_T lnum = 1; 738 linenr_T lnum = 1;
727 linenr_T end = 1; 739 linenr_T end = 1;
728 buf_T *buf; 740 buf_T *buf;
729 741
742 if (in_vim9script()
743 && (check_for_buffer_arg(argvars, 0) == FAIL
744 || check_for_lnum_arg(argvars, 1) == FAIL
745 || check_for_opt_lnum_arg(argvars, 2) == FAIL))
746 return;
747
730 buf = tv_get_buf_from_arg(&argvars[0]); 748 buf = tv_get_buf_from_arg(&argvars[0]);
731 if (buf != NULL) 749 if (buf != NULL)
732 { 750 {
733 lnum = tv_get_lnum_buf(&argvars[1], buf); 751 lnum = tv_get_lnum_buf(&argvars[1], buf);
734 if (argvars[2].v_type == VAR_UNKNOWN) 752 if (argvars[2].v_type == VAR_UNKNOWN)