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;