patch 8.2.2781: add() silently skips when adding to null list or blob
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.
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index 5c13d51..bf15a41 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -87,10 +87,23 @@
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 @@
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()