patch 8.2.1562: Vim9: error when using "%" where a buffer is expected

Problem:    Vim9: error when using "%" where a buffer is expected.
Solution:   Add tv_get_buf_from_arg(). (closes #6814)
diff --git a/src/typval.c b/src/typval.c
index d1732f2..c7cfd41 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -1562,4 +1562,23 @@
     return buf;
 }
 
+/*
+ * Like tv_get_buf() but give an error message is the type is wrong.
+ */
+    buf_T *
+tv_get_buf_from_arg(typval_T *tv)
+{
+    buf_T *buf;
+
+    ++emsg_off;
+    buf = tv_get_buf(tv, FALSE);
+    --emsg_off;
+    if (buf == NULL
+	    && tv->v_type != VAR_NUMBER
+	    && tv->v_type != VAR_STRING)
+	// issue errmsg for type error
+	(void)tv_get_number(tv);
+    return buf;
+}
+
 #endif // FEAT_EVAL