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