Mercurial > vim
comparison src/terminal.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 | 712e867f9721 |
children | 7e620652bd13 |
comparison
equal
deleted
inserted
replaced
25301:fe178301fc04 | 25302:4d3c68196d05 |
---|---|
5926 * "term_gettty(buf)" function | 5926 * "term_gettty(buf)" function |
5927 */ | 5927 */ |
5928 void | 5928 void |
5929 f_term_gettty(typval_T *argvars, typval_T *rettv) | 5929 f_term_gettty(typval_T *argvars, typval_T *rettv) |
5930 { | 5930 { |
5931 buf_T *buf = term_get_buf(argvars, "term_gettty()"); | 5931 buf_T *buf; |
5932 char_u *p = NULL; | 5932 char_u *p = NULL; |
5933 int num = 0; | 5933 int num = 0; |
5934 | 5934 |
5935 if (in_vim9script() | |
5936 && (check_for_string_or_number_arg(argvars, 0) == FAIL | |
5937 || check_for_opt_bool_arg(argvars, 1) == FAIL)) | |
5938 return; | |
5939 | |
5935 rettv->v_type = VAR_STRING; | 5940 rettv->v_type = VAR_STRING; |
5941 buf = term_get_buf(argvars, "term_gettty()"); | |
5936 if (buf == NULL) | 5942 if (buf == NULL) |
5937 return; | 5943 return; |
5938 if (argvars[1].v_type != VAR_UNKNOWN) | 5944 if (argvars[1].v_type != VAR_UNKNOWN) |
5939 num = tv_get_bool(&argvars[1]); | 5945 num = tv_get_bool(&argvars[1]); |
5940 | 5946 |
6096 buf_T *buf; | 6102 buf_T *buf; |
6097 char_u *msg; | 6103 char_u *msg; |
6098 term_T *term; | 6104 term_T *term; |
6099 | 6105 |
6100 if (in_vim9script() | 6106 if (in_vim9script() |
6101 && ((argvars[0].v_type != VAR_STRING | 6107 && (check_for_string_or_number_arg(argvars, 0) == FAIL |
6102 && argvars[0].v_type != VAR_NUMBER | |
6103 && check_for_string_arg(argvars, 0) == FAIL) | |
6104 || check_for_string_arg(argvars, 1) == FAIL)) | 6108 || check_for_string_arg(argvars, 1) == FAIL)) |
6105 return; | 6109 return; |
6106 | 6110 |
6107 buf = term_get_buf(argvars, "term_sendkeys()"); | 6111 buf = term_get_buf(argvars, "term_sendkeys()"); |
6108 if (buf == NULL) | 6112 if (buf == NULL) |
6173 * "term_setansicolors(buf, list)" function | 6177 * "term_setansicolors(buf, list)" function |
6174 */ | 6178 */ |
6175 void | 6179 void |
6176 f_term_setansicolors(typval_T *argvars, typval_T *rettv UNUSED) | 6180 f_term_setansicolors(typval_T *argvars, typval_T *rettv UNUSED) |
6177 { | 6181 { |
6178 buf_T *buf = term_get_buf(argvars, "term_setansicolors()"); | 6182 buf_T *buf; |
6179 term_T *term; | 6183 term_T *term; |
6180 | 6184 |
6185 if (in_vim9script() | |
6186 && (check_for_opt_string_or_number_arg(argvars, 0) == FAIL | |
6187 || (argvars[0].v_type != VAR_UNKNOWN | |
6188 && check_for_opt_list_arg(argvars, 1) == FAIL))) | |
6189 return; | |
6190 | |
6191 buf = term_get_buf(argvars, "term_setansicolors()"); | |
6181 if (buf == NULL) | 6192 if (buf == NULL) |
6182 return; | 6193 return; |
6183 term = buf->b_term; | 6194 term = buf->b_term; |
6184 if (term->tl_vterm == NULL) | 6195 if (term->tl_vterm == NULL) |
6185 return; | 6196 return; |
6204 buf_T *buf; | 6215 buf_T *buf; |
6205 term_T *term; | 6216 term_T *term; |
6206 char_u *api; | 6217 char_u *api; |
6207 | 6218 |
6208 if (in_vim9script() | 6219 if (in_vim9script() |
6209 && ((argvars[0].v_type != VAR_STRING | 6220 && (check_for_string_or_number_arg(argvars, 0) == FAIL |
6210 && argvars[0].v_type != VAR_NUMBER | |
6211 && check_for_string_arg(argvars, 0) == FAIL) | |
6212 || check_for_string_arg(argvars, 1) == FAIL)) | 6221 || check_for_string_arg(argvars, 1) == FAIL)) |
6213 return; | 6222 return; |
6214 | 6223 |
6215 buf = term_get_buf(argvars, "term_setapi()"); | 6224 buf = term_get_buf(argvars, "term_setapi()"); |
6216 if (buf == NULL) | 6225 if (buf == NULL) |
6234 buf_T *buf; | 6243 buf_T *buf; |
6235 term_T *term; | 6244 term_T *term; |
6236 char_u *cmd; | 6245 char_u *cmd; |
6237 | 6246 |
6238 if (in_vim9script() | 6247 if (in_vim9script() |
6239 && ((argvars[0].v_type != VAR_STRING | 6248 && (check_for_string_or_number_arg(argvars, 0) == FAIL |
6240 && argvars[0].v_type != VAR_NUMBER | |
6241 && check_for_string_arg(argvars, 0) == FAIL) | |
6242 || check_for_string_arg(argvars, 1) == FAIL)) | 6249 || check_for_string_arg(argvars, 1) == FAIL)) |
6243 return; | 6250 return; |
6244 | 6251 |
6245 buf = term_get_buf(argvars, "term_setrestore()"); | 6252 buf = term_get_buf(argvars, "term_setrestore()"); |
6246 if (buf == NULL) | 6253 if (buf == NULL) |
6264 buf_T *buf; | 6271 buf_T *buf; |
6265 term_T *term; | 6272 term_T *term; |
6266 char_u *how; | 6273 char_u *how; |
6267 | 6274 |
6268 if (in_vim9script() | 6275 if (in_vim9script() |
6269 && ((argvars[0].v_type != VAR_STRING | 6276 && (check_for_string_or_number_arg(argvars, 0) == FAIL |
6270 && argvars[0].v_type != VAR_NUMBER | |
6271 && check_for_string_arg(argvars, 0) == FAIL) | |
6272 || check_for_string_arg(argvars, 1) == FAIL)) | 6277 || check_for_string_arg(argvars, 1) == FAIL)) |
6273 return; | 6278 return; |
6274 | 6279 |
6275 buf = term_get_buf(argvars, "term_setkill()"); | 6280 buf = term_get_buf(argvars, "term_setkill()"); |
6276 if (buf == NULL) | 6281 if (buf == NULL) |
6319 f_term_wait(typval_T *argvars, typval_T *rettv UNUSED) | 6324 f_term_wait(typval_T *argvars, typval_T *rettv UNUSED) |
6320 { | 6325 { |
6321 buf_T *buf; | 6326 buf_T *buf; |
6322 | 6327 |
6323 if (in_vim9script() | 6328 if (in_vim9script() |
6324 && ((argvars[0].v_type != VAR_STRING | 6329 && (check_for_string_or_number_arg(argvars, 0) == FAIL |
6325 && argvars[0].v_type != VAR_NUMBER | 6330 || check_for_opt_number_arg(argvars, 1) == FAIL)) |
6326 && check_for_string_arg(argvars, 0) == FAIL) || | |
6327 (argvars[1].v_type != VAR_UNKNOWN | |
6328 && check_for_number_arg(argvars, 1) == FAIL))) | |
6329 return; | 6331 return; |
6330 | 6332 |
6331 buf = term_get_buf(argvars, "term_wait()"); | 6333 buf = term_get_buf(argvars, "term_wait()"); |
6332 if (buf == NULL) | 6334 if (buf == NULL) |
6333 return; | 6335 return; |