comparison src/eval.c @ 24606:a4fda40e0bb9 v8.2.2842

patch 8.2.2842: Vim9: skip argument to searchpair() is not compiled Commit: https://github.com/vim/vim/commit/f18332fb9e2e4208a97d800f096b02c6681780e7 Author: Bram Moolenaar <Bram@vim.org> Date: Fri May 7 17:55:55 2021 +0200 patch 8.2.2842: Vim9: skip argument to searchpair() is not compiled Problem: Vim9: skip argument to searchpair() is not compiled. Solution: Add VAR_INSTR.
author Bram Moolenaar <Bram@vim.org>
date Fri, 07 May 2021 18:00:04 +0200
parents cb0d344bd381
children 07b3d21a8b4b
comparison
equal deleted inserted replaced
24605:f5484f767f70 24606:a4fda40e0bb9
306 funcexe.evaluate = TRUE; 306 funcexe.evaluate = TRUE;
307 funcexe.partial = partial; 307 funcexe.partial = partial;
308 if (call_func(s, -1, rettv, argc, argv, &funcexe) == FAIL) 308 if (call_func(s, -1, rettv, argc, argv, &funcexe) == FAIL)
309 return FAIL; 309 return FAIL;
310 } 310 }
311 }
312 else if (expr->v_type == VAR_INSTR)
313 {
314 return exe_typval_instr(expr, rettv);
311 } 315 }
312 else 316 else
313 { 317 {
314 s = tv_get_string_buf_chk(expr, buf); 318 s = tv_get_string_buf_chk(expr, buf);
315 if (s == NULL) 319 if (s == NULL)
1508 case VAR_PARTIAL: 1512 case VAR_PARTIAL:
1509 case VAR_BOOL: 1513 case VAR_BOOL:
1510 case VAR_SPECIAL: 1514 case VAR_SPECIAL:
1511 case VAR_JOB: 1515 case VAR_JOB:
1512 case VAR_CHANNEL: 1516 case VAR_CHANNEL:
1517 case VAR_INSTR:
1513 break; 1518 break;
1514 1519
1515 case VAR_BLOB: 1520 case VAR_BLOB:
1516 if (*op != '+' || tv2->v_type != VAR_BLOB) 1521 if (*op != '+' || tv2->v_type != VAR_BLOB)
1517 break; 1522 break;
4082 #endif 4087 #endif
4083 case VAR_BOOL: 4088 case VAR_BOOL:
4084 case VAR_SPECIAL: 4089 case VAR_SPECIAL:
4085 case VAR_JOB: 4090 case VAR_JOB:
4086 case VAR_CHANNEL: 4091 case VAR_CHANNEL:
4092 case VAR_INSTR:
4087 if (verbose) 4093 if (verbose)
4088 emsg(_(e_cannot_index_special_variable)); 4094 emsg(_(e_cannot_index_special_variable));
4089 return FAIL; 4095 return FAIL;
4090 case VAR_UNKNOWN: 4096 case VAR_UNKNOWN:
4091 case VAR_ANY: 4097 case VAR_ANY:
4175 case VAR_FLOAT: 4181 case VAR_FLOAT:
4176 case VAR_BOOL: 4182 case VAR_BOOL:
4177 case VAR_SPECIAL: 4183 case VAR_SPECIAL:
4178 case VAR_JOB: 4184 case VAR_JOB:
4179 case VAR_CHANNEL: 4185 case VAR_CHANNEL:
4186 case VAR_INSTR:
4180 break; // not evaluating, skipping over subscript 4187 break; // not evaluating, skipping over subscript
4181 4188
4182 case VAR_NUMBER: 4189 case VAR_NUMBER:
4183 case VAR_STRING: 4190 case VAR_STRING:
4184 { 4191 {
5065 *tofree = string_quote(r, FALSE); 5072 *tofree = string_quote(r, FALSE);
5066 r = *tofree; 5073 r = *tofree;
5067 } 5074 }
5068 break; 5075 break;
5069 5076
5077 case VAR_INSTR:
5078 *tofree = NULL;
5079 r = (char_u *)"instructions";
5080 break;
5081
5070 case VAR_FLOAT: 5082 case VAR_FLOAT:
5071 #ifdef FEAT_FLOAT 5083 #ifdef FEAT_FLOAT
5072 *tofree = NULL; 5084 *tofree = NULL;
5073 vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv->vval.v_float); 5085 vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv->vval.v_float);
5074 r = numbuf; 5086 r = numbuf;
5985 case VAR_PARTIAL: 5997 case VAR_PARTIAL:
5986 case VAR_BOOL: 5998 case VAR_BOOL:
5987 case VAR_SPECIAL: 5999 case VAR_SPECIAL:
5988 case VAR_JOB: 6000 case VAR_JOB:
5989 case VAR_CHANNEL: 6001 case VAR_CHANNEL:
6002 case VAR_INSTR:
5990 copy_tv(from, to); 6003 copy_tv(from, to);
5991 break; 6004 break;
5992 case VAR_LIST: 6005 case VAR_LIST:
5993 to->v_type = VAR_LIST; 6006 to->v_type = VAR_LIST;
5994 to->v_lock = 0; 6007 to->v_lock = 0;