Mercurial > vim
comparison src/vim9compile.c @ 25453:21b70bab366c v8.2.3263
patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Commit: https://github.com/vim/vim/commit/f5d52c90e0f2f51622a911b646024b2ad1225ed4
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jul 31 22:51:10 2021 +0200
patch 8.2.3263: Vim9: "..=" does not accept same types as the ".." operator
Problem: Vim9: "..=" does not accept same types as the ".." operator.
Solution: Convert value to string like ".." does. (issue https://github.com/vim/vim/issues/8664)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 31 Jul 2021 23:00:04 +0200 |
parents | 747ebbce2421 |
children | 9adaa0c056c7 |
comparison
equal
deleted
inserted
replaced
25452:d0975ae1f208 | 25453:21b70bab366c |
---|---|
7084 { | 7084 { |
7085 type_T *expected; | 7085 type_T *expected; |
7086 type_T *stacktype; | 7086 type_T *stacktype; |
7087 | 7087 |
7088 if (*op == '.') | 7088 if (*op == '.') |
7089 expected = &t_string; | 7089 { |
7090 if (may_generate_2STRING(-1, FALSE, cctx) == FAIL) | |
7091 goto theend; | |
7092 } | |
7090 else | 7093 else |
7094 { | |
7091 expected = lhs.lhs_member_type; | 7095 expected = lhs.lhs_member_type; |
7092 stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1]; | 7096 stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1]; |
7093 if ( | 7097 if ( |
7094 #ifdef FEAT_FLOAT | 7098 #ifdef FEAT_FLOAT |
7095 // If variable is float operation with number is OK. | 7099 // If variable is float operation with number is OK. |
7096 !(expected == &t_float && stacktype == &t_number) && | 7100 !(expected == &t_float && stacktype == &t_number) && |
7097 #endif | 7101 #endif |
7098 need_type(stacktype, expected, -1, 0, cctx, | 7102 need_type(stacktype, expected, -1, 0, cctx, |
7099 FALSE, FALSE) == FAIL) | 7103 FALSE, FALSE) == FAIL) |
7100 goto theend; | 7104 goto theend; |
7105 } | |
7101 | 7106 |
7102 if (*op == '.') | 7107 if (*op == '.') |
7103 { | 7108 { |
7104 if (generate_instr_drop(cctx, ISN_CONCAT, 1) == NULL) | 7109 if (generate_instr_drop(cctx, ISN_CONCAT, 1) == NULL) |
7105 goto theend; | 7110 goto theend; |