patch 8.1.1660: assert_fails() does not fail inside try/catch

Problem:    Assert_fails() does not fail inside try/catch.
Solution:   Set trylevel to zero. (Ozaki Kiichi, closes #4639)
diff --git a/src/eval.c b/src/eval.c
index 26fad0c..d89093c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9910,10 +9910,14 @@
     char_u	*cmd = tv_get_string_chk(&argvars[0]);
     garray_T	ga;
     int		ret = 0;
+    int		save_trylevel = trylevel;
 
+    // trylevel must be zero for a ":throw" command to be considered failed
+    trylevel = 0;
     called_emsg = FALSE;
     suppress_errthrow = TRUE;
     emsg_silent = TRUE;
+
     do_cmdline_cmd(cmd);
     if (!called_emsg)
     {
@@ -9939,10 +9943,11 @@
 	    assert_append_cmd_or_arg(&ga, argvars, cmd);
 	    assert_error(&ga);
 	    ga_clear(&ga);
-	ret = 1;
+	    ret = 1;
 	}
     }
 
+    trylevel = save_trylevel;
     called_emsg = FALSE;
     suppress_errthrow = FALSE;
     emsg_silent = FALSE;
diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim
index 0d59a43..900710b 100644
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -166,6 +166,12 @@
   call remove(v:errors, 0)
 endfunc
 
+func Test_assert_fails_in_try_block()
+  try
+    call assert_equal(0, assert_fails('throw "error"'))
+  endtry
+endfunc
+
 func Test_assert_beeps()
   new
   call assert_equal(0, assert_beeps('normal h'))
diff --git a/src/version.c b/src/version.c
index 5e83159..6af9aba 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1660,
+/**/
     1659,
 /**/
     1658,