Mercurial > vim
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) |