patch 7.4.2103
Problem:    Can't have "augroup END" right after ":au!".
Solution:   Check for the bar character before the command argument.
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 580c42f..b9d5cfe 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -19,6 +19,7 @@
     call timer_start(100, 'ExitInsertMode')
     call feedkeys('a', 'x!')
     call assert_equal(1, g:triggered)
+    au! CursorHoldI
   endfunc
 
   func Test_cursorhold_insert_ctrl_x()
@@ -29,6 +30,7 @@
     " CursorHoldI does not trigger after CTRL-X
     call feedkeys("a\<C-X>", 'x!')
     call assert_equal(0, g:triggered)
+    au! CursorHoldI
   endfunc
 endif
 
@@ -58,6 +60,7 @@
   bwipeout
   call assert_equal(["bufunload", "bufdelete", "bufwipeout"], s:li)
 
+  au! test_bufunload_group
   augroup! test_bufunload_group
 endfunc
 
@@ -120,3 +123,31 @@
   augroup END
   unlet g:record
 endfunc
+
+func s:AddAnAutocmd()
+  augroup vimBarTest
+    au BufReadCmd * echo 'hello'
+  augroup END
+  call assert_equal(3, len(split(execute('au vimBarTest'), "\n")))
+endfunc
+
+func Test_early_bar()
+  " test that a bar is recognized before the {event}
+  call s:AddAnAutocmd()
+  augroup vimBarTest | au! | augroup END
+  call assert_equal(1, len(split(execute('au vimBarTest'), "\n")))
+
+  call s:AddAnAutocmd()
+  augroup vimBarTest| au!| augroup END
+  call assert_equal(1, len(split(execute('au vimBarTest'), "\n")))
+
+  " test that a bar is recognized after the {event}
+  call s:AddAnAutocmd()
+  augroup vimBarTest| au!BufReadCmd| augroup END
+  call assert_equal(1, len(split(execute('au vimBarTest'), "\n")))
+
+  " test that a bar is recognized after the {group}
+  call s:AddAnAutocmd()
+  au! vimBarTest|echo 'hello'
+  call assert_equal(1, len(split(execute('au vimBarTest'), "\n")))
+endfunc