patch 8.2.2012: Vim9: confusing error message when using bool wrongly
Problem: Vim9: confusing error message when using bool wrongly.
Solution: Mention "Bool" instead of "Special". (closes #7323)
diff --git a/src/errors.h b/src/errors.h
index 969301f..5ba6d52 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -301,3 +301,5 @@
INIT(=N_("E1136: <Cmd> mapping must end with <CR> before second <Cmd>"));
EXTERN char e_cmd_maping_must_not_include_str_key[]
INIT(= N_("E1137: <Cmd> mapping must not include %s key"));
+EXTERN char e_using_bool_as_number[]
+ INIT(= N_("E1138: Using a Bool as a Number"));
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 63bfdd8..b7897fe 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -1292,6 +1292,13 @@
call CheckDefFailure(["var x = 'a' .. 0z32"], 'E1105:', 1)
call CheckDefFailure(["var x = 'a' .. function('len')"], 'E1105:', 1)
call CheckDefFailure(["var x = 'a' .. function('len', ['a'])"], 'E1105:', 1)
+
+ call CheckScriptFailure(['vim9script', 'var x = 1 + v:none'], 'E611:', 2)
+ call CheckScriptFailure(['vim9script', 'var x = 1 + v:null'], 'E611:', 2)
+ call CheckScriptFailure(['vim9script', 'var x = 1 + v:true'], 'E1138:', 2)
+ call CheckScriptFailure(['vim9script', 'var x = 1 + v:false'], 'E1138:', 2)
+ call CheckScriptFailure(['vim9script', 'var x = 1 + true'], 'E1138:', 2)
+ call CheckScriptFailure(['vim9script', 'var x = 1 + false'], 'E1138:', 2)
endfunc
func Test_expr5_fails_channel()
diff --git a/src/typval.c b/src/typval.c
index 7c55d3a..0e2513a 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -213,7 +213,10 @@
case VAR_SPECIAL:
if (!want_bool && in_vim9script())
{
- emsg(_("E611: Using a Special as a Number"));
+ if (varp->v_type == VAR_BOOL)
+ emsg(_(e_using_bool_as_number));
+ else
+ emsg(_("E611: Using a Special as a Number"));
break;
}
return varp->vval.v_number == VVAL_TRUE ? 1 : 0;
diff --git a/src/version.c b/src/version.c
index 80d2af9..0f0ccda 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2012,
+/**/
2011,
/**/
2010,