patch 8.0.0254: error message of assert functions is sometimes incomplete
Problem: When using an assert function one can either specify a message or
get a message about what failed, not both.
Solution: Concatenate the error with the message.
diff --git a/src/eval.c b/src/eval.c
index 5846936..a5ae4f8 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9240,35 +9240,34 @@
if (opt_msg_tv->v_type != VAR_UNKNOWN)
{
- ga_concat(gap, tv2string(opt_msg_tv, &tofree, numbuf, 0));
+ ga_concat(gap, echo_string(opt_msg_tv, &tofree, numbuf, 0));
+ vim_free(tofree);
+ ga_concat(gap, (char_u *)": ");
+ }
+
+ if (atype == ASSERT_MATCH || atype == ASSERT_NOTMATCH)
+ ga_concat(gap, (char_u *)"Pattern ");
+ else if (atype == ASSERT_NOTEQUAL)
+ ga_concat(gap, (char_u *)"Expected not equal to ");
+ else
+ ga_concat(gap, (char_u *)"Expected ");
+ if (exp_str == NULL)
+ {
+ ga_concat_esc(gap, tv2string(exp_tv, &tofree, numbuf, 0));
vim_free(tofree);
}
else
+ ga_concat_esc(gap, exp_str);
+ if (atype != ASSERT_NOTEQUAL)
{
- if (atype == ASSERT_MATCH || atype == ASSERT_NOTMATCH)
- ga_concat(gap, (char_u *)"Pattern ");
- else if (atype == ASSERT_NOTEQUAL)
- ga_concat(gap, (char_u *)"Expected not equal to ");
+ if (atype == ASSERT_MATCH)
+ ga_concat(gap, (char_u *)" does not match ");
+ else if (atype == ASSERT_NOTMATCH)
+ ga_concat(gap, (char_u *)" does match ");
else
- ga_concat(gap, (char_u *)"Expected ");
- if (exp_str == NULL)
- {
- ga_concat_esc(gap, tv2string(exp_tv, &tofree, numbuf, 0));
- vim_free(tofree);
- }
- else
- ga_concat_esc(gap, exp_str);
- if (atype != ASSERT_NOTEQUAL)
- {
- if (atype == ASSERT_MATCH)
- ga_concat(gap, (char_u *)" does not match ");
- else if (atype == ASSERT_NOTMATCH)
- ga_concat(gap, (char_u *)" does match ");
- else
- ga_concat(gap, (char_u *)" but got ");
- ga_concat_esc(gap, tv2string(got_tv, &tofree, numbuf, 0));
- vim_free(tofree);
- }
+ ga_concat(gap, (char_u *)" but got ");
+ ga_concat_esc(gap, tv2string(got_tv, &tofree, numbuf, 0));
+ vim_free(tofree);
}
}