patch 8.2.4698: Vim9: script variable has no flag that it was set
Problem: Vim9: script variable has no flag that it was set.
Solution: Add a flag that it was set, to avoid giving it a value when used.
(closes #10088)
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim
index 57d205c..7e382c2 100644
--- a/src/testdir/test_vim9_assign.vim
+++ b/src/testdir/test_vim9_assign.vim
@@ -740,6 +740,7 @@
enddef
def Test_extend_list()
+ # using uninitilaized list assigns empty list
var lines =<< trim END
var l1: list<number>
var l2 = l1
@@ -757,7 +758,7 @@
END
v9.CheckDefAndScriptSuccess(lines)
- # appending to NULL list from a function
+ # appending to uninitialzed list from a function works
lines =<< trim END
vim9script
var list: list<string>
@@ -779,13 +780,30 @@
END
v9.CheckScriptSuccess(lines)
+ # initialized to null, with type, does not default to empty list
lines =<< trim END
vim9script
var l: list<string> = test_null_list()
extend(l, ['x'])
- assert_equal(['x'], l)
END
- v9.CheckScriptSuccess(lines)
+ v9.CheckScriptFailure(lines, 'E1134:', 3)
+
+ # initialized to null, without type, does not default to empty list
+ lines =<< trim END
+ vim9script
+ var l = null_list
+ extend(l, ['x'])
+ END
+ v9.CheckScriptFailure(lines, 'E1134:', 3)
+
+ # assigned null, does not default to empty list
+ lines =<< trim END
+ vim9script
+ var l: list<string>
+ l = null_list
+ extend(l, ['x'])
+ END
+ v9.CheckScriptFailure(lines, 'E1134:', 4)
lines =<< trim END
vim9script
@@ -838,9 +856,8 @@
vim9script
var d: dict<string> = test_null_dict()
extend(d, {a: 'x'})
- assert_equal({a: 'x'}, d)
END
- v9.CheckScriptSuccess(lines)
+ v9.CheckScriptFailure(lines, 'E1133:', 3)
lines =<< trim END
vim9script