comparison src/testdir/test_vim9_assign.vim @ 24357:108a6e2497f6 v8.2.2719

patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function Commit: https://github.com/vim/vim/commit/e42939af87be3adad8c08ceb454e3a31114d7165 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 5 17:11:17 2021 +0200 patch 8.2.2719: Vim9: appending to dict item doesn't work in a :def function Problem: Vim9: appending to dict item doesn't work in a :def function. Solution: Implement assignment with operator on indexed item.
author Bram Moolenaar <Bram@vim.org>
date Mon, 05 Apr 2021 17:15:06 +0200
parents cd9f77409393
children 1a145eb83a28
comparison
equal deleted inserted replaced
24356:03088264506d 24357:108a6e2497f6
1114 CheckScriptSuccess(lines) 1114 CheckScriptSuccess(lines)
1115 enddef 1115 enddef
1116 1116
1117 def Test_assign_dict_with_op() 1117 def Test_assign_dict_with_op()
1118 var lines =<< trim END 1118 var lines =<< trim END
1119 vim9script
1120 var ds: dict<string> = {a: 'x'} 1119 var ds: dict<string> = {a: 'x'}
1121 ds['a'] ..= 'y' 1120 ds['a'] ..= 'y'
1122 ds.a ..= 'z' 1121 ds.a ..= 'z'
1123 assert_equal('xyz', ds.a) 1122 assert_equal('xyz', ds.a)
1124 1123
1146 dn['a'] %= 3 1145 dn['a'] %= 3
1147 assert_equal(2, dn.a) 1146 assert_equal(2, dn.a)
1148 dn.a %= 6 1147 dn.a %= 6
1149 assert_equal(2, dn.a) 1148 assert_equal(2, dn.a)
1150 END 1149 END
1151 # TODO: this should also work with a :def function 1150 CheckDefAndScriptSuccess(lines)
1152 CheckScriptSuccess(lines) 1151 enddef
1152
1153 def Test_assign_list_with_op()
1154 var lines =<< trim END
1155 var ls: list<string> = ['x']
1156 ls[0] ..= 'y'
1157 assert_equal('xy', ls[0])
1158
1159 var ln: list<number> = [9]
1160 ln[0] += 2
1161 assert_equal(11, ln[0])
1162
1163 ln[0] -= 3
1164 assert_equal(8, ln[0])
1165
1166 ln[0] *= 2
1167 assert_equal(16, ln[0])
1168
1169 ln[0] /= 3
1170 assert_equal(5, ln[0])
1171
1172 ln[0] %= 3
1173 assert_equal(2, ln[0])
1174 END
1175 CheckDefAndScriptSuccess(lines)
1176 enddef
1177
1178 def Test_assign_with_op_fails()
1179 var lines =<< trim END
1180 var s = 'abc'
1181 s[1] += 'x'
1182 END
1183 CheckDefAndScriptFailure2(lines, 'E1141:', 'E689:', 2)
1184
1185 lines =<< trim END
1186 var s = 'abc'
1187 s[1] ..= 'x'
1188 END
1189 CheckDefAndScriptFailure2(lines, 'E1141:', 'E689:', 2)
1153 enddef 1190 enddef
1154 1191
1155 def Test_assign_lambda() 1192 def Test_assign_lambda()
1156 # check if assign a lambda to a variable which type is func or any. 1193 # check if assign a lambda to a variable which type is func or any.
1157 var lines =<< trim END 1194 var lines =<< trim END