patch 7.4.1073
Problem:    Alloc_id depends on numbers, may use the same one twice.  It's not
            clear from the number what it's for.
Solution:   Use an enum.  Add a function to lookup the enum value from the
            name.
diff --git a/src/testdir/runtest.vim b/src/testdir/runtest.vim
index 734039a..72b21d5 100644
--- a/src/testdir/runtest.vim
+++ b/src/testdir/runtest.vim
@@ -43,6 +43,22 @@
 " Output all messages in English.
 lang mess C
 
+let s:srcdir = expand('%:p:h:h')
+
+" Support function: get the alloc ID by name.
+function GetAllocId(name)
+  exe 'split ' . s:srcdir . '/alloc.h'
+  /typedef enum/
+  let top = getline('.')
+  let lnum = search('aid_' . a:name . ',')
+  if lnum == 0
+    call add(v:errors, 'Alloc ID ' . a:name . ' not defined')
+  endif
+  close
+  return lnum - top
+endfunc
+
+
 " Source the test script.  First grab the file name, in case the script
 " navigates away.
 let testname = expand('%')
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index fb05b7d..b9f3f7b 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -278,35 +278,35 @@
 endfunction
 
 function Test_nomem()
-  call alloc_fail(1, 0, 0)
+  call alloc_fail(GetAllocId('qf_dirname_start'), 0, 0)
   try
     vimgrep vim runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(2, 0, 0)
+  call alloc_fail(GetAllocId('qf_dirname_now'), 0, 0)
   try
     vimgrep vim runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(3, 0, 0)
+  call alloc_fail(GetAllocId('qf_namebuf'), 0, 0)
   try
     cfile runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(4, 0, 0)
+  call alloc_fail(GetAllocId('qf_errmsg'), 0, 0)
   try
     cfile runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(5, 0, 0)
+  call alloc_fail(GetAllocId('qf_pattern'), 0, 0)
   try
     cfile runtest.vim
   catch