patch 8.2.1867: Vim9: argument to add() not checked for blob

Problem:    Vim9: argument to add() not checked for blob.
Solution:   Add the BLOBAPPEND instruction.
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index fe1ce66..97797bc 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -301,6 +301,34 @@
         res)
 enddef
 
+def s:BlobAdd()
+  var b: blob = 0z
+  add(b, 123)
+  add(b, g:aNumber)
+enddef
+
+def Test_disassemble_blob_add()
+  var res = execute('disass s:BlobAdd')
+  assert_match('<SNR>\d*_BlobAdd\_s*' ..
+        'var b: blob = 0z\_s*' ..
+        '\d PUSHBLOB 0z\_s*' ..
+        '\d STORE $0\_s*' ..
+        'add(b, 123)\_s*' ..
+        '\d LOAD $0\_s*' ..
+        '\d PUSHNR 123\_s*' ..
+        '\d BLOBAPPEND\_s*' ..
+        '\d DROP\_s*' ..
+        'add(b, g:aNumber)\_s*' ..
+        '\d LOAD $0\_s*' ..
+        '\d\+ LOADG g:aNumber\_s*' ..
+        '\d\+ CHECKTYPE number stack\[-1\]\_s*' ..
+        '\d\+ BLOBAPPEND\_s*' ..
+        '\d\+ DROP\_s*' ..
+        '\d\+ PUSHNR 0\_s*' ..
+        '\d\+ RETURN',
+        res)
+enddef
+
 def s:ScriptFuncUnlet()
   g:somevar = "value"
   unlet g:somevar
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 4af136c..e8072d3 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -1791,9 +1791,25 @@
 enddef
 
 def Test_blob_add()
-  var b: blob = 0z12
-  add(b, 0x34)
-  assert_equal(0z1234, b)
+  var b1: blob = 0z12
+  add(b1, 0x34)
+  assert_equal(0z1234, b1)
+
+  var b2: blob # defaults to empty blob
+  add(b2, 0x67)
+  assert_equal(0z67, b2)
+
+  var lines =<< trim END
+      var b: blob
+      add(b, "x")
+  END
+  CheckDefFailure(lines, 'E1012:', 2)
+
+  lines =<< trim END
+      var b: blob = test_null_blob()
+      add(b, 123)
+  END
+  CheckDefExecFailure(lines, 'E1131:', 2)
 enddef
 
 def SID(): number