diff src/testdir/test_vim9_builtin.vim @ 24482:3d5a66e478f8 v8.2.2781

patch 8.2.2781: add() silently skips when adding to null list or blob Commit: https://github.com/vim/vim/commit/b7c21afef14bba0208f2c40d47c050a004eb2f34 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 18 14:12:31 2021 +0200 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.
author Bram Moolenaar <Bram@vim.org>
date Sun, 18 Apr 2021 14:15:04 +0200
parents f539864ba851
children bc1a533148d7
line wrap: on
line diff
--- 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()