diff src/typval.c @ 24936:345619f35112 v8.2.3005

patch 8.2.3005: Vim9: using a void value does not give a proper error message Commit: https://github.com/vim/vim/commit/f57b43c230c23117650c956c1f62546a34500fb6 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jun 15 22:13:27 2021 +0200 patch 8.2.3005: Vim9: using a void value does not give a proper error message Problem: Vim9: using a void value does not give a proper error message. Solution: Give a clear error message. (clodes https://github.com/vim/vim/issues/8387)
author Bram Moolenaar <Bram@vim.org>
date Tue, 15 Jun 2021 22:15:03 +0200
parents b1093c1ac109
children 0c415a0f54f9
line wrap: on
line diff
--- a/src/typval.c
+++ b/src/typval.c
@@ -238,9 +238,11 @@ tv_get_bool_or_number_chk(typval_T *varp
 	case VAR_BLOB:
 	    emsg(_("E974: Using a Blob as a Number"));
 	    break;
+	case VAR_VOID:
+	    emsg(_(e_cannot_use_void_value));
+	    break;
 	case VAR_UNKNOWN:
 	case VAR_ANY:
-	case VAR_VOID:
 	case VAR_INSTR:
 	    internal_error_no_abort("tv_get_number(UNKNOWN)");
 	    break;
@@ -294,7 +296,7 @@ tv_get_bool_chk(typval_T *varp, int *den
     return tv_get_bool_or_number_chk(varp, denote, TRUE);
 }
 
-#ifdef FEAT_FLOAT
+#if defined(FEAT_FLOAT) || defined(PROTO)
     float_T
 tv_get_float(typval_T *varp)
 {
@@ -336,9 +338,11 @@ tv_get_float(typval_T *varp)
 	case VAR_BLOB:
 	    emsg(_("E975: Using a Blob as a Float"));
 	    break;
+	case VAR_VOID:
+	    emsg(_(e_cannot_use_void_value));
+	    break;
 	case VAR_UNKNOWN:
 	case VAR_ANY:
-	case VAR_VOID:
 	case VAR_INSTR:
 	    internal_error_no_abort("tv_get_float(UNKNOWN)");
 	    break;
@@ -501,9 +505,11 @@ tv_get_string_buf_chk_strict(typval_T *v
 	    return channel_to_string_buf(varp, buf);
 #endif
 	    break;
+	case VAR_VOID:
+	    emsg(_(e_cannot_use_void_value));
+	    break;
 	case VAR_UNKNOWN:
 	case VAR_ANY:
-	case VAR_VOID:
 	case VAR_INSTR:
 	    semsg(_(e_using_invalid_value_as_string_str),
 						  vartype_name(varp->v_type));
@@ -585,6 +591,7 @@ copy_tv(typval_T *from, typval_T *to)
 	case VAR_NUMBER:
 	case VAR_BOOL:
 	case VAR_SPECIAL:
+	case VAR_VOID:
 	    to->vval.v_number = from->vval.v_number;
 	    break;
 	case VAR_FLOAT:
@@ -659,7 +666,6 @@ copy_tv(typval_T *from, typval_T *to)
 	    break;
 	case VAR_UNKNOWN:
 	case VAR_ANY:
-	case VAR_VOID:
 	    internal_error_no_abort("copy_tv(UNKNOWN)");
 	    break;
     }