summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_builtin.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-04-18 14:12:31 +0200
committerBram Moolenaar <Bram@vim.org>2021-04-18 14:12:31 +0200
commitb7c21afef14bba0208f2c40d47c050a004eb2f34 (patch)
treed7ac8993ffa95c8e45240dd873eb04e00235f074 /src/testdir/test_vim9_builtin.vim
parentd551d6c268e435e2fbba22775510fbd0a54477f6 (diff)
patch 8.2.2781: add() silently skips when adding to null list or blobv8.2.2781
Problem: Add() silently skips when adding to null list or blob. Solution: Give an error in Vim9 script. Allocate blob when it is NULL like with list and dict.
Diffstat (limited to 'src/testdir/test_vim9_builtin.vim')
-rw-r--r--src/testdir/test_vim9_builtin.vim26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index 5c13d51277..bf15a41595 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -87,10 +87,23 @@ def Test_add_list()
CheckDefFailure(lines, 'E1012:', 2)
lines =<< trim END
+ add(test_null_list(), 123)
+ END
+ CheckDefExecAndScriptFailure(lines, 'E1130:', 1)
+
+ lines =<< trim END
var l: list<number> = test_null_list()
add(l, 123)
END
CheckDefExecFailure(lines, 'E1130:', 2)
+
+ # Getting variable with NULL list allocates a new list at script level
+ lines =<< trim END
+ vim9script
+ var l: list<number> = test_null_list()
+ add(l, 123)
+ END
+ CheckScriptSuccess(lines)
enddef
def Test_add_blob()
@@ -109,10 +122,23 @@ def Test_add_blob()
CheckDefFailure(lines, 'E1012:', 2)
lines =<< trim END
+ add(test_null_blob(), 123)
+ END
+ CheckDefExecAndScriptFailure(lines, 'E1131:', 1)
+
+ lines =<< trim END
var b: blob = test_null_blob()
add(b, 123)
END
CheckDefExecFailure(lines, 'E1131:', 2)
+
+ # Getting variable with NULL blob allocates a new blob at script level
+ lines =<< trim END
+ vim9script
+ var b: blob = test_null_blob()
+ add(b, 123)
+ END
+ CheckScriptSuccess(lines)
enddef
def Test_append()