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