diff --git a/src/eval.c b/src/eval.c index 8e9d01308e57d6..795421bb499827 100644 --- a/src/eval.c +++ b/src/eval.c @@ -4059,7 +4059,7 @@ eval5(char_u **arg, typval_T *rettv, int evaluate) // "." is only string concatenation when scriptversion is 1 op = **arg; concat = op == '.' - && (*(*arg + 1) == '.' || current_sctx.sc_version < 2); + && (*(*arg + 1) == '.' || current_sctx.sc_version < 2 || !evaluate); if (op != '+' && op != '-' && !concat) break; diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim index 08ab59ea53d7d2..82f9cac243e61d 100644 --- a/src/testdir/test_eval_stuff.vim +++ b/src/testdir/test_eval_stuff.vim @@ -176,6 +176,13 @@ func Test_vvar_scriptversion2() call assert_true(v:versionlong > 8011525) endfunc +func Test_dict_access_scriptversion2() + let l:x = {'foo': 1} + + call assert_false(0 && l:x.foo) + call assert_true(1 && l:x.foo) +endfunc + func Test_scriptversion() call writefile(['scriptversion 9'], 'Xversionscript') call assert_fails('source Xversionscript', 'E999:')