aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-04-16 10:18:24 +0800
committerGitHub <noreply@github.com>2024-04-16 10:18:24 +0800
commite3c083832c77eb7c24442bd10bbb718599a764d9 (patch)
tree14fe2dfcfd05b95d57a01f2603f5d8760935fd52 /test
parentb1e8b799a58f2b984b18940bb134996651aac248 (diff)
downloadrneovim-e3c083832c77eb7c24442bd10bbb718599a764d9.tar.gz
rneovim-e3c083832c77eb7c24442bd10bbb718599a764d9.tar.bz2
rneovim-e3c083832c77eb7c24442bd10bbb718599a764d9.zip
vim-patch:9.1.0335: String interpolation fails for List type (#28364)
Problem: String interpolation fails for List type Solution: use implicit string(list) for string interpolation and :put = (Yegappan Lakshmanan) related: vim/vim#14529 closes: vim/vim#14556 https://github.com/vim/vim/commit/bce51d9005dd1c5bc002acbac2e12b649abcb013 Cherry-pick eval_to_string_eap() from patch 8.2.1914. Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'test')
-rw-r--r--test/old/testdir/test_expr.vim12
-rw-r--r--test/old/testdir/test_let.vim35
-rw-r--r--test/old/testdir/test_put.vim8
3 files changed, 55 insertions, 0 deletions
diff --git a/test/old/testdir/test_expr.vim b/test/old/testdir/test_expr.vim
index 82377aaf19..8871e7e7d7 100644
--- a/test/old/testdir/test_expr.vim
+++ b/test/old/testdir/test_expr.vim
@@ -907,6 +907,18 @@ func Test_string_interp()
#" Dict interpolation
VAR d = {'a': 10, 'b': [1, 2]}
call assert_equal("{'a': 10, 'b': [1, 2]}", $'{d}')
+ VAR emptydict = {}
+ call assert_equal("a{}b", $'a{emptydict}b')
+ VAR nulldict = v:_null_dict
+ call assert_equal("a{}b", $'a{nulldict}b')
+
+ #" List interpolation
+ VAR l = ['a', 'b', 'c']
+ call assert_equal("['a', 'b', 'c']", $'{l}')
+ VAR emptylist = []
+ call assert_equal("a[]b", $'a{emptylist}b')
+ VAR nulllist = v:_null_list
+ call assert_equal("a[]b", $'a{nulllist}b')
#" Stray closing brace.
call assert_fails('echo $"moo}"', 'E1278:')
diff --git a/test/old/testdir/test_let.vim b/test/old/testdir/test_let.vim
index 797cedcb07..d37af45aaa 100644
--- a/test/old/testdir/test_let.vim
+++ b/test/old/testdir/test_let.vim
@@ -694,6 +694,41 @@ END
END
call assert_equal(["let d2 = {'a': 10, 'b': 'ss', 'c': {}}"], code)
+ " Empty dictionary
+ let d1 = {}
+ let code =<< eval trim END
+ let d2 = {d1}
+ END
+ call assert_equal(["let d2 = {}"], code)
+
+ " null dictionary
+ let d1 = v:_null_dict
+ let code =<< eval trim END
+ let d2 = {d1}
+ END
+ call assert_equal(["let d2 = {}"], code)
+
+ " Evaluate a List
+ let l1 = ['a', 'b', 'c']
+ let code =<< eval trim END
+ let l2 = {l1}
+ END
+ call assert_equal(["let l2 = ['a', 'b', 'c']"], code)
+
+ " Empty List
+ let l1 = []
+ let code =<< eval trim END
+ let l2 = {l1}
+ END
+ call assert_equal(["let l2 = []"], code)
+
+ " Null List
+ let l1 = v:_null_list
+ let code =<< eval trim END
+ let l2 = {l1}
+ END
+ call assert_equal(["let l2 = []"], code)
+
let code = 'xxx'
let code =<< eval trim END
let n = {5 +
diff --git a/test/old/testdir/test_put.vim b/test/old/testdir/test_put.vim
index e01984228d..73b58dbe33 100644
--- a/test/old/testdir/test_put.vim
+++ b/test/old/testdir/test_put.vim
@@ -332,4 +332,12 @@ func Test_put_dict()
bw!
endfunc
+func Test_put_list()
+ new
+ let l = ['a', 'b', 'c']
+ put! =l
+ call assert_equal(['a', 'b', 'c', ''], getline(1, '$'))
+ bw!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab