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;