comparison src/evalvars.c @ 21032:f80e822a310d v8.2.1067

patch 8.2.1067: expression "!expr->func()" does not work Commit: https://github.com/vim/vim/commit/0b1cd52ff6bf690388f892be686a91721a082e55 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 27 13:11:50 2020 +0200 patch 8.2.1067: expression "!expr->func()" does not work Problem: Expression "!expr->func()" does not work. Solution: Apply plus and minus earlier. (closes https://github.com/vim/vim/issues/6348)
author Bram Moolenaar <Bram@vim.org>
date Sat, 27 Jun 2020 13:15:03 +0200
parents 3af71cbcfdbe
children d9e0db9b2b99
comparison
equal deleted inserted replaced
21031:d49456e1977e 21032:f80e822a310d
1123 error = TRUE; 1123 error = TRUE;
1124 else 1124 else
1125 { 1125 {
1126 // handle d.key, l[idx], f(expr) 1126 // handle d.key, l[idx], f(expr)
1127 arg_subsc = arg; 1127 arg_subsc = arg;
1128 if (handle_subscript(&arg, &tv, EVAL_EVALUATE, TRUE, 1128 if (handle_subscript(&arg, &tv, EVAL_EVALUATE, TRUE)
1129 name, &name) == FAIL) 1129 == FAIL)
1130 error = TRUE; 1130 error = TRUE;
1131 else 1131 else
1132 { 1132 {
1133 if (arg == arg_subsc && len == 2 && name[1] == ':') 1133 if (arg == arg_subsc && len == 2 && name[1] == ':')
1134 { 1134 {
3339 name = tofree; 3339 name = tofree;
3340 n = (get_var_tv(name, len, &tv, NULL, FALSE, TRUE) == OK); 3340 n = (get_var_tv(name, len, &tv, NULL, FALSE, TRUE) == OK);
3341 if (n) 3341 if (n)
3342 { 3342 {
3343 // handle d.key, l[idx], f(expr) 3343 // handle d.key, l[idx], f(expr)
3344 n = (handle_subscript(&var, &tv, EVAL_EVALUATE, 3344 n = (handle_subscript(&var, &tv, EVAL_EVALUATE, FALSE) == OK);
3345 FALSE, name, &name) == OK);
3346 if (n) 3345 if (n)
3347 clear_tv(&tv); 3346 clear_tv(&tv);
3348 } 3347 }
3349 } 3348 }
3350 if (*var != NUL) 3349 if (*var != NUL)