END
enddef
+let g:someNumber = 43
+
+def Test_assign_concat()
+ var lines =<< trim END
+ var s = '-'
+ s ..= 99
+ s ..= true
+ s ..= '-'
+ s ..= v:null
+ s ..= g:someNumber
+ assert_equal('-99true-null43', s)
+ END
+ CheckDefAndScriptSuccess(lines)
+
+ lines =<< trim END
+ var s = '-'
+ s ..= [1, 2]
+ END
+ CheckDefAndScriptFailure2(lines, 'E1105: Cannot convert list to string', 'E734: Wrong variable type for .=', 2)
+ lines =<< trim END
+ var s = '-'
+ s ..= {a: 2}
+ END
+ CheckDefAndScriptFailure2(lines, 'E1105: Cannot convert dict to string', 'E734: Wrong variable type for .=', 2)
+enddef
+
def Test_assign_register()
var lines =<< trim END
@c = 'areg'
type_T *stacktype;
if (*op == '.')
- expected = &t_string;
+ {
+ if (may_generate_2STRING(-1, FALSE, cctx) == FAIL)
+ goto theend;
+ }
else
+ {
expected = lhs.lhs_member_type;
- stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1];
- if (
+ stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1];
+ if (
#ifdef FEAT_FLOAT
- // If variable is float operation with number is OK.
- !(expected == &t_float && stacktype == &t_number) &&
+ // If variable is float operation with number is OK.
+ !(expected == &t_float && stacktype == &t_number) &&
#endif
need_type(stacktype, expected, -1, 0, cctx,
FALSE, FALSE) == FAIL)
- goto theend;
+ goto theend;
+ }
if (*op == '.')
{