patch 8.2.1632: not checking the context of test_fails()

Problem:    Not checking the context of test_fails().
Solution:   Add the line number and context arguments.  Give error if
            assert_fails() argument types are wrong.
diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim
index 1a18799..47dcc1f 100644
--- a/src/testdir/test_assert.vim
+++ b/src/testdir/test_assert.vim
@@ -269,6 +269,20 @@
     let exp = v:exception
   endtry
   call assert_match("E856: assert_fails() second argument", exp)
+
+  try
+    call assert_equal(1, assert_fails('xxx', 'E492', '', 'burp'))
+  catch
+    let exp = v:exception
+  endtry
+  call assert_match("E1115: assert_fails() fourth argument must be a number", exp)
+
+  try
+    call assert_equal(1, assert_fails('xxx', 'E492', '', 54, 123))
+  catch
+    let exp = v:exception
+  endtry
+  call assert_match("E1116: assert_fails() fifth argument must be a string", exp)
 endfunc
 
 func Test_assert_fails_in_try_block()
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index bf81bbe..ae8f329 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -524,7 +524,7 @@
 
 def Test_error_in_nested_function()
   # Error in called function requires unwinding the call stack.
-  assert_fails('FuncWithForwardCall()', 'E1096:', 1, 'FuncWithForwardCall')
+  assert_fails('FuncWithForwardCall()', 'E1096:', '', 1, 'FuncWithForwardCall')
 enddef
 
 def Test_return_type_wrong()
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index a4fb8c7..8d8111a 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1343,7 +1343,7 @@
     defcompile
   END
   writefile(import_star_as_lines_no_dot, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1060:')
+  assert_fails('source Ximport.vim', 'E1060:', '', 2, 'Func')
 
   let import_star_as_lines_dot_space =<< trim END
     vim9script
@@ -1354,7 +1354,7 @@
     defcompile
   END
   writefile(import_star_as_lines_dot_space, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1074:')
+  assert_fails('source Ximport.vim', 'E1074:', '', 1, 'Func')
 
   let import_star_as_lines_missing_name =<< trim END
     vim9script
@@ -1365,7 +1365,7 @@
     defcompile
   END
   writefile(import_star_as_lines_missing_name, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1048:')
+  assert_fails('source Ximport.vim', 'E1048:', '', 1, 'Func')
 
   let import_star_as_lbr_lines =<< trim END
     vim9script
@@ -1387,7 +1387,7 @@
     import * from './Xexport.vim'
   END
   writefile(import_star_lines, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1045:')
+  assert_fails('source Ximport.vim', 'E1045:', '', 2, 'Ximport.vim')
 
   # try to import something that exists but is not exported
   let import_not_exported_lines =<< trim END
@@ -1395,7 +1395,7 @@
     import name from './Xexport.vim'
   END
   writefile(import_not_exported_lines, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1049:')
+  assert_fails('source Ximport.vim', 'E1049:', '', 2, 'Ximport.vim')
 
   # try to import something that is already defined
   let import_already_defined =<< trim END
@@ -1404,7 +1404,7 @@
     import exported from './Xexport.vim'
   END
   writefile(import_already_defined, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1073:')
+  assert_fails('source Ximport.vim', 'E1073:', '', 3, 'Ximport.vim')
 
   # try to import something that is already defined
   import_already_defined =<< trim END
@@ -1413,7 +1413,7 @@
     import * as exported from './Xexport.vim'
   END
   writefile(import_already_defined, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1073:')
+  assert_fails('source Ximport.vim', 'E1073:', '', 3, 'Ximport.vim')
 
   # try to import something that is already defined
   import_already_defined =<< trim END
@@ -1422,7 +1422,7 @@
     import {exported} from './Xexport.vim'
   END
   writefile(import_already_defined, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1073:')
+  assert_fails('source Ximport.vim', 'E1073:', '', 3, 'Ximport.vim')
 
   # import a very long name, requires making a copy
   let import_long_name_lines =<< trim END
@@ -1430,35 +1430,35 @@
     import name012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 from './Xexport.vim'
   END
   writefile(import_long_name_lines, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1048:')
+  assert_fails('source Ximport.vim', 'E1048:', '', 2, 'Ximport.vim')
 
   let import_no_from_lines =<< trim END
     vim9script
     import name './Xexport.vim'
   END
   writefile(import_no_from_lines, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1070:')
+  assert_fails('source Ximport.vim', 'E1070:', '', 2, 'Ximport.vim')
 
   let import_invalid_string_lines =<< trim END
     vim9script
     import name from Xexport.vim
   END
   writefile(import_invalid_string_lines, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1071:')
+  assert_fails('source Ximport.vim', 'E1071:', '', 2, 'Ximport.vim')
 
   let import_wrong_name_lines =<< trim END
     vim9script
     import name from './XnoExport.vim'
   END
   writefile(import_wrong_name_lines, 'Ximport.vim')
-  assert_fails('source Ximport.vim', 'E1053:')
+  assert_fails('source Ximport.vim', 'E1053:', '', 2, 'Ximport.vim')
 
   let import_missing_comma_lines =<< trim END
     vim9script
     import {exported name} from './Xexport.vim'
   END
   writefile(import_missing_comma_lines, 'Ximport3.vim')
-  assert_fails('source Ximport3.vim', 'E1046:')
+  assert_fails('source Ximport3.vim', 'E1046:', '', 2, 'Ximport3.vim')
 
   delete('Ximport.vim')
   delete('Ximport3.vim')
@@ -1646,7 +1646,7 @@
     let valone = 5678
   END
   writefile(lines, 'Xreload.vim')
-  assert_fails('source Xreload.vim', 'E1041:')
+  assert_fails('source Xreload.vim', 'E1041:', '', 3, 'Xreload.vim')
 
   delete('Xreload.vim')
   delete('Ximport.vim')
@@ -1745,7 +1745,7 @@
   let nono_lines =<< trim END
     def g:DoCheck(no_exists: bool)
       assert_equal('yes', FuncYes())
-      assert_fails('FuncNo()', 'E117:')
+      assert_fails('FuncNo()', 'E117:', '', 2, 'DoCheck')
     enddef
   END